2011-07-25 38 views
1

javaを使用して、あるサーバーから別のサーバーにファイルを転送する必要があります。パフォーマンスが最優先です。これらの3つのオプションのうちどれを選択する必要がありますか。Javaファイル転送、EJB、SOAPまたはREST、パフォーマンス比較

+0

ファイルのサイズはどれくらいですか? Javaファイル転送とは何ですか? – home

+0

ファイルを転送するだけでいいですか、それとも追加情報が必要ですか? – powerMicha

+0

ファイルサイズは最大10MBにすることができ、要求にはパラメータが含まれますが、応答にはファイルデータのみが含まれます。 – Ali

答えて

3

私の2セント:

  1. EJB。 WebサービスでEJBをラップするつもりがないという前提で、これはRMI呼び出しで終わります。つまり、クライアントはRMIを理解する必要があります。これは、プロトコルやポートが特定の中間体(ファイアウォールなど)によってブロックされる可能性があるため、公共のインターネットでは問題になる可能性があります。スケーラビリティの問題が発生する可能性があります。ロードバランサとWebサーバーがこれらのプロトコルを理解するため、SOAPやRESTなどのWebプロトコルについては、スケールアウト(クラスタリング)がずっと簡単です。
  2. SOAP;間違いなく、ファイルサイズが最大10MBになる可能性があるので、ファイル自体を転送するにはMTOMと考えるべきです。 SOAPメッセージ内にファイルを埋め込むには、64エンコードをベースにする必要があります。これは、ファイル内容自体(バイナリなど)によって異なります。平均64エンコーディングでは、要因1.3のオーバーヘッドが発生します(10MB> 13.33MB)。
  3. RESTを使用すると、ファイルエンコードに関してSOAPと同じ問題が発生します。

結論としては、私はSOAP + MTOMを最初に見て、いくつかのテストをします。あなたは、FTP、SFTP、FTPSのような "そうではない"プロトコルも考えてみてください。 http://en.wikipedia.org/wiki/Managed_file_transfer

0

EJBについては、実際にはRMI(Remote Method Invocation)を参照していると想定しています。これは、オブジェクトのシリアル化を使用します。アプリケーションのオプションであれば、これが最善の方法です。

SOAPを使用すると、XML作成/解析(オーバーヘッド計算)のオーバーヘッドが発生します。また、XMLをオブジェクトに変換するコード頭痛もあります。

RESTを使用すると、SOAPと同じ問題になります。しかし、これは誰もがほとんどのパブリックAPIに向かっているように見える方向です。

2

SOAPを使用すると、データをbase64でエンコードすることになりますが、これはデータを大幅に膨らませます(33%)!

私はRMIベース64がエンコードするとは思わないので、2進体でのREST転送はほぼ同等に効率的です。

RESTはHTTPを使用します。これは、実装が大きく調整され、大容量ファイルの転送を完全にテストされたプロトコルです。 RMIに使用されるプロトコルであるJRMPとIIOPは、通常、より小さい要求で使用されるため、チューニングが行われていません。したがって、JRMPまたはIIOPではなくHTTPを使用し、RMIではなくREST PUTを使用する方に傾いています。

しかし、RMIとHTTPの違いは小さいと思います。

しかし、とりわけ、何もベンチマークに勝るものはありません。私は3つのオプションすべてで大きなファイルを転送するという簡単なテストを行い、速度を測定することをお勧めします。

関連する問題