Java のみの環境における Web サービスと RMI の長所と短所は何ですか?

StackOverflow https://stackoverflow.com/questions/120791

質問

すべて同じ会社が Java で記述した分散アプリケーションを開発する場合、Web サービスと RMI のどちらを選択しますか?パフォーマンス、疎結合、使いやすさなどの観点から長所と短所は何ですか?WSを選ぶ人はいますか?RMI を使用してサービス指向アーキテクチャを構築できますか?

役に立ちましたか?

解決

私はそれについて次のように考えてみます。

相互に独立したサービスを実行し、それらのサービスは将来的に Java 以外のアプリケーションからアクセスされる可能性がありますか?次に、Web サービスに進みます。

アプリケーションの一部 (単数形に注意してください) を複数のサーバーに分散したいだけですか?次に RMI を選択すると、すべてを密結合して連携させるために Java ユニバースを離れる必要がなくなります。

他のヒント

私ならWSを選びます。

  • WS/RMI がボトルネックになる可能性は低いです。
  • なぜ将来的に他の可能性のあるテクノロジーへの扉を閉ざすのでしょうか?
  • クライアント/サーバー上のクラスのバージョンが同期していない場合、RMI に問題が発生する可能性があります。

そして...おそらく REST サービスを選択するでしょう。

それ (非 Java との相互運用性) が必要ないのであれば、おそらくそうではないのであれば、RMI の方が優れているでしょう。コード、構成、帯域幅のオーバーヘッドが少なくなります。

これが必要になるのではないかと心配な場合は、EJB3 を使用するという選択肢もあります。RMI を使用しており、セットアップと展開が非常に簡単ですが、必要に応じて呼び出しを Web サービスに簡単に変換することもできます。

何をするにしても、そうしてください ない 自分のものを作りましょう。基準に固執します。

私の選択肢は次のとおりです。

標準 Java シリアル化 - 長所:私見では、最もパフォーマンスが高く、実装が簡単です(私は Spring を使用してローカルインターフェイスをリモートインターフェイスとして公開しています)。短所:シリアル化は異なる JVM バージョン間では機能しません

バイナリシリアル化 (たとえば、jetty からのヘシアン) - 長所:Java シリアル化と同じパフォーマンスで、異なる JVM バージョン間で動作します。

WS:異なるプラットフォーム java + .net 間の相互運用性が必要な場合にのみ、それ以外の場合は重みが強すぎます。

RMI は迅速な開発を可能にする優れたトランスポートですが、実稼働環境では使用しないことをお勧めします。シリアル化の互換性の問題により、事態が厄介になる可能性があるため、展開を非常に慎重に調整する必要があります。

確かに Web サービスは非効率ですが、それはハードウェアを介しているだけです。あるいは、完全な SOAP/WSDL ではなく、プレーンで軽量な XML-over-HTTP を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top