質問

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

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

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

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

役に立ちましたか?

解決

いくつかの関連する違いを見ると:

  • Tapestryは準静的ページを使用します 構造、作業できる場所 達成するための条件とループ 動的な動作。改札は 完全に動的;ロードできます コンポーネントを動的に置き換えます 実行時など。 これは、タペストリーがより簡単であることです 最適化して、そのWicketはもっと 柔軟に使用できます。
  • 両方のフレームワーク ほぼ同じくらい効率的です 実行しますが、Wicketは サーバー側のストレージ(デフォルトでは セッションの現在のページ、および過去 「セカンドレベルキャッシュ」内のページ デフォルトはファイル内の一時ファイルです システム)。それが気になるなら、考えて 同時セッションの数について あなたはピーク時に持っていることを期待し、 セッションごとに約100kbで計算する (これはおそらくハイサイドにあります)。 つまり、大まかに実行できることを意味します の2万同時セッションをサポート 2GB。あなたがそれを必要とするので、15kと言います 同様に他のもののためのメモリ。の もちろん、保存の欠点 状態はうまくいくだけだ セッションアフィニティで、それは Wicket使用時の制限。の フレームワークは手段を提供します ステートレスページを実装しますが、 完全にステートレスに開発しています あなたが考慮するかもしれないアプリケーション 異なるフレームワーク。
  • Wicketの目標は、静的な型付けを最大限にサポートすることですが、Tapestryはコードの行を保存することを目的としています。したがって、Tapestryではコードベースが小さくなり、メンテナンスに適しています。Wicketでは、静的に型指定されるため、IDEでのナビゲートやコンパイラでのチェックが容易になり、メンテナンスにも適しています。両方の私見のために言うこと。

私は今まで何度か読んで、人々はWicketが多くの継承を通じて機能すると考えていることを知っています。選択肢があることを強調したいと思います。コンポーネントの階層がありますが、WicketはIBehaviorなどのコンストラクトを通じて構成もサポートします(その上に、WicketのAjaxサポートが構築されます)。それに加えて、コンバーターやバリデーターなどをグローバルにコンポーネントに追加したり、Wicketが提供するフェーズリスナーの一部を使用して横断的な関心事として追加したりします。

他のヒント

タペストリー5の学習後、

改訂

Wicketの目標は、デスクトップGUIに似たWeb開発を目指しています。メモリ使用量(HTTPSession)を犠牲にして、彼らはそれを本当にうまくやった。

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

私にとって本当に大きな落とし穴は応答でした<!> quot; Wicketはステートレスコンポーネントをサポートします!<!> quot;引数に<!> quot; Wicket is memory hungry <!> quot;。 Wicketは実際にステートレスコンポーネントをサポートしますが、<!> quot; Wicket開発の焦点<!> quot;ではありません。たとえば、StatelessFormのバグは非常に長い間修正されていません- StatelessForm-検証後のパラメーターの問題が失敗しました

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

残念ながら Tapestry 5チュートリアルでは、Tapestryのコード例が 't :loop source = <!> quot; 1..10 <!> quot; ... 'は悪い習慣です。そのため、チームがそれほど小さくない場合は、Tapestryの使用規則/グッドプラクティスの作成にある程度の努力を払う必要があります。

推奨事項

  • ページ構造が非常に動的で、ユーザーあたり10〜200 KbsのHttpSessionメモリを使用する余裕がある場合は、Wicketを使用します(これらは大まかな数値です)。
  • リソースのより効率的な使用が必要な場合にTapestry 5を使用します

Wicketは、よりシンプルなフレームワークだと思います。

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

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

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

http://incubator.apache.org/click/ を試してください。 それは驚くべきJava Webフレームワークです。 一部の人々はそれを<!>#8220; Wicket made right <!>#8221; ;-)

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top