0

私はネットワーキングの初心者であり、Java で RESTful Web サービスを構築するために、Jersey や CXF などのいくつかのフレームワークを調べてきました。

インターネット経由で (クライアントとサーバー間で) 大量のバイナリ データを送信する必要がある新しいアプリケーションがあり、非常に高速である必要があります。純粋な「TCP/IP (非) Web サービス」のようなものがあるかどうか、またそのようなものを構築するためのオープン ソース Java ライブラリがあるかどうか疑問に思っています。

すべてのネットワーク サービスが TCP/IP の上に置かれなければならない場合、バイナリ データを引き続き使用するものを探していると思いますが、高速なサービスのためのオーバーヘッドはほとんどありません。

私は常に REST を XML または JSON に関連付けていました。超高速でバイナリ データを処理するように構成できれば、Jersey にはある程度慣れているので、それに夢中になることさえあります。

RMI は良い選択かもしれないと思いましたが、このユース ケースに適していないかどうかはわかりません。

速度が必要で、バイナリ プロトコルが必要ですが、どこから始めればよいかわかりません。何か案は?前もって感謝します!

4

2 に答える 2

0

REST は、HTTP 動詞を本来の目的に使用することを特徴とするアーキテクチャ パターンです。デプロイされた REST サービスの大部分が JSON を使用してオブジェクトをシリアル化したとしても、HTTP トランザクション全体は次のようになります。

PUT /user/foo HTTP/1.1
Host: example.com
X-Auth-Token: foobarbazanythingyouwanthere

{"fist": "Jeff", "last": "Atwood"}

そして、応答は次のとおりです。

HTTP/1.1 200 OK

したがって、実際の「オーバーヘッド」はありません。代わりに、既存のライブラリの機能を利用して、ルーティング、認証、シリアル化などを処理します。HTTP はMIME のようなエンベロープを使用するため、バイナリ コンテンツに問題はありません。これによりオーバーヘッドがいくらか追加されたとしても、非常に効率的でありながら効果的なプロトコルを考え出すことは非常に困難であり、設計する必要があることは言うまでもありません。すべてのライブラリを実装すれば、他の誰もあなたの仕事に興味を持つことはありません。

あなたは「ネットワークの初心者」であると述べており、REST や RMI などの用語をランダムに使用しているように見えるので、私の強い提案は、パフォーマンスについて考えずに、標準のテクノロジだけを使用することです。HTTP を使用できます。ビルド済みのフレームワーク、サーブレット コンテナー、サーバー スタブなど、たくさんあります。

実際のパフォーマンスのボトルネックを測定するときに戻ってきてください。そうすれば、より役立つ数値が得られます。

于 2013-03-29T23:04:40.457 に答える
0

Java ソケットを使用できませんか?

それはあなたが行くことができるレベルの低さです。

http://docs.oracle.com/javase/tutorial/networking/sockets/

はい、RMI は、CFX のような高レベルのトランスポート抽象化よりもはるかに高速です。raw ソケットまたは RMI の 2 つのオプションがあります。RMI の方が操作が簡単です。

于 2013-03-29T22:18:44.230 に答える