2012-02-16 5 views
1

GWTのWebアプリでのDTOのために使用するのに最適な方法/パターン:Architechture /ベストプラクティス - 私はそれは私がやっている記述を開始し、大きな問題のために最後に一緒にそれを持参するだけで最高だと思う

I GoogleのGWTを使ってWebアプリケーションを構築し、モバイルクライアントを開発する必要がある場合には、再利用性のために特定のコードをカプセル化してください。これまでのところ私は、次のプロジェクトを持っている:

app.core - データアクセス - これは、すべてのデータオブジェクトBasketItemのような(POJOの)、UserAddressなど

app.daoを持っています。これは上記のプロジェクトを参照しており、itemDAOのようなクラスを持ちます。 void persistItem(BasketItem item、User user)

app.webapp - GWT Webアプリケーション。これには上記の2つのクラスが組み込まれています。私はクライアント/サーバーとサーバーメソッドの間でGWT-RPCを使用して、DAOを呼び出してデータを保存/取得する/何でもデータを取得します。 app.server - DAOを使用するRESTfulサーバーアプリケーションで、モバイル/他のクライアントへのデータ操作

問題:GWTは、GWTのIsSerializableを実装すると、クライアント/サーバー間でデータオブジェクトを渡すのが最も効果的です(実際にはSerializableを使用すると問題が発生します)。しかし、私はapp.coreプロジェクトにGWT関連のjarファイルを追加したくないし、app.daoなどがIsSerializableに依存しないようにしたい。 IsSerializableを使用している最中に、アプリケーション全体でdtoを最適にカプセル化するにはどうすればよいのですか?私はapp.webappのコアオブジェクトを拡張して、IsSerializableを実装する必要がありますか?

どうすればよいですか?

答えて

2

GWTをサーバーコードから完全に取り除くことにしました。実際には、GWT-RPCインターフェイスを実装し、同じことをするRESTインターフェイスを実装することを話しています。私は、RESTインターフェイスを作成し、GWT-RPCとRequestFactoryを避け、POJ-DTOを使用することにしました。 GWTのAutoBeanRequestBuilderは、JsonとJavaの間で動く非常に良い仕事をしています。クライアントとサーバーの間の直接的な接続(POJO DTOを除く)を避けるために、はるかに簡単で洗練されていると思います。私が操作の小さな側面を微調整したい場合や、キャッシングなどを追加して、すぐに行えるようにしたい場合にも、これは素晴らしいことです。

また、私のAPIの外部ドキュメントは、基本的には内部アクセサーメソッドのjavadocです。

+0

私は大学からHTTPリクエストを解析して読み込んでいません。 RequestBuilderの良いチュートリアルを知りましたか? –

+0

申し訳ありません。 javadocsは良いです。チュートリアルが必要なのは 'AutoBean'です。私はいくつかの点があると思います。私は 'RequestFactory'文書を通してそれについて学びました。 –

+0

私はGWT固有のDTOを作成し、app.coreのDTOを拡張してIsSerializableを実装できますか? パブリッククラスMyDTOはapp.core.dto.MyDTOを継承しています。IsSerializable {} –

関連する問題

 関連する問題