web-dev-qa-db-ja.com

Javaコンポーネントベースとリクエストベースのフレームワーク

最近インタビューで尋ねられました-Javaでは、コンポーネントベースのフレームワークをリクエストベースのフレームワークとどのように比較しますか?私はコンポーネントベースのフレームワークの例としてEJBを説明し、リクエストベースのフレームワークとしてStrutsを説明しましたが、私が質問に正解した場合は確信が持てませんでした。

インタビュアーが何を意味し、何を比較すべきかについてのアイデアはありますか?

よろしく、avajurug

48
user150014

彼らはおそらくwebフレームワークの例を探していました-たとえば、JSFはコンポーネントベースのフレームワークであり、Strutsはリクエストベースのフレームワークです。

リクエストベースのフレームワークは一般に、APIを通じてHTMLリクエストの解析/ HTMLレスポンスの生成に取り組んでいることを明確にしますが、コンポーネントベースのフレームワークはこれを抽象化し、アプリケーションをレンダラーとアクションを備えたコンポーネントのコレクションとして扱います。物事を行います。

私の意見では、コンポーネントベースのWebフレームワークは価値があるよりも厄介です-その主な目的は、通常、開発者がWeb開発に不慣れで、従来のデスクトップ開発により近いWebアプリケーションの開発を「より簡単」にすることです。ただし、実際には、何か問題が発生した場合は、カスタムコンポーネントを開発する必要があります。「すぐに使える」機能ではないものに合わせてフレームワークをカスタマイズする必要があります。基礎となる「従来の」Web開発の両方を理解する必要があります。 andコンポーネントベースのフレームワークがそれを抽象化する方法-経験豊富なWeb開発者であり、「従来の」Web開発で機能する既存のソリューション、ユーティリティ、ライブラリ、またはスニペットを持っている場合、時間を浪費しますコンポーネントベースのフレームワーク内で機能するようにそれらを再実装します。

81
Nate

リクエストベースのフレームワークは、ユーザーのリクエストを取得し、システムが何をすべきかを決定し、ユーザーにレスポンスを返すウェブフレームワークです。したがって、フローはほぼ直線的です。あなたは行動で考えています:ユーザーが何を望んでいるのか(要求)->どのユーザーが何を取り戻すのか(応答)。リクエストベースのフレームワークの例は Struts です。最近の Grails は、リクエストベースのフレームワークでもあります。

コンポーネントベースのフレームワークはそのようなものではありません。実際には、前から後ろへの流れの明確な感覚はありません。その例はJSFではありません。これは、JSFがStrutsとほぼ同じであるためです( (StrutsとJSFの作成者 が同じであるため)。コンポーネントベースのフレームワーク Tapestry および Wicket の良い例。これら2つのフレームワークのパラダイムは異なります。アクションやリクエストとレスポンスではなく、コンポーネントとコンポーネントについて考えます。アプリケーションでコンポーネントを定義し、コンポーネントの機能を伝えます。しかし、フローはリクエストベースのフレームワークのように線形である必要はありません。

24
Joshua Partogi

JSFはコンポーネントベースですJava API、前述のように、Strutsはアクションベースのフレームワークです。Httpリクエストは解析されますが、最後にアクションを処理すると、コントローラーサーブレットがリクエストをJSPに転送します。コンポーネントベースのWebフレームワークの標準となったJSFでは、JSPまたはXHTMLページを作成するだけで要求と応答を処理する必要はありません。バッキングBeanまたはマネージドBeanのプロパティにレンダリングする必要があるページまたは値。FacesServlet(コントローラー)は、faces-configで指定されたナビゲーションルールに基づいてリクエストを解析し、JSPにリダイレクトして応答をレンダリングするすべてのジョブを実行します。 .xmlです。Strutsが従来のJSP /サーブレットモデルにより近い一方で、JSFはコンポーネントイベントベースのアプローチを採用しているため、StrutsとJSFの間に大きな違いがあります。jpartogiは、JSFの作成者とstrutsも同じですが、StrutsはApacheコミュニティが所有するフレームワークであり、JSFはバージョン1.1のJSR-127とバージョン1.2のJSR-252でJCPによって指定されたAPIであり、実装が異なります(Sun -RI、Apache MyFaces ...)

5
javance

単純に、フレームワークにJava側に各Web要素のオブジェクトがあるため、その属性を変更したり、いくつかの機能を追加したりできる場合、それはコンポーネントベースのフレームワークですが、フレームワークがオブジェクトを提供せず、タグの間にWeb要素の応答値を配置することは、要求ベースのフレームワークです。

2
FURKAN ILGIN