1

私は過去2年間、ほぼ3日間これについて研究してきました。私はこの問題についてすべてをグーグルで検索し(これらのフォーラムを含む)、ほとんどすべてがチュートリアルアウトされているように感じます。質問の詳細に入る前に、プロジェクトの範囲と計画の概要を簡単に説明して、プロジェクトに最適なものを確認します。

-大規模なアプリケーション、重要な
-50以上のDBテーブル-大規模な
ユーザーベース-ユーザー
管理/認証/セッション-トランザクション-セキュリティ
-MVP (GWTの推奨事項による) -パフォーマンスとスケーラビリティに焦点
を 当てる(当然:)、後にGWTを使用するすべて) -Javaサーバーサイドに固執することを好む


また、大規模なアプリケーション(Google / GWT)のアーキテクチャに関するすべてのベストプラクティスを読んで見ました。前回の講演で、GWTに関連するアーキテクチャのベストプラクティスについては、2010年にRay Ryanが発表しました。彼は、JavaBeansとプロパティ変更イベントがあまりうまく機能しないと考えているため、モデルにDTOを使用する方がよいと述べています。

私の検索で最前線に立った2つのフレームワークは、SeamとSpringでした。

MVPに固執すると、私のドメインは、ほとんどの場合、シッククライアントを備えたデータサービスになります。ただし、ユーザーがCookieを使用せず、たとえば更新された場合でも状態を維持できるようにするため、サーバー側にはセキュリティ機能とセッション機能を持たせたいと思います。また、HibernateのようなORMを使用して、トランザクションの多くの側面を管理したいと思います。引き続きRequestFactoryを使用したいので、Springを検討しています。

質問を次のように絞り込むことができると思います。

上記を考慮すると、大規模なGWTアプリケーション、特にサーバーサイドとGWTとの統合に推奨されるアプリケーションスタックは何でしょうか。

これはこの規模の私の最初のプロジェクトであり、私がしたい最後のことは、多くの時間とエネルギーを失うことで間違った道を進むことです。事前にご協力いただきありがとうございます。地球の端をグーグルで検索する代わりにコーディングに戻ることができるように、これを理解したいと思います;)。

-セス

また、GWTのアプリケーションに最適なアーキテクチャをすでに調べましたが、これに最も近い可能性がありますが、実際には私の質問に答えることはできず、より具体的なユースケースでもう少しターゲットを絞っていると思います。

4

1 に答える 1

3

私は経験がありませんが、フロントエンドとバックエンドSeamを使用して比較的大規模なプロジェクトに取り組んでおり、これまでのところ非常にうまく機能しています(RequestFactory、JPA2 / Hibernate、PostgreSQL)。ところで、 JBossEraiをチェックアウトすることもできますGWTSpring

使用することの良いところSpringは、新しい機能を追加するのが非常に簡単なことです。たとえば、openid認証のサポートを追加しました。必要なのは、mavenに追加の依存関係を定義し、構成ファイルにいくつかの追加行を定義することだけです。これで、google、facebook、twitterアカウントによる認証がすぐに機能します。
この階層化されたアプローチには多くの利点があります。

しかし、GWTアプリ(MVPなど)を開発するためのベストプラクティスに本当に固執すると、2つの多かれ少なかれ別々のプロジェクトになってしまいます。これは、プロジェクトが多かれ少なかれ1つしかない従来のSpring MVC / Web Flowアプリを開発する場合とは少し異なります(ところで、優れたプロジェクト構造を考え出すのに役立つThomasBroyerのgwtmavenアーキタイプを確認してください)。

これに加えて、クライアント側でMVPを使用する場合、バックエンドは実際にはGWTクライアントにデータを供給するデータサービスとしてのみ機能します。すべてのフロー同期はGWTアプリで処理されます。
したがって、バックエンド機能の多く(つまり、のMVC部分)はおそらく使用しないでしょうSpring MVC
私はRequestFactoryバックエンドとフロントエンド間のデータ通信に使用し、CRUDアプリケーションの場合、これは非常にうまく機能します(Androidbtwからもサポートされています)。ただし、より多くのクライアントをサポートしたい場合は、Restlessアプローチを使用することをお勧めします。繰り返しになりますが、バックエンドで使用することにより、アプリにサポートをSpring追加するのは比較的簡単であり、GWT( RestyGWT )でRESTfulサービスをサポートするサードパーティライブラリがいくつかあります。RestlessRestlet)。

開発プロセスに関するいくつかの考えは次のとおりです。

  • のような依存関係管理システムを使用しmavenます。これにより、チームでの開発が非常に簡単になり、プロジェクトを管理可能なユニット/モジュールに分割できます(たとえば、GWT Mavenアプリは、フロントエンド部分(GWT)、バックエンド(Spring)部分、および共有(DTOの組み合わせ)に分割できます。など)一部。
  • テスト駆動開発(TDDまたはBDD)を実行してみてください。たとえば、Springバックエンドでサービス関数を作成する前に(つまり、getAllProducts())、その単体テストを記述します。これは、単体テストを作成することでサービスレイヤーの機能を定義するため、優れたサービスレイヤーの作成にも役立ちます。
  • 時期尚早の最適化はすべての悪の根源です」:初期の最適化にあまり時間をかけないでください。
  • 特にを使用する場合は、JRebelの購入/使用を検討してくださいSpring。比較的大きなSpringアプリは、起動時間が比較的長くなる可能性があります。JRebelは、アプリケーションをリロード/再起動せずにバックエンドのクラスを変更するのに役立ちます。それは多くの時間を節約します。
  • ドメインレベルでのACLの実装は簡単な作業ではありません。ACLクラスがありSpring Security、単純なユースケースでは正常に機能しますが、複雑なユースケース(たとえば、ACLエントリに基づいてアイテムのリストをフィルタリングする)がある場合、効率的に実行したい場合は、これが非常に複雑になる可能性があります。一方、Spring別のライブラリ(Apache Shiroなど)を使用するのは比較的簡単です。さらに、フロントエンドに正しいコントロールが表示されていることを確認する必要があります(つまり、ユーザーに編集権限がない場合は[編集]ボタンが表示されないなど)。バックエンドでUI(HTMLページ)を作成するので簡単なJSPを使用します。GWTあなたは自分でそれをしなければなりません。
于 2012-08-27T08:39:58.657 に答える