web-dev-qa-db-ja.com

Java RMIおよびRest APIを使用してAPIを設計する

Java Webアプリケーションのバックエンドに取り組んでいます。XMLファイルを格納するドキュメントリポジトリ(具体的にはFedora Commons)があります。リポジトリのAPIを内部的に抽象化して、 1つの製品と密接に結び付いているわけではありません。また、Java RMIまたはREST APIs。を介してリポジトリに接続する柔軟性を提供します。このようなものを実装する方法についてのアドバイスやリソースを入手したいと思っていました。

GetRecord、updateRecord、deleteRecordなどのメソッドを持つ抽象リポジトリクラスがあると思いました。コンストラクターでは、リポジトリーのURIとAPIメソッドおよびポートを渡します。 REST apiがより実用的なものになった場合に、パフォーマンスを向上させることができる(すべきか?).

私はこれを考えすぎていますか、それとも正しい道を進んでいますか?

3
user1303881

このアドバイスを参考にしてください。ただし、REST RMIの代わりにJava APIの使用を検討することを強くお勧めします。

比較する確かなメトリックがなければ、Java RMIとRESTの間のパフォーマンスは類似していると思われます。

  • Java RMIは、あまり広く採用されていない古いテクノロジです。

  • その他Java開発者は、おそらくRESTおよびWebサービスとRMIの経験があります。

  • サーバーのクライアントはJavaテクノロジーに関連付けられています(たとえば、モバイルクライアントへの拡張を考えてください))

  • セキュリティ上の懸念

これらは、ほんの一握りの問題です。それ以上に、不十分に書かれたレガシーRMIアプリケーションをデバッグしなければならなかったことは、私にとって精神的および感情的に生涯恐怖に陥った恐ろしい試練でした。それは私を少し偏見させるかもしれません。

3
maple_shaft

私はあなたが正しい道にいると思います。

サードパーティのAPIの上に抽象化レイヤーを配置しても問題はありません。実際、それは非常に良い考えです。ある時点で、そのAPIを別のサードパーティのAPIに置き換えることができ、アプリケーション全体ではなく、抽象化レイヤーを変更するだけで済みます。

これは確かに理想的なシナリオです。真実は、おそらく他の理由でそのベンダーに閉じ込められることになるでしょう。ただし、この方法は良い方法なので、とにかくこの方法で設計する必要があります。

2
Alan Delimon

OData およびRESTを使用してデータを公開することを検討してください

OData準拠のクライアントが解釈して使用できる OData Webサイトの有用な情報データの公開方法 についてはたくさんあります。 ODataは、AtomPub、JSON、XMLなどのインターネット標準に基づいており、URIの構造化方法などに関する有用なガイドラインのコレクションを提供します。 ODataクライアントは、Java、iPhone、PHP、Python、C#およびその他の多くのクライアントに存在するため、特定のプログラミング言語にアクセスを制限する必要はありません。

ODataアプローチは RESTfulアーキテクチャ と互換性があり、URIが検出可能で、 HATEOASの原則 が適切に実行されます。 Microsoftがその背後にあることを知ったとき、最初の震えがありますが、それが実際にNetflixなどで使用されているオープンプロトコルであることがわかると、それはなくなります。

コードを表示してください

実行可能なAPIに関しては、いくつかの odata4jからのサンプルコード をご覧ください。下にあるREST呼び出しを公開せず、代わりにメタデータを操作して、データストアによって提供されているものを探索することで導出できることに気づくでしょう。これにより、クライアントは変更に対して回復力があります。新しいタイプのデータの追加、それらと既存のデータタイプとの関係など。

1
Gary Rowe