私のアプリケーションは、GWT-RPCを使用してサーバーと通信します。とにかくRPCレイヤーを変更せずにJSONを使用してデータを透過的にシリアル化する方法はありますか?GWT RPCをJSONに変換
これは、シリアライザを変更し、UIでオートベクトルコーデックスを使用することで達成できます。
なぜ私はそれが必要ですか?
- 私は、クロスドメインRPCを作りたいが、私は、サーバー側の余分な層を設けることなく、非GWT-アプリからサーバー側を呼び出したい
- 呼び出します。
私のアプリケーションは、GWT-RPCを使用してサーバーと通信します。とにかくRPCレイヤーを変更せずにJSONを使用してデータを透過的にシリアル化する方法はありますか?GWT RPCをJSONに変換
これは、シリアライザを変更し、UIでオートベクトルコーデックスを使用することで達成できます。
なぜ私はそれが必要ですか?
これは難しい作業になるでしょう。私はシリアライザの変更がうまくいかないと思っています.GWT-RPCシリアライザはストリームと同じように入力を処理しています(基本的にサーバーから送信されるデータは実際にJSON形式ですが、GWT-RPCのみで解析できます)。完全に新しいジェネレータを作成する必要があります。これは、解析とオブジェクトのシリアライズ/デシリアライズのためのコードを作成します。この場合、AutoBeanフレームワークが非常に役に立ちます。最後に、GWT-RPCサービスを使用している現在のコードを実際に変更することなく、GWT-RPCシリアル化から他のプロトコルに移行することができます。
最大の問題は、クロスドメインメッセージングです。通常はJSONPを使用しますが、JSONPでは基本的にGETリクエストしか許可されないため、多くのデータを別のサーバーに送信する必要がある場合は、すべてを単一の要求に合わせることができない場合があります。このような問題は、クロスドメインのドキュメントメッセージングで解決できます(たとえば、iframeを開いてリモートサーバーから特別な通信JavaScriptを読み込み、postMessage
経由でこのiframeをサービスのプロキシとして使用します)が、この機能はIE7ではサポートされていません。
UPDATE私はちょうど
が http://code.google.com/p/gwt-rpc-plus/を見て持っていないが、それはもはや維持されます(それはヘリット、Androidのチームによって使用されるコードレビューツールの一部だとして)積極的に維持されている http://code.google.com/p/gerrit/source/browse/README?repo=gwtjsonrpcつまずきました。.. 。GWT-RPCから離れたくない場合は、GWTのシリアライザを置き換えることができます。つまり、deRPC(com.google.gwt.rpc
)と同じです。 標準GWT-RPC(com.google.gwt.user.rpc
)ですが、それ以上のことが必要です(つまり、実行時に反映されないため、クライアント側のシリアライゼーションコードを生成する必要があります)。
素晴らしいプロジェクト、私はそれを試してみましょう。 –
これがGWT-RPCから完全に切り離された理由です。今私はGWTのAutoBeanとRequestクラスを使用しています。私はそれを後悔しませんでした。 –