2012-12-04 14 views
18

背景

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

ビュー

だから私は、サーバーとクライアントの通信のためのシンプルなフレームワークとウィジェットの主なライブラリとしてGWTを表示します。これは、GWTと同じくらい便利なAJAXを実装していない可能性があるため、サーバーとクライアントの通信を制御する、より高度で複雑なフレームワークを備えたウィジェットのライブラリであるSpringと同じです。

これらを念頭に置いて、私はGWTをSpringの理解と最終的な作業の足がかりにしています。しかし、この話題を再びGoogleに話しかけると、私はこのようないくつかの話題、つまりoneと、それは、Springが何であるかについてのオリジナルの考え方に反しているように見えるoneに出くわしました。

質問
  1. GWTと春のビューについての誤解があります

?もしそうなら、それについてのいくつかの短い指針が大いに評価されるでしょう!
  • Spring FrameworkのGWTウィジェットに対するカウンターパートは何ですか?
  • Spring FrameworkのGWT RequestFactoryに対するカウンターパートは何でしょうか?
  • +0

    これはプログラマーstackexchangeの質問ではありませんか? – SSR

    +0

    1.私はあなたがSpring MVCについて具体的に話していると思います。 Springコアライブラリは、Guiceと同等の依存性注入コンテナを提供します。 – Vikdor

    +0

    @ SachinShekharRプログラマーの下にあると感じたのは私の一部でした.stackexchangeですが、プログラマーに表示されている記事よりも少し具体的なのでわかりませんでした。 – hulkmeister

    答えて

    24

    実際にアプリケーションでGWTをどのように使用する予定かによって異なります。

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

    しかし、この道を行くと、基本的に2つの異なるアプリケーションになります。 フロントエンドはGWTで開発し、バックエンドはSpringなどを使用します。 バックエンド(Springなど)は、GWTフロントエンドに表示するデータを提供する「データストレージ」としてのみ機能します。 Spring MVC's機能を使用していない可能性があります。

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

    はGWTと春の見解についての誤解がありますか?もしそうなら、 それについてのいくつかの短い指針は大いに評価されるでしょう!

    GWTを使用すると(単一のホストページのWebアプリケーション)、SpringのMVCの部分は使用しません。 承認認証、ORM、およびその他多くのSpringフレームワークのコンポーネントを使用できますが、GWTはすべてのビューを処理します。
    SpringはGWTフロントエンドアプリケーションのデータストレージとして多かれ少なかれ動作します。 通信プロトコル(RequestFactoryRESTRPCなど)で接続された2つの別個の別々のアプリを持つようなものです。

    Spring FrameworkのGWTウィジェットに対するカウンターパートは何ですか?

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

    RequestFactoryがあなたのフロントエンドアプリケーション(GWT)とバックエンドアプリケーション間の通信プロトコルである フレームワークの春にGWT RequestFactoryにカウンターパートになり何

    ) 。 Spring MVCを使用すると、既にデータがあるサーバー側でビューが生成されるため、通信プロトコルは必要ありません。

    +0

    ありがとうございました!私はあなたの他のポストも読んだので、別の質問につながります。私はこのフォーラムの別のページに飛び替える必要があります。私はあなたに最初にそれを置くでしょう:私はデスクトップのようなアプリケーションが欲しいです。 GWTアプリケーション間を切り替えるために、各GWTページに共通のメニューメカニズムを使用したいと思います。これは可能ですか?これはGWTを意図した通りに使うことについてのあなたの注記から来ます:シングルホストページ。 – hulkmeister

    +0

    異なるGWTアプリケーションではどういう意味ですか? 異なるGWTアプリで構成される1つのデスクトップのようなアプリケーションを作成しますか? 私はむしろ、さまざまなGWTコンポーネント/ウィジェットを含む1つのGWTアプリケーションを作成したいと思います。 しかし、実際に別個のGWTアプリケーションが必要な場合、これを行うにはさまざまな方法があります。 1つの方法は、複数のGWTアプリケーションを作成することです(それぞれにEntryPointがあります)。各アプリケーションには単一のホストページがあります。各GWTアプリケーションの中には、対応する単一のホストページ(対応するGWTアプリケーションをロードする)へのハイパーリンクだけであるmenuItemsを含むメニューを持つことができます。 –

    +0

    私は別のGWTアプリケーションの意味についてのあなたの質問に対する答えは、あなたが 'but'の後に記述した通りです - それが私がこのアプリケーションのために持っている考え方です。私はむしろ、異なるコンポーネント/ウィジェットを含む単一のGWTアプリを持っていることに同意します。私の現在の状況は、現在表示されているすべてのウィジェットを消去し、ユーザーが記入するためのフォーム(または新しいコンポーネント/ウィジェットセット)を読み込むボタンがページにあります。あなたの経験では、これは通常、GWT開発者がGWTアプリケーションのさまざまな部分または「ページ」間を移動する方法ですか? – hulkmeister

    2

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

    など、GWTを選択するときについての決定や他のフレームワークをあなたのGWTアプリケーションに応じて、サーバー側の多かれ少なかれロジックを必要とすることができる、と述べた、とddbbなどの他の要素、春豊富な(デスクトップのような)アプリケーションをブラウザで実行する必要があるかどうかによって異なります。

    論理的に複雑なレベルでGWTと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 
    

    その後ROOと私が見る主な問題は、それはあなたが変更したときに分類、管理、更新する「AspectJの」を使用していることである

    mvn gwt:run 
    

    を実行しますプロジェクトを設定したら、eclipseを使用してroo依存関係とaspectjファイルを削除することができます。

    +0

    例をありがとう!私はそれを試して、私が理解していることを見ていきます。 – hulkmeister

    +0

    この例はとても参考になりました。どこにも書かれていない「gwt all」行を探していました。どうも。 –

    0

    あなたのバックエンドのためにObjectifyをチェックしてください。簡単な方法。

    関連する問題