背景
我的背景是高规模面向对象的中间件和使用C ++的嵌入式设备和桌面的应用程序开发。现在我们需要为我们的创业公司创建一个高规模的网络应用程序。
问题
基于请求响应和基于连续轮询的当前Web开发框架看起来非常原始,效率低下。
我正在寻找完全服务器端面向对象和基于事件的编程。 这是一个例子,
服务器上有一个名为 employeeManager 的持久对象,
此对象的方法,
empList getAllEmployeeList();
empList getEmployeeOfDepartment(string strDept);
/*Some more */
此对象的事件
employeeAdded(empID);
employeeEdited(empID);
employeeRemoved(empID);
/*Some more */
现在,客户端javascript应该能够调用此(服务器端)对象的方法,并且应该能够接收此对象的事件。我们可以在异步模式下调用方法的结果。框架还应提供一种方法,以便视图(或html-js页面)可以注册所需的服务器端事件。
是否存在适用于此方法的任何框架。在socketIO之上有这样的东西吗?任何在客户端javascript和服务器端对象之间提供良好双向RPC的框架?
答案 0 :(得分:2)
NodeJS和sockets.io。这些可以帮助达到预期的效果。
答案 1 :(得分:2)
尝试以下组合:
Node + socket.io + Backbone.Model +有点想象力。
我认为缺少的部分是一个类似于模型的结构,可以在服务器端和客户端使用。该模型需要在服务器和客户端之间同步状态。
这篇文章我觉得非常有趣,也许您可以使用所描述的技术?
文章:
http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
答案 2 :(得分:2)
Meteor是一个基于Node.js的框架,它使用sock.js进行websocket通信,使用MongoDB进行面向水平可伸缩应用程序的数据库。在客户端 - 服务器同步方面,Meteor几乎可以为您完成所有繁重工作 - 您不必为数据库同步编写任何代码。结果是一个最小的代码库,主要是您的应用程序的逻辑而不是req / resp开销。您可以在此处查看示例:http://meteor.com/examples/leaderboard
答案 3 :(得分:1)
如果您熟悉C ++,可能需要查看G-WAN。他们有一个很好的例子使用Comet(你正在寻找的东西),还有Node.JS包装器。
G-WAN还允许以您需要的任何语言编写的客户端小程序。所以,对你来说,C ++可能正是你所寻找的。 p>
这是一个非常可扩展的Web应用程序服务器。从我看到的所有基准测试来看,Node.JS在高并发性方面不能很好地扩展(我可能错了,如果我,请告诉我,并向我提供信息)。话虽如此,我所做的事情与你所说的非常相似。我所要做的就是编写一个非常简单的包装器,从JS翻译成我当时使用的任何语言(对我来说,我用PHP,MivaScript,SMT和C完成)。
但关键(对我来说)是使用Comet,以减少不必要的服务器轮询。
答案 4 :(得分:1)
如果您想要跨语言RPC,您可能会发现Apache Thrift很有用。我相信那里有一个Javascript客户端(但从未使用过它)。正如许多其他人所指出的那样,您可以在Socket.IO之上构建一个RPC框架,但感觉就像画一只猫看起来像一头牛......即有趣,但不是特别高效
我确定你已经或者有一些遗留约束,但是如果你还没有花一点时间考虑RPC是否真的是你想要使用的模型。 RPC泄漏地抽象出网络延迟的存在,因此在你的应用程序的基础上加入了一些不稳定的假设。一般来说(critique of RPC不少)可能值得阅读的内容相当简短且可读AST。