5

バックグラウンド

私のバックグラウンドは、C++を使用した組み込みデバイスおよびデスクトップ向けの大規模なオブジェクト指向ミドルウェアおよびアプリケーション開発です。次に、スタートアップ用の大規模なWebアプリを作成する必要があります。


質問

要求/応答ベースおよび継続的なポーリングベースの現在の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

Meteorは Node.js ベースのフレームワークで、websocket 通信に sock.js を使用し、水平方向にスケーラブルなアプリ向けのデータベースに MongoDB を使用します。クライアントとサーバーの同期に関しては、Meteor がほとんどすべての面倒な作業を行ってくれます。データベース同期のためのコードを記述する必要はありません。その結果、req/resp のオーバーヘッドではなく、主にアプリケーションのロジックを含む最小限のコードベースが作成されます。ここで例を見ることができます: http://meteor.com/examples/leaderboard

于 2012-10-29T09:14:36.430 に答える
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

NodeJSsockets.io。これらは、望ましい効果を達成するのに役立ちます。

于 2012-10-26T09:25:30.467 に答える
1

クロス言語 RPC が必要な場合は、Apache Thriftが役立つことがあります。Javascript クライアントがあると思います (ただし、使用したことはありません)。他の多くの人が指摘しているように、Socket.IO の上に RPC フレームワークを構築することもできますが、猫を牛のように描くように感じます...つまり、楽しいですが、特に生産的ではありません

すでにお持ちの、または何らかの従来の制約があると思いますが、お持ちでない場合は、RPC が本当に使用したいモデルであるかどうかを少し考えてみてください。RPC は、ネットワーク レイテンシの存在を漏れなく抽象化するため、アプリの基盤にいくつかの不安定な仮定を焼き付けます。かなり短くて読みやすいRPC全般に関する批評 ( ASTによるもの) があり、読む価値があるかもしれません。

于 2012-10-30T10:38:05.410 に答える
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 に答える