GWTのベストなサーバーとの通信方式

いろいろと試行錯誤していたけど、個人的なベストはFormPanelを使うのが一番いいっぽい。それぞれの通信方式はメリットはたくさんあるのだが、デメリットもそれなりに大きくて、これがデメリットが一番無いということでカスタマイズやバグがあった場合の対応とかで融通が利くと思う。

図で表すと以下のようなもの。
http://shin.cside.com/diary/2009/1220-01.png

フォームのサブミット先のターゲットが非表示のIFrameになっていて、そこに結果がレンダリングされる。送信元、つまり画面上はどこも変更されない。

つまり、送信時は通常のフォームのサブミット。受信がおわるとonSubmitCompleteイベント呼ばれ、結果をStringで受け取ることが出来るので、それをJSONとして認識させたりXMLとして処理したり独自フォーマットだったりそこは自由だ。この通信をフレームワーク化させて独自色を出してもいいと思う。

通常の階層の無いフラットなフォーム送信ということでフレームワークも一般的なアクションベースでよい。Strutsでもよいわけだ。サーバーサイドのフレームワークStrutsAjaxフレームワークとしてGWTをという提案をすると通りやすくなる…かもしれない。


利点としてはサーバーサイドの技術に縛られないこと。せっかくサーバーの技術から離れることが出来るGWTなのにそこに依存しているのはよくない。また、シンプルな通信方式だと逆にサーバーサイドはそのままでクライアントをJavaFXFlexなどにするといったこともすぐに出来る。

たとえばクライアントのインストールが管理できる場合はJavaや.NET等のリッチなものでもいいと思う。

一般的なものはブラウザベースのGWT。アニメーション重視や携帯はFlashとかJavaFXとか。


サーバーはJavaでもいいし.NETでもいいしPHPでもいいってのはなんだかんだで便利かと。PHPRubyが使えるレンタルサーバーは多いし。開発時にはGWTのプロジェクトに通信のモックとして静的なJSON(もしくはXML)ファイルをおいておけばそれだけで大概事足りる。


せっかくのサーバーサイドとクライアントサイドの分離技術なので思い切ってプロジェクトも分けたほうが効率よく開発できる感じ。