47

Apache Wicket ( http://wicket.apache.org/ ) と Apache Tapestry ( http://wicket.apache.org/ ) はどちらも、Stripes のようなアクション ベースのフレームワークとは対照的に、Apache Foundation によるコンポーネント指向の Web フレームワークです。どちらも Java のコンポーネントからアプリケーションを構築できます。二人とも私によく似ている

これら 2 つのフレームワークの違いは何ですか? 誰かが両方の経験がありますか?具体的には:

  • それらのパフォーマンスはどうですか、状態処理をどの程度カスタマイズできますか、ステートレスで使用できますか?
  • コンポーネント モデルの違いは何ですか?
  • どのアプリケーションに何を選択しますか?
  • Guice、Spring、JSR 299 とどのように統合しますか?

編集:両方のドキュメントを読み、両方を使用しました。これらの質問は、ドキュメントを読んでも十分に答えることはできませんが、これらをしばらく使用した経験から、たとえばハイ パフォーマンス サイトのステートレス モードで Wicket を使用する方法などです。ありがとう。

4

8 に答える 8

41

私が見たいくつかの関連する違い:

  • Tapestry は半静的なページ構造を使用しており、条件とループを使用して動的な動作を実現できます。Wicket は完全に動的です。コンポーネントを動的にロードしたり、実行時に置き換えたりすることができます。この結果、Tapestry は最適化が容易になり、Wicket はより柔軟に使用できるようになります。
  • 両方のフレームワークの実行効率はほぼ同じですが、Wicket はサーバー側のストレージに依存しています (デフォルトでは、セッション内の現在のページと、ファイル システム内のデフォルトの一時ファイルである「第 2 レベル キャッシュ」内の過去のページ)。それが気になる場合は、ピーク時に予想される同時セッションの数を考え、セッションあたり約 100kb で計算します (これはおそらく高い側にあります)。これは、2GB でおよそ 20,000 の同時セッションをサポートできることを意味します。他のことにもそのメモリが必要なので、15k と言います。もちろん、状態を保存することの欠点は、セッション アフィニティでのみうまく機能することです。そのため、Wicket を使用する場合はこれが制限になります。フレームワークは、ステートレス ページを実装する手段を提供しますが、
  • Wicket の目標は静的型付けを最大限にサポートすることですが、Tapestry はコード行を節約することに重点を置いています。したがって、Tapestry を使用するとコード ベースが小さくなる可能性が高く、これはメンテナンスに適しています。Wicket を使用すると、ほとんどが静的に型付けされるため、IDE でのナビゲートやコンパイラでのチェックが容易になり、メンテナンスにも適しています。両方の私見に言いたいことがあります。

これまでに、Wicket は継承によって機能すると考えられているという記事を何度か読んだことがあります。選択肢があることを強調したいと思います。コンポーネントには階層がありますが、Wicket は IBehavior のような構成要素 (その上に構築された Wicket の Ajax サポートなど) を介して構成もサポートします。その上に、コンバーターやバリデーターなどをコンポーネントにグローバルに追加したり、Wicket が提供するいくつかのフェーズ リスナーを使用して分野横断的な関心事として追加したりできます。

于 2009-08-13T18:18:55.103 に答える
36

Tapestry 5 の学習後に改訂。

Wicket の目標は、 Web 開発をデスクトップ GUI に似たものにする試みです。彼らは、メモリ使用量 ( HTTPSession ) を犠牲にして、それを非常にうまく行うことができました。

Tapestry 5 の目標は、(CPU とメモリに対して) 非常に最適化されたコンポーネント指向の Web フレームワークを作成することです。

私にとって本当に大きな落とし穴は、「Wicket はステートレス コンポーネントをサポートしています!」という回答でした。「Wicketはメモリを大量に消費しています」という引数に。Wicket は実際にステートレス コンポーネントをサポートしていますが、それらは「Wicket 開発の焦点」ではありません。たとえば、StatelessForm のバグは非常に長い間修正されていませんでした - StatelessForm を参照してください - 検証が失敗した後のパラメーターに関する問題

  • Wicket を使用する IMHO は、Web アプリケーションのパラメーターを最適化/微調整するまでは少し簡単です。
  • Webアプリケーションをプログラミングしていて、リクエスト処理の観点から考えたい場合、IMHO Wicketを研究するのは難しいです
  • Tapestry 5は、コンポーネント クラスを変更するとすぐに、コンポーネント クラスを自動的に再読み込みします。どちらのフレームワークも、コンポーネント マークアップを再読み込みします。
  • Wicket はマークアップとコードの分離を強制します。Tapestry 5 はこの機能を提供します。Tapestry 5 では、より冗長な構文を使用することもできます。いつものように、この自由にはより注意が必要です。
  • Wicket のコアはデバッグが容易です。ユーザー コンポーネントは継承に基づいていますが、Tapestry 5 ユーザー コンポーネントは注釈に基づいています。反対側からは、Wicket よりもタペストリーの方が将来のバージョンへの移行が容易になる可能性があります。

残念ながら、Tapestry 5 のチュートリアルでは、't:loop source="1..10"...' のような Tapestry コード例が悪い習慣になる可能性があることを強調していません。そのため、チームの人数がそれほど多くない場合は、Tapestry の使用規則や優れたプラクティスを作成するために、ある程度の努力を払う必要があります。

私の推奨事項

  • ページ構造が非常に動的で、ユーザーごとに 10 ~ 200 Kb の HttpSession メモリを使用できる場合 (これらは概数です)、Wicket を使用します。
  • リソースをより効率的に使用する必要がある場合は、Tapestry 5 を使用してください
于 2009-03-18T13:06:21.593 に答える
10

これは、IBMのDeveloperWorksからのかなり徹底的な比較です。

http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.html?ca=drs

更新:リンクは無効ですが、このページはhttp://web.archive.org/web/20131011174338/http://www.ibm.com/developerworks/java/library/os-tapestrywicket/index.htmlにあります。 ?ca = drs

于 2009-08-06T16:43:34.417 に答える
1

Wicket の方が使いやすいフレームワークだと思います。

また、Wicket では、IDE のホットコード置換システムを介してクラスをリロードできます。これは、Wicket が現在実行中のアプリケーションのクラスの変更されたバージョンを実行するために必要なすべてです。デバッグ モード (Eclipse) で実行する必要がある、クラスの構造的な側面 (つまり、クラス名、メソッド シグネチャの変更など) を変更できないなど、通常の制限がホット コード置換に適用されます。

于 2009-07-18T07:00:54.177 に答える
1

私は Tapestry プログラミング モデルが好きではなく、多くの開発者が開発中の変更や非互換性のために、Tapestry を離れることを知っています。参照: http://ptrthomas.wordpress.com/2009/09/14/perfbench-update-tapestry-5-and-grails/

于 2010-01-16T11:00:56.170 に答える
0

4.1 が公式の安定版リリースだったときに私が言ったように:

Tapestry を使用する前に、Tapestry の開発履歴を十分に確認する必要があります。Tapestry は互換性のない多くのアップグレードを行っており、古いバージョンのサポートは継続されていません。4.1 へのパッチは、妥当な期間内に処理されなくなりました。私の見解では、公式の安定版では受け入れられません。

Tapestry 5 を使用するとは、次のことを意味します。

コミッターになる必要があります。すべての新しい開発に遅れずについていく必要があり、古いバージョンをできるだけ早く放棄する必要があります。安定したバージョンを自分で維持してください。

于 2010-06-13T09:48:18.050 に答える
0

Wicket は非常に優れた Web フレームワークです。私が知っているすべての中で最高です。バージョン 1.3 から使用していますが、常に必要なものが得られます。Wicket は Spring との優れた統合を備えています。コードで @SpringBean アノテーションを使用するだけで、任意の Spring Bean をクラスに注入できます。

于 2009-03-23T07:05:16.123 に答える
0

http://incubator.apache.org/click/を試してください。それは驚くべき Java Web フレームワークです。一部の人々はそれを「Wicket made right」と呼んでいます ;-)

于 2010-01-16T10:47:15.170 に答える