web-dev-qa-db-ja.com

Spring + GWTまたはSpring vs GWT

バックグラウンド

私は、GWT、Java、EclipseLinkを使用してWebアプリケーションを開発している最中です。これらの選択はそれぞれ、このプログラムを実装するために行った選択です。 GWTは、Springのようなものと正確に何が比較されるかについてしっかりと把握していない唯一の選択肢です。現在、GWTウィジェットを使用してクライアントを実装し、GWT RequestFactoryを使用してEclipseLinkからのエンティティーのサーバー/クライアント通信を実装しています。

ビュー

したがって、私はGWTを、主にサーバーとクライアントの通信のための単純なフレームワークを備えたウィジェットのライブラリーと見なしています。これは、サーバーとクライアントの通信を制御するためのはるかに高度で複雑なフレームワークを備えたウィジェットのライブラリであるSpringを私が見ている方法とほとんど同じです。AJAXを実装していない可能性があります。 GWTはそうします。

これらを念頭に置いて、私はGWTをSpringを理解し、最終的にはSpringと連携するための足がかりと見なしています。しかし、このトピックについて再びGoogleを使って、私はこのようないくつかのトピックに出くわしました one そしてその one は、Springが何であるかの元の概念に反するようです、そしてそれがGWTにとって何を意味するのか。

質問

  1. GWTとSpringの見解について誤解はありますか?もしそうなら、それについていくつかの簡単なガイドポイントがいただければ幸いです!
  2. Spring FrameworkのGWTウィジェットに対応するものは何でしょうか?
  3. Spring FrameworkのGWT RequestFactoryに対応するものは何ですか?
21
hulkmeister

これは、アプリケーションでGWTをどのように使用するかによって異なります。

GWTは、単一のホストページWebアプリケーションに最適です。
つまり、すべてのフロー同期とビジネスロジックは、GWTを使用してクライアント側で実行されます。
これがGWTが本当に素晴らしいところです(詳細は ここ を参照)。

ただし、この道を進むと、基本的に2つの異なるアプリケーションが作成されます。たとえば、GWTで開発されたフロントエンドと、Springを使用したバックエンドがあります。バックエンド(Springなど)は、GWTフロントエンドに表示するデータを提供する「データストレージ」としてのみ機能します。したがって、おそらくSpring MVC's機能は使用しません。

もちろん、Spring MVCを使用してGWTを使用し、サイトにWeb 2.0ish機能を追加することもできますが、その場合は、jQuery、Closure、またはその他のJavaScriptフレームワークを使用することをお勧めします。

あなたの質問に:

GWTとSpringの見解について誤解はありますか?もしそうなら、それについていくつかの簡単なガイドポイントがいただければ幸いです!

意図したとおりにGWTを使用する場合(単一のホストページWebアプリケーション)、SpringのMVC部分は使用しません。 authorizationauthentication[〜#〜] orm [〜#〜]を引き続き使用できますおよびSpringフレームワークの他の多くのコンポーネントですが、GWTはすべてのビューを処理します。
Springは多かれ少なかれ、GWTフロントエンドアプリのデータストレージとしてのみ機能します。これは、通信プロトコル(RequestFactoryRESTRPCなど)を介して接続された2つの異なるアプリが存在するようなものです。

Spring FrameworkのGWTウィジェットに対応するものは何でしょうか?

Spring Frameworkには、GWTウィジェットに相当するものはありません(おそらくJSFの一部が拡張されています)。 Springはすべてサーバー・サイドに関するものなので、そこにあるすべてのビューはサーバー・サイドで作成されます。一方、GWTはすべてクライアント側です。

Spring FrameworkのGWT RequestFactoryに対応するものは何ですか

RequestFactoryは、フロントエンドアプリ([〜#〜] gwt [〜#〜])とバックエンドアプリ()。 Spring MVCを使用する場合、ビューはすでにデータがあるサーバー側で生成されるため、通信プロトコルは必要ありません。

26
Ümit

GWTはウィジェットライブラリではなく、サーバー側ではなくクライアントで実行される完全なWebアプリケーションを生成するためのフレームワーク全体です。基本的な違いは、Spring(MVCパターン)はサーバーフォーカスであるため、ddbbに接続し、ビジネスロジックを実行して、クライアントに送信するビューを生成します。これは、GWT(MVPパターン)がブラウザーでプレゼンターを実行するためです。表示し、サーバーに接続して結果またはオブジェクト(リモートメソッド)を取得します。

GWTアプリによっては、サーバー側のロジックや、ddbb、springなどの他の要素が必要になる可能性があると言いました.

GWTまたはその他のフレームワークをいつ選択するかについての決定は、ブラウザーで実行されるリッチ(デスクトップのような)アプリケーションが必要かどうかによって異なります。

論理的には、GWTとSpringを任意のレベルの複雑さで混在させることができますが、論理的な方法は、Springにデータモデルとそのビジネスロジックの責任を与え、GWTが残りの作業を行うことです。

この組み合わせを学習する最良の方法は、 Spring-roo で生成された小さなプロジェクトを探索することです。 maven、spring、gwt、mvp、rfのすべてのセットでプロジェクト全体を作成できます。 roo 1.2.2をインストールし、rooコンソールで次の一連のコマンドを実行するだけです。

project --topLevelPackage com.project.contacts
persistence setup --provider ECLIPSELINK --database HYPERSONIC_PERSISTENT
database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db
entity jpa --class com.project.contacts.domain.Contact --testAutomatically
field string name --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string surname --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string phone --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact
web gwt setup
web gwt all --proxyPackage ~.client.proxy --requestPackage ~.client.request
quit

次に実行します

mvn gwt:run

Rooで発生する主な問題は、モデルを変更するときに 'aspectj'を使用してマネージクラスを更新することですが、プロジェクトがセットアップされたら、Eclipseを使用してrooの依存関係とaspectjファイルを削除できます。

Objectifyでバックエンドを確認してください。ずっと簡単です。

0
tborja