Javaの世界で新しいRPC / Webサービスを作成するための最良のアプローチは?
-
10-07-2019 - |
質問
この質問は最終的に少し主観的なものになる可能性があるため、CWとしてマークします。
私のチームは、「ウェブサービス」の新しいセットの開発に関心があります。プロジェクトで使用するため。 「Webサービス」を置きますこの用語は非常に多くの異なるものを意味する可能性があるため、引用符で囲みます本当に必要なのは、クロスプラットフォームクライアントにAPIのセットを公開して、データを消費し、アクションを実行できることです。
現在の「最新技術」が何であるかを理解するための研究を試みています。データを他の(内部)アプリケーションや他の多くのサービスに公開するためのサービスを作成するときです。 Thrift、Protocol Buffers、JAX-WS、RMIなどのことを研究してきましたが、新しいサービスのセットを設計する際にどのようなアプローチを取るべきかを考える限り、私はちょっと迷っています。基本的に「インフラストラクチャ」を作成できるようにしたいと思います。サービスのために、現在のすべてのアプローチについて少し調査しています。
まったく新しいWebサービスを構築する場合、現在のベストプラクティス/最新技術はどこにありますか?
実際の要件は次のとおりです。
- データ形式/エンコーディングはプラットフォームに依存しないものにする必要があります(これによりRMIは除外されます)。
- サービスはHTTPで正常に動作するはずです
- 実際のサーバーサイドサービスをJavaで記述することは問題になりません。
- クライアントプロキシを生成できると便利です。
- 各サービスを軽量化し、異なる機能のサービスを完全に別個の展開として展開できるようにしたい。
現在、SOAPサービスとAxis / JAXRPCサービスの組み合わせを使用していますが、正直なところ、これらは非常に苦痛です。やり取りされるメッセージは膨大で冗長です。
解決
REST サービスを検討しましたか? InfoQ の便利な紹介をご覧ください。
HTTPを介して動作し、GET / PUT / POST / DELETEの標準HTTPコマンドを使用してデータを操作します(ブラウザーを使用して照会でき、クライアントは単純なHTTPクライアントです)。実際のデータコンテンツは必須でも指定でもありません。多くの場合、XMLですが、それは要件ではありません。
ジャージを使用して、JavaでRESTサービスを簡単に構築できます。クライアントはHTTPを話すだけでよいため、言語に依存しなくてもかまいません。 Javaクライアントは、 HTTPClient を使用して作成できます。
他のヒント
おそらく手遅れですが、とにかくやってみます。 SOAPは最初の文字(長い間)を失いました。また、2番目のオブジェクト(オブジェクト)に立ち向かうこともありませんでした。
だからこそ、RESTまたはJSON-RPCのいずれかのJSONベースのサービスに傾倒しています。前者についてはすでにかなりの数のコメントがありました。後者については、 Jabsorb.org をご覧ください。例として、OpenSocial標準では、両方をJSON-RPCに優先して使用します。