“单页网络应用程序”的体系结构指南


12

我将开始一个辅助项目,以构建“单页” Web应用程序。该应用程序需要是实时的,并在发生更改时将更新发送给客户端。

对于此类应用程序的体系结构,是否有最佳实践方法的良好资源?到目前为止,我发现的最佳资源是trello体系结构文章,网址为http ://blog.fogcreek.com/the-trello-tech-stack/

对我来说,这种架构虽然很性感,但可能针对我的特定需求进行了过度设计-尽管我确实有类似的要求。我想知道是否需要打扰服务器端的sub / pub,是否可以在发生某些情况时(例如,当客户端将更新发送到服务器,将更新写入数据库时​​,然后将更新发送给客户端)。

从技术上讲,尽管架构指南在某种程度上应适用于任何基础服务器技术,但我可能希望在Node.JS或Ruby中进行构建。

Answers:


5

我会明确地考虑使用客户端MVC,例如Backbone.js。它非常轻巧,但是会为您的应用程序提供一些非常需要的结构。我强烈建议将Peepcode截屏视频作为学习更多有关Backbone的最快方法。

这样的客户端MVC的一个很好的体系结构优势是您可以更轻松地转向与服务器端交换数据,例如,基于REST的结构化JSON。

Backbone.js开箱即用地支持此功能-您可以将客户端和服务器之间的模型序列化为JSON,这可以使我们摆脱对请求/响应的思考。

在这种模式下,服务器端的诸如Node.js之类的东西很吸引人,您可能会有很多短暂的可能异步请求来推送和提取数据。

一个替代方案。...类似Comet的模型可能是实现Web pub / sub的简单方法,并且有一些服务器端框架对此提供支持。


干杯,我肯定是想在客户端使用MV * FW,并且一直在学习Backbone。
马特·罗伯兹

1

我可能会在前端使用MV * JavaScript框架。我本人正在构建一个单页Web应用程序,在研究了许多解决方案之后,我最终选择了Backbone.js。我发现虽然该解决方案没有提供最多的现成功能,但确实为我提供了一个基础基础,并且比我看过的其他解决方案(对我来说很重要)要灵活得多。

其他流行的解决方案是Ember.js和Knockout.js,它们确实提供了更多的即用型功能,但是您必须遵循它们的约定才能使用thT功能(可能对您不起作用)。


1

毫无疑问,这是IMO。前端使用AngularJS,因为它很棒。NodeJS / express / SocketIO,使动态和性感的后端具有pub / sub优点,并且很少麻烦。另外,您可以在正面和背面使用一种语言!

查看我对同一https://github.com/hackify/hackify-server的实现的示例

需要注意的是,有些人建议使用NodeJS替代socketio的称为sockjs的方法,但是我还没有检查出来,所以我不推荐它


0

听起来您正在寻找的是带有PHPTomcat应用程序服务器的Apache 2.2,该服务器带有一个处理请求的简单servlet。这相当于木匠的锤子和钉子。没什么复杂的,但是可以完成工作。如果需要扩展功能,则可以始终这样做,因为如果需要,Tomcat可以支持jsp和jsf。

对于前端而言,我会很轻松地使用jQuery$ .post$ .load$ .ajax),因为与jQuery UI结合使用时,它可以方便地加倍作为向页面添加功能的一种方式


0

如果要实时更新客户端,则要么必须实施长时间阻塞的“ AJAX”调用,要么最好使用现代Websocket。这些允许您将更新推送到连接的客户端,这将由一些javascript处理。

我了解当前最先进的(或最新的流行方式)是Google的AngularJS。其部分设计使编写SPA更加容易。


0

如果您想要某种接近平均堆栈(node.js,mongo ...)的内容来构建需要响应的单页应用程序,则选择meteor。特别是如果您要构建原型并从头开始。

前端有角度的Rails是个不错的选择,但是“将在发生更改时将更新发送给客户端”会比较困难,因为您需要安装特定的gem,将一些长轮询或sockjs库组合在一起。 。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.