2012-01-13 7 views
5

クライアントサイドのGWTアプリケーションとやり取りするだけでなく、他のプラットフォームのさまざまなクライアント要求にも正しく応答するJavaサーバーアーキテクチャを設計する最適な方法は何ですか?具体的には、GWTアプリケーションだけでなく、対応するiOSアプリケーションやAndroidアプリケーションにも同じサーブレットレイヤーを使用したいと考えています。「プラットフォームに依存しない」GWTサーバを設計する最良の方法は何ですか?

私が考える最初のアプローチは、「RequestBuilder」ではなく通常のRPC方式サービス・インターフェースを使用してGWTクライアント層を実装することであろう。このアプローチを使用して、JSONやXMLのようなコードでエンコードされた変数を処理することで、RESTfulな方法でHTTPリクエストに応答する汎用サーブレットをコーディングできます。これはうまくいくはずですが、特にRPCがそのような洗練されたソリューションを提供したときに、クライアントとサーバーの両方でJSONのオブジェクト/パラメータをエンコードしてデコードする必要がある程度の労力を要します。

私がRPCメソッド呼び出しをシリアライズしてデシリアライズし、iOSで同じことをする何らかの種類のライブラリを実装するためにGoogleが使用する仕様(Objective-C )とAndroid。問題は、私がこのエンコーディング標準に関する良い文書を見つけることができず、iOSやAndroid用に実装しているライブラリも見つけられていないことです(www.gwtphp.comでPHPのようなものを見つけましたが)。

誰でもGWTは/も良く、そのオブジェクトをデシリアライズまたはシリアライズする方法の仕様、RPCインターフェイスを実装するのiOSおよび/またはAndroid用のライブラリに向かって私を操縦できますか?

答えて

4

「サービス」レイヤー、つまりPOJOを返す一連のビジネスクラスを作成します。

その後、あなたは簡単にサービス層を呼び出すGWT-RPCおよびRESTを持つことができます。

これはかなり簡単で簡単です。あなたの問題は、POJOだけを返すビジネス層を作成する方法になります。しかしそれは別の話です。

2

クライアントが対話できるプラットフォームに依存しないサーバーを本当に構築しようとしている場合は、最も単純なデータの受け渡しとハンドルの表面処理である「最小公約数」アプローチを使用することをお勧めします。様々なアクションが発生する。

そのためには、データを符号化するためのJSONまたはXMLのいずれかでそうRESTfulなインターフェースは、あなたの最もサポート賭けになるだろう。

この道を行くことの主な利点は、シリアライズ/デシリアライズJSONやXMLを扱うライブラリのたくさんがすでにあるということです、そしてあなたがないであることを意味し、可能な限り柔軟なあなたのサービスを維持していますテキストを扱ったりウェブの要求(最も基本的なレベル)を行うこと以外に多くを必要とすることで、クライアントの基盤を制限します。

それはは、接続のサーバー側は、あなたがやりたいこと作ることに少しより多くの仕事を入れないが、それはすべてのクライアントが対処できることを、かなり一般的なRESTの柔軟性とのトレードオフだとはるかにそれが簡単に一部の実装を行いながら、RPCベースのサービスをターゲット、は、特定のRPCの実装を扱うことができるものに制限クライアントを行います。

2

GWT-RPCは本当に顧客があなたのクラスに変更を加えるたびに更新する必要があるため、あなたは、クライアントの展開をコントロールしていない悪い選択です。これがRequestFactoryが開発された原因の1つです。それはAndroid上でそのまま動作します。

私はPeter Knegoと同意しました。つまり、単一のサービスレイヤーの上にプロトコル固有のパブリックAPIを構築します。

また、GSON、Jackson、および/またはGWT AutoBeansを使用してオブジェクトをJSONにシリアル化できます。

+0

JSONシリアライズのお勧めをありがとう。 – depthfirstdesigner

関連する問題