1

JavaWebアプリでのWebフレームワークの使用を調査しています。私の基本的な要件は、保守性、テスト性が非常に簡単で、繰り返しがないことです。

ある種のフロントコントローラーパターンとビュー用のJSPを使用して、独自のMVCタイプのアプリを作成することを検討しました。これの利点は、Webアプリのすべての側面を完全に制御できることです。適切に設計すれば、将来、よりテストされたフレームワークに移行することは難しくありません。しかし、欠点は、いわば車輪の再発明をしなければならないということです。

現在利用可能なWebフレームワークについて良いことを聞いています。私が注目しているテクノロジーには、Spring、Wicket、Struts、Guice、Hibernate、Tapestryなどがあります。

タペストリーとウィケットには少し警戒しています。それらについてはあまりよくわかりませんが、サーブレット->モデルjsp->ビュー式から逸脱しているようです。私はそれで快適かどうかわかりません。ただし、Wicketは実際にはGuiceに最適であり、非常にテスト可能であると聞いています。

Springはぴったりのようですが、すべてを実行しようとするフレームワークには非常に警戒しています。spring-MVCを使用したいのですが、他のコンポーネントに交換できますか?たとえば、Spring-MVCをフレームワークとして使用しながら、GuiceをDIエンジンとして使用できますか?

Strutsについて簡単に説明しましたが、ニーズに対して非常に複雑であり、完全なパッケージのようです。

私はHibernateを使用したことがありませんが、ORMの標準のようであり、ActiveRecordのようなものであれば(私は少ししか触れていません)、それが私のニーズに合っていると確信しています。

私もGuiceを実際に使用したことはありませんが、人々はそれを本当に気に入っているようです。実際のアプリケーションでどのように使用されているかはわかりませんが、私は一般的にDIのファンです。

基本的に、私はサーブレット/JSPを書くことに本当に自信があります。私は代替技術を学ぶことに反対していませんが、どれが本当に私に利益をもたらすかについてのアドバイスを探しています。

サーブレットとJSPを使用してMVCアプリを作成できる場合、Springを組み込む価値はありますか?または、サーブレット/ JSPを使用して、GuiceのようなDIエンジンを組み込む必要がありますか?

ORMにHibernateを使用したいと確信していますが、かなり複雑になる可能性があると聞いています。私が本当に探しているのは、POJOをデータベースにマップする方法だけです。したがって、より適切で使いやすいものがあれば、それを調べてみます。

私は道に迷い、その地域の知識のある人々からの少しの指示を探しています。これらの問題についての意見をいただければ幸いです。ありがとう!

4

3 に答える 3

3

「Springはぴったりのようですが、すべてを実行しようとするフレームワークには非常に警戒しています。Spring-MVCを使用したいのですが、他のコンポーネントに交換できますか?たとえば、GuiceをDIとして使用できますか?フレームワークとしてSpring-MVCを使用しているときのエンジン?」

Agreed Springは多くのものを提供しますが、完全にモジュール化されています。DIは、AOPの有無にかかわらず使用できます。はい、SpringMVCとGuiceforDIを一緒に使用できます。

「Strutsについて簡単に説明しましたが、ニーズに対して非常に複雑であり、完全なパッケージのようです。」

ストラットはかなり前から使っていましたが、使い始めてもそよ風のように楽でした。コントローラーは最初は圧倒されるように見えるかもしれませんが、コツをつかむと本当に楽しいものになります。最良の方法は、Strutsを使用して実際の例をいくつか見てみることです。

「私はHibernateを使用したことがありませんが、ORMの標準のようです。これが、ActiveRecord(ほんの少ししか公開されていません)のようなものであれば、自分のニーズに合っていると確信しています。」

ああ、Strutsがタフだと思ったら、Hibernateは巨大です。それには大きな学習曲線が必要です。最後にそれは報われますが、ActiveRecordを知っているなら、Hibernateの十分な知識を得る前にそれに固執することをお勧めします。

「ORMにHibernateを使用したいと思っていますが、かなり複雑になる可能性があると聞いています。」

私見、非常に真実です...少なくとも初心者にとっては。(ここで変更を提案する人はいますか?)

「サーブレットとJSPを使用してMVCアプリを作成できれば、Springを組み込む価値はありますか?」

Strutsやその他のフレームワークがないということですか?どのように?

あなたがあまりにも速く引き受けようとしているようです。一度に1つのことを考えてみてください。DI自体は、現実の世界で実装するのが難しいものです。そうそう、概念的には素晴らしいのですが、私が言いたいのは、最初に物事を1つずつこつをつかむ必要があるということです。

于 2009-04-25T19:30:27.730 に答える
2

この質問は、いくつかの混乱を示しています。決定的な答えは「いいえ、Webフレームワークを使用することはできませんが、それに依存することはできません」だと思います。

しかし、あなたの本能は良いです。コードの適切なレイヤー化とモジュール化を支援し、侵襲性を最小限に抑えることで、フレームワークが提供する一般的な利点を最大化する必要があります。

そうは言っても、Springは両方の点で勝者だと思います。

Spring のイディオムに従うと、インターフェイス、レイヤリング、およびアスペクトを使用することで、コードの構造が改善されます。彼らがデザインに注いでいる注意のいくつかは、あなたに影響を与えるに違いありません. それは彼らが提供する優れた配管コードと同じくらい役に立ちます。

コードベースは 100% Spring である必要はありません。私は、最初から最後まで書き直されていないレガシー Java アプリの拡張に Spring が使用されているのを見てきました。

Struts は単なる Web フレームワークであるため、適切な選択ではない傾向があります。すべての処理を Action サブクラスに入れることを奨励し、決して出てこないようにします。Spring は、Web 層をバックエンドから分離するサービス インターフェイスのアイデアを注入します。Web 層を交換して、SOAP、RMI、EJB、またはリモート HTTP 呼び出しとしてサービスを公開する方が簡単です。

Hibernate は Struts よりもはるかに複雑です。Spring を選択した場合は、永続化インターフェースを使用し、Spring JDBC から始めます。Hibernate の準備ができたら、いつでも新しい実装を作成して、JDBC バージョンがあった場所に単純に挿入できます。

于 2009-04-25T20:33:10.277 に答える
2

非常に簡単に言えば、JSP とサーブレットに慣れていて、Web プログラミングの単調な作業を軽減したい場合は、Stripes または Struts 2 を検討します。

私は Stripes に非常に精通しており、Struts 2 が類似していることしか認識していないため、このエントリでは Stripes に焦点を当てます。

余談ですが、Struts 1 には価値がありません。それは(率直に言って)何の価値もありません。

Stripes にはいくつかの機能がありますが、ここではその一部のみに焦点を当てます。

Stripes の主な価値は、これが唯一の機能である場合でも非常に価値のあるものであり、バインディング フレームワークです。

バインディングは、リクエスト文字列値をアクション値に変換するプロセスです。Stripes はこれを驚くほどうまく行います。具体的には、Stripes バインディングは、ネストされたパラメーターとインデックス付きパラメーター、および型変換で非常にうまく機能します。「currentDate」という名前のフォーム フィールドを簡単に作成し、アクションに「Date currentDate」を設定すると、Stripes は「正しいことを行います」。

「mainMap['bob'].listOfThings[3].customer.birthDate」という名前のフォーム フィールドがある場合、Stripes は地図を作成し、リストを作成し、顧客を作成し、文字列を日付に変換し、生年月日を入力します。顧客をリストの 3 番目のスロットに入れ、そのリストをマップの「ボブ」スポットに入れます。(私はいつもこのようなことをしています。)

Action 変数へのリクエストのバインディングは素晴らしいものです。

さらに、フォーム タグを使用すると、たとえば、日付フィールドに「Fred」を入力したときに、適切な動作が得られます。フィールドに Fred が表示され、適切なエラー メッセージが表示されたフォームを簡単に取得できます。

最後に、私は彼らの行動の結果としての彼らの決議が本当に好きです. たとえば、ページに転送する ForwardResolution、ページにリダイレクトする RedirectResolution、ソケットにデータを送信する場合の StreamingResolution などです。これは非常に洗練された機能です。

Stripes にはあらゆる種類のパワーがあり、あらゆる種類のことを実行できますが、これら 3 つの部分が私にとって最高のものであり、私が 99% の時間使用しているものです。

簡単に言えば、システムの HTTP 要求の性質を完全に覆い隠すことなく、邪魔にならず、「配管」を容易に処理します。

JSP/サーブレットに満足している人にとって、Stripes は優れたステップアップであると思います。これは、機能するため、コストがほとんどかからず (セットアップが簡単です)、既に知っていることをすべて捨てる必要がなく、優れた確かな価値を追加するからです。 JSP と JSTL に最適です。アクションを URL にマップするために使用する単純なメカニズムと、リクエストをアクションにマップするのがいかに簡単かを学ぶと、すぐに飛行できるようになります。

Ajax などとの相性も抜群です。

于 2009-04-25T19:35:57.670 に答える