与服务器端对象进行双向通信以进行Web应用程序开发

背景

我的背景是面向对象的高级中间件和面向embedded式设备和桌面应用程序开发的C ++。 现在我们需要为我们的创业创build一个高规模的networking应用程序。


基于请求响应和连续轮询的当前web开发框架看起来非常原始,效率低下。

我正在寻找完全服务器端的面向对象和基于事件的编程。 这是一个例子,

在服务器上有一个名为employeeManager的持久对象,

这个对象的方法

empList getAllEmployeeList(); empList getEmployeeOfDepartment(string strDept); /*Some more */ 

这个对象的事件

 employeeAdded(empID); employeeEdited(empID); employeeRemoved(empID); /*Some more */ 

现在,客户端JavaScript应该能够调用这个(服务器端)对象的方法,并且应该能够接收这个对象的事件。 我们可以在asynchronous模式下获得方法调用的结果。 框架还应提供一种方式,以便view(或html-js页面)可以注册所需的服务器端事件。

有没有什么框架可以用这种方法。 在socketIO上面是这样的吗? 任何提供良好的客户端JavaScript和服务器端对象之间的双向RPC的框架?

尝试以下组合:

Node + socket.io + Backbone.Model +有点想象力。

我认为缺失的部分是可以在服务器端和客户端使用的模型。 模型需要同步服务器和客户端之间的状态。

这里有一篇我觉得非常有趣的文章,也许你可以使用描述的技术?

文章:

http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/

NodeJS和sockets.io 。 这些可以帮助达到预期的效果。

Meteor是一个基于Node.js的框架,它使用sock.js进行websocket通信,MongoDB用于一个面向横向可伸缩应用的数据库。 当涉及到客户端 – 服务器同步时,meteor将为您做所有繁重的工作 – 您不必为数据库同步编写任何代码。 结果是一个最小的代码库,主要是你的应用程序的逻辑,而不是req / resp开销。 你可以看看这里的例子: http : //meteor.com/examples/leaderboard

如果你想跨语言RPC,你可能会发现Apache Thrift有用。 我相信有一个JavaScript客户端(但从来没有使用过)。 你可以在Socket.IO的顶部构build一个RPC框架,就像许多人指出的一样,但是感觉就像画一只猫看起来像一头牛一样…也就是有趣,但不是特别有效

我相信你已经或者有一些传统的约束,但是如果你没有,我会花一秒钟的时间思考RPC是否真的是你想要使用的模型。 RPC泄漏地抽象出networking延迟的存在,并且因此在应用程序的基础中烘焙了一些不稳定的假设。 一般来说, 对RPC有一个相当简短和可读的批评 (不less于AST ),可能值得一读。

如果您熟悉C ++,则可能需要查看G-WAN 。 他们有一个很好的例子,使用Comet(你在找什么),也有Node.JS包装器。

G-WAN也允许以您需要的任何语言编写的客户端小应用程序。 所以,对于你来说,C ++可能就是你正在寻找的东西。

这是一个非常可扩展的Web应用程序服务器。 从我所见过的所有基准testing中,Node.JS的高并发性并不好(我可能是错的,如果是的话,请告诉我,并提供相关信息)。 话虽如此,我已经做了与你所说的事情非常相似的事情。 我所要做的只是编写一个非常简单的包装器,从JS翻译成当时使用的任何语言(对于我来说,我已经用PHP,MivaScript,SMT和C完成了它)。

但关键(对我来说)是使用Comet来减less对服务器的不必要的轮询。