Architecture 如何开发100%的服务器端应用程序?

Architecture 如何开发100%的服务器端应用程序?,architecture,server-side,ria,server-side-scripting,Architecture,Server Side,Ria,Server Side Scripting,TL;DR 我可以使用什么框架来保持服务器上100%的应用程序逻辑,同时提供应用程序的交互性 解释 早在90年代,人们就可以用普通PHP构建100%的服务器端应用程序。但随后对页面内交互的需求增加,越来越多的应用程序逻辑被转移到客户端javascript中。今天,有了websocket和完全动态的DOM,在满足所有页内交互要求的同时构建服务器端应用程序再次成为可能。客户端所需要的只是一个通用javascript库,它通过websocket将DOM与服务器同步 虽然我相信这种web开发方法,但我不

TL;DR

我可以使用什么框架来保持服务器上100%的应用程序逻辑,同时提供应用程序的交互性

解释

早在90年代,人们就可以用普通PHP构建100%的服务器端应用程序。但随后对页面内交互的需求增加,越来越多的应用程序逻辑被转移到客户端javascript中。今天,有了websocket和完全动态的DOM,在满足所有页内交互要求的同时构建服务器端应用程序再次成为可能。客户端所需要的只是一个通用javascript库,它通过websocket将DOM与服务器同步

虽然我相信这种web开发方法,但我不想在这里讨论这种技术的优缺点

我的问题是,到2014年底,支持这种开发方式的最先进的框架。只要架构足够清晰,实验框架也可以。我不需要现有框架的详细清单。我希望看到一些实现这种软件架构的框架,或者,如果没有这样的框架,我希望了解那些最接近理想的框架

到目前为止,我自己的研究表明这是正确的,但它仍然鼓励在客户端上使用太多特定于应用程序的javascript,并将服务器端平台与客户端平台(即javascript)联系起来。我已经读过,这在很大程度上将客户机简化为模板处理器,但模板和相关的模板/绑定库是我想移回服务器端的内容之一。将所有UI逻辑保留在服务器上,但这对于web开发来说代价高昂,尤其是当用户将应用程序闲置在后台时

更新:到目前为止,所有答案都集中在Meteor上。我已经删除了流星标签,因为它可能会误导。我提到Meteor,因为Meteor演示让我看起来可以选择是在服务器端还是客户端运行代码。现在很清楚,Meteor不会通过网络传输任何用户界面,只传输数据。因此,它需要客户端上一半的应用程序,至少以模板的形式

更新2:我发现了一个协议,可以用来从服务器端应用程序远程操作客户端DOM。没有明确的方法将用户操作(单击、编辑)发送回服务器,但也许这些操作可以在REX中定义为扩展事件,这是规范允许的。不过,它仍然只是一个协议。没有真正的软件我可以使用

更新3:我必须澄清一件事。简单地获取服务器端模板并将其转换为客户端模板,然后在客户端上执行,并不算是100%的服务器端应用程序逻辑。虽然这样的框架允许我使用服务器端API,但它们不可避免地会给客户端带来负担,并公开大部分应用程序代码。我正在寻找只将呈现内容(和通用事件挂钩)发送到客户端的东西


此外,关于小部件/控件,该框架可以允许客户端代码处理边缘情况(新的低级小部件),但对于典型的应用程序逻辑(模板和高级小部件),它不能要求客户端实现。

坦率地说,Meteor不是您想要的。Meteor框架提供的主要优势不是您希望使用的部件


老实说,我不确定什么样的申请适合你。但它肯定不是流星。

< P>你可能想考虑使用一组工具来完成这个目标。Meteor并不是最好的方法,因为它依赖于客户端JavaScript,只在网络上传递数据


我建议使用Node.js作为服务器,因为它是Meteor的底层服务器。然后,您可以使用服务器端模板引擎(如jade或类似工具)来呈现html。这将使你的应用程序动态,但对客户端的依赖性降低。您将失去所有的反应能力,但这是在服务器上进行渲染的折衷。

Meteor是非常模块化的,因此您可以使用它,但它的意义非常非传统

您必须删除其中的客户端/基于web的内容。这包括在meteor平台的
包中

最好有一个“赤裸裸”的应用程序

现在,您可以添加一系列有助于开发的软件包(您可以删除其中任何一个):

现在您有了一个100%的服务器应用程序

该应用程序与典型的Meteor应用程序略有不同,因为它没有为任何客户端代码提供服务的“web服务器”,几乎是一个纯服务器应用程序

首先,您必须删除任何样板代码(myapp.html、myapp.css、myapp.js),并创建一个包含应用程序的方法为
main=function(){…}
的文件。请记住,在这个方法中,您需要一些东西来保持应用程序正常运行,例如套接字侦听器(可能是express js?),一旦它运行,应用程序就会停止


同样,我不确定你到底想要一个100%服务器端应用程序做什么,如果你打算使用Meteor over Node,它的好处是允许你拥有同步代码、mongo内置和DDP,这可能是一个不错的选择。如果您不想要客户端的东西,或者其他任何您不想要的东西,可以使用上述方法将其删除。

使用服务器端事件模型,例如:

  • XRX()
  • 链接数据()
Blueprint的许多原理和语法来自XForms。我们选择了一种完整的声明性语言,因为这是我们能够在广泛的设备上有效运行的唯一方法,其中一些设备根本没有脚本。通过使用声明性语法,我们可以封装和隐藏脚本细节。在某些情况下,代码可以在电话上运行,在其他ca中
meteor create myapp
meteor remove meteor-platform
meteor add logging ddp mongo check underscore random ejson
java -jar orbeon-cli.jar pipeline.xpl
java -jar orbeon-cli.jar -r . oxf:/pipeline.xpl
java -jar orbeon-cli.jar -r C:/my-example oxf:/pipeline.xpl