GWTクライアントコードにMVCを使用してみましたか?
-
03-07-2019 - |
質問
GWTクライアントコードにMVCまたはその他のUIパターンを使用してみましたか。さまざまなアプローチで直面した落とし穴/利点は何ですか?
解決
GWTをSwing、Cocoaなど、他のUIフレームワークと同じように扱う必要があると思います。MVC(または他のパラダイム)に関してこれらのフレームワークで意味のあることはすべて、GWTでも意味があります。人々は時々MVCのことを考えすぎていると思うし、Cocoaでの動作が他のフレームワークよりも好きだと思う。ビューを作成し、ビューのすべての動作を制御するViewControllerがあり、すべてのデータを含むモデルオブジェクトがあります。すべてのビジネスロジックがどこにあるのかについて独断的である必要はないと思います。それは理にかなっている場所にある必要があります。
落とし穴に関して、主なものはGWTが純粋にフロントエンドテクノロジーであるため、技術的にはバックエンドがどこかにサーバー上にあることです。これは、データをクラウドのどこかに保存するクライアントサーバースイングアプリケーションを書くこととは違うとは思いません。違いは、GWTがjavascriptにコンパイルされ、javascript Webアプリケーションのすべての制限があるため、フロントエンドでは単純にできないことがいくつかあるということです。たとえば、PDFを作成してユーザーに表示したい場合、GWTでそれを行うことはできません。バックエンドを呼び出してそれを行う必要があるとします。一方、Swingアプリでは、おそらくitextを使用してクライアント側で実行できます。
他のヒント
GWTのMVCパターンについては、この質問。この詳細へのリンクもありますブログ投稿。
追加する唯一のことは、クライアント側のコード全体を「V」とみなすことができるということです。 「MVC」で、見方が変わる場合があります。クライアント側のコードを独自のネストされたMVCコンポーネントと考えると、それはJavaであり、オブジェクト指向なので、Swingアプリのように設計できます。 GWT RPCを処理するために、ビューからできるだけ多くのControllerコードを引き出すことはあなたの利点になると思います。モデルは、クライアントではなくサーバーで必要かどうかを判断する必要があるため、より問題が多い場合があります。または、モデルプロキシなどを作成します。
http://code.google.com/p/gwt-mvc/お手伝いします。
利点は次のとおりです。
- 読みやすいコントローラー
- 履歴トークン管理
- コントローラーはJMockでテスト可能です(GwtTestCaseではありません)
- 階層型MVC
- ビュー、コントローラー、モデルのコーディングを開始するための単純な継承。
GWTrutsを試しましたか( http://sourceforge.net/projects/gwtruts/ ) ? また、GWTでビューとコントローラーを分離するオープンソースのGWT MVCフレームワークです
ある種のMVC / MVPタイプパターンを使用することは、GWTアプリが最小のプロジェクトを超えた場合に非常に重要です。
すでに述べたものとは別に、ここで見たGXTのMVC実装もあります: http://www.bristol-gtug.org/?p=45
昨年のGoogle IOでのこの講演は、GWTでMVC / MVPについて考えることから多くの人々を始めました: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html 。
最近、GWTドキュメントにMVPアーキテクチャに関するチュートリアルがあり、これが良いスタートであることに気付きました: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html
JetBrainsで開発され、いくつかの(現在未リリースの)製品で使用されている最小限のMVCフレームワークであるJetPad-Mappersをご覧ください。
免責事項、私はこのフレームワークの開発に関わっています。