5

背景

我的背景是使用 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 吗?

4

5 回答 5

2

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

于 2012-10-26T09:25:30.467 回答
2

尝试以下组合:

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

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

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

文章:

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

于 2012-10-29T08:56:52.193 回答
2

Meteor是一个基于 Node.js 的框架,它使用 sock.js 进行 websocket 通信,使用 MongoDB 作为面向水平可扩展应用程序的数据库。在客户端-服务器同步方面,Meteor 几乎可以为您完成所有繁重的工作——您无需为数据库同步编写任何代码。结果是一个最小的代码库,主要是应用程序的逻辑,而不是 req/resp 开销。您可以在这里查看示例:http: //meteor.com/examples/leaderboard

于 2012-10-29T09:14:36.430 回答
1

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

G-WAN 还允许使用您需要的任何语言编写客户端小程序。因此,对您而言,C++ 可能正是您正在寻找的。

这是一个非常可扩展的 Web 应用程序服务器。从我看到的所有基准测试来看,Node.JS 不能很好地适应高并发(我可能错了,如果我错了,请告诉我,并提供信息)。话虽如此,我所做的事情与您所说的非常相似。我所要做的就是编写一个非常简单的包装器,将 JS 翻译成我当时使用的任何语言(对我来说,我用 PHP、MivaScript、SMT 和 C 完成了它)。

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

于 2012-10-29T13:30:44.380 回答
1

如果您想要跨语言 RPC,您可能会发现Apache Thrift很有用。我相信有一个 Javascript 客户端(但从未使用过它)。正如许多其他人指出的那样,您可以在 Socket.IO 之上构建一个 RPC 框架,但这感觉就像把一只猫画成一头牛……即有趣,但不是特别高效

我确定您已经或有一些遗留约束,但如果您还没有,我会花点时间考虑一下 RPC 是否真的是您想要使用的模型。RPC 泄漏地抽象了网络延迟的存在,因此将一些不稳定的假设纳入了应用程序的基础。一般来说,有一个相当简短且可读的 RPC 评论(至少由AST 撰写)可能值得一读。

于 2012-10-30T10:38:05.410 回答