web-dev-qa-db-ja.com

Oracle ATGとStrutsの違いは?

Oracle ATGとStrutsの違いは何ですか?

15
chetan

Strutsは、J2EE Webアプリケーション内で使用するためのフレームワークであり、WebアプリケーションにMVCパターンベースのコーディングアプローチを提供しようとします。フォームデータ検証などのためのいくつかの追加ユーティリティが含まれています。これはオープンソースプロジェクトであり、Webアプリケーションパズルの特定の部分を解決するのに非常に優れており、その特定の部分のみを解決することに限定されています。

一方、ATG(ATG Dynamo)は、データ駆動型およびコンテンツ駆動型のWebアプリケーションを構築するためのアプリケーションプラットフォーム(ソリューションおよびフレームワーク)であり、主にコマースおよびパブリッシング用です。フレームワークレベルでは、WebベースのアプリケーションをホストするためのJavaベースのアプリケーションプラットフォーム、およびORMレイヤー、コンポーネントコンテナー、MVCフレームワーク、およびJSP用のタグライブラリのセット。コンポーネントフレームワーク(The Nucleus)は、Javaコンポーネントオブジェクト(Bean)のライフサイクルと依存関係のバインド(依存関係の注入)を管理するための軽量コンテナです。 Spring Beanコンテナにいくらか似ており、ATGフレームワークのコアであると感じます。他のすべてのサービスとフレームワークはその中でホストされます。ORMレイヤーフレームワーク(リポジトリ)は、オブジェクトをリレーショナルデータベースとの間でマップします(予想どおり)。 。ただし、同じ一貫性のあるデータアクセスAPIを使用して、LDAP、XML、およびファイルシステムデータソースとのマッピングを処理することもできます。ページ上のフォーム要素をビジネスオブジェクトなどの値にバインドするためのJSPタグは、フォームバインディングよりもエレガントでクリーンです。私が見た他のフレームワークのタグ。T同等のタグライブラリ(ドロップレット)を作成するメカニズムは、標準のJ2EEタグよりもサーブレットAPIとの整合性がはるかに高くなっています。

MVCフレームワーク(基本的なフォームハンドラーパターン)は、StrutsのFormクラスとActionクラスにいくらか似ていますが、Strutsよりもはるかに基本的なフレームワークを提供します。箱から出して、ほとんどの開発者が作業するレベルでは、ATGモデルはコントローラー駆動ではなくページ駆動です。内部的には、ディスパッチャーとコントローラーをチェーンするパイプラインアプローチでコントローラー主導型であることは確かです。

さらに、基本レベルのフレームワークは、RMIコンテナー、分散キャッシング、分散ロックと分散シングルトン、分散イベントとメッセージング、タスクスケジューラ、ルールエンジン、およびカスタムアクションと結果を使用してビジネスワークフローを定義するメカニズムを提供します。ビジネスワークフロー用のグラフィカルエディタ、バージョン管理されたデータのサポート、役割と権限のサポート、ロギングと監査-すべてすぐに使用でき、すべて非常に一貫性のある一貫したAPIを使用しています

次に、ソリューションレベルで、ユーザープロファイリング、ID管理とパーソナライズ、コンテンツオーサリング、バージョン管理と公開、コンテンツ検索、有形および無形の商品の製品カタログ、製品検索とガイド付きナビゲーション、価格設定を処理するためのコンポーネントとAPIがあります。税計算、プロモーション、ショッピングカート、ギフトリストとウィッシュリスト、支払いタイプ、配送方法、注文追跡、顧客関係管理など。

ATGへの拡張ポイントと統合ポイントは通常、非常によく設計されており、十分に文書化されています。これらは、オーサリングとコンテンツ管理、ID管理とセキュリティ、製品カタログ、検索とガイド付きナビゲーションなど、eコマースとパブリッシングの分野にいるほとんどすべての人との統合をサポートします。また、フレームワークのほぼすべての領域が拡張可能です。プラグゲーブルなので、独自のコンポーネントを作成して、すぐに使用できるコンポーネントを拡張または交換できます。

2つを比較することはあまり意味がありません。しかし、あなたの質問を考えると、あなたが本当に興味を持っているのはATGのMVC部分だと思います

MVCの場合、StrutsはATGよりも多くの機能を提供します(ただし、Spring MVCはStrutsよりもさらに多くの機能を提供します)。ただし、ATGよりもStrutsの方が、フレームワークの仕組みに行き詰まる傾向があります。

個人的には、ATGのフォームハンドラベースのモデルは、私が見た他のほとんどのWeb MVCフレームワークよりもエレガントで、クリーンで、操作が簡単であり、APIはサーブレットAPIとより一貫性があると思います。

また、ほとんどの「web-MVC」フレームワークは真のMVC(つまり、SmalltalkまたはJava Swingなど)でのGUIプログラミングに使用されるパターン)とは異なります。StrutsでもATGでもありません。 (設計どおりに)真のMVCを提供します-ATGは実際には近づいていますが、用語については多くの混乱があります。

例えば、

  1. インクルード M真のMVCのodelは、データモデルでもドメインモデルオブジェクトでもありません。これは、ビュー内のすべてのデータを表すモデルです。それがたまたまドメインモデルオブジェクトである場合は、それで十分ですが、多くの場合、別のビューまたはフォームオブジェクトのセットが必要であることがわかります。また、モデルはそれ自体を最新の状態に保つ責任があります-それはビジネスサービスと相互作用するモデルです。 ATGは、モデルとコントローラーを1つのコンポーネント(フォームハンドラー)に融合する傾向があります。 Strutsは、ビューデータモデル(フォームオブジェクト)を区別する傾向がありますが、真のMVCの意味でのモデルとしての使用を推奨していません。他のビジネスサービスと対話して更新を維持するのはフォームオブジェクトではありません。

  2. インクルード CmVCのontrollerはビジネスコントローラーではありません。 MVCのコントローラーは、ビューとモデルの間の導管です。ビューの変更またはビューで実行されたアクションに反応し、それに応じてモデル自体を更新するようにモデルに指示します。 Strutsでは、彼らが話しているコントローラーはMVCコントローラーではなく、実際にはディスパッチャーです。コントローラに属するコードの多くは、最終的にActionクラスに含まれます。しかし、Strutsの設計方法では、Actionクラスは実際にはモデルが行うことを実行することを目的としています。

  3. インクルード VmVCのiewは、モデルによって入力される必要があります。これは、モデルがビューを更新するプッシュメカニズムであり、ビューがモデルをクエリするプルメカニズムではありません。ほとんどのWebMVCフレームワークでは、ビュー(通常はJSP)は、それ自体を表示するためにモデルから状態をプルします。これは特にATGのページ駆動型アプローチの場合です。ページのレンダリング中にデータがフェッチされていることがわかった場合は、MVCデザインに問題があることを意味します。

Strutsでは、MVCコントローラーの機能はStrutsコントローラーとアクションに分散され、MVCモデルの機能はFormオブジェクトとアクションに分散されます。

ATGでは、MVCコントローラーとMVCモデルの機能はすべてフォームハンドラーにあります

そうは言っても、HTTPの要求/応答の性質により、Web-MVCフレームワークでのコントローラーの機能はかなり制限されています。 Webアプリケーションでは、豊富なUIフレームワークの場合のように、多くの小さな変更(たとえば、キーの押下やマウスのクリック、または入力フィールドの変更)ではなく、フォームの送信に関するビューが完全に更新される傾向があります。 AJAXの使用はそれを変えています-そして、MVCを正しく実装することについてもっともっと考える必要があります。

MVCはデザインパターンであることを忘れないでください。つまり、アプリケーションのGUIの側面を設計するときに使用される設計時の原則です。 StrutsとATGはフレームワークです。つまり、アプリケーションを構築するときに拡張、実装、または構成するクラスとオブジェクトです。フレームワークはデザインパターンの使用を強制することはできません-それは単にそれを奨励することができます。特定のフレームワークを使用することを選択しても、サイドをより適切に設計することはできません。せいぜい、特定の分野を奨励する可能性があります。

MVCを適切に設計すれば、StrutsクラスとATGクラスのどちらを使用して実装しても大きな違いはありません。同様に、MVCを不適切に設計し、フレームワークの選択が不足分を補うことを期待している場合、StrutsとATGのどちらを使用しても大きな違いはありません。設計の原則を理解して作業すれば、フレームワークを簡単に切り替えることができます。

最良のコードは、抽象的に優れた設計原則(たとえば、真のMVC)に準拠し、選択したフレームワークで使用可能な適切なツールを使用する目的で使用して実装(実現)するコードです。

あなたの質問に戻ります。

ATGプロジェクトで作業している場合は、ATGが提供するフレームワークを使用する必要があります。 StrutsをATGアプリケーションに靴べらにすることは確かに可能です-私は何年も前にこれを自分で行いました-しかしそれは価値があるよりはるかに多くの努力です-そしてあなたはATGが箱から出して提供するものの多くをあきらめていますオブジェクトのライフサイクル管理、フォームデータバインディングなど。

新しいプロジェクトで作業を開始しようとしていて、使用するフレームワークを選択できる場合(JBossなどのオープンソースアプリケーションサーバーとSpring Frameworkを個人的にお勧めします)、ATGとStrutsが提供する最高のものを提供します。 Nucleusのようなコンポーネントコンテナ(アプリケーションコンテキスト)があり、すべての優れたORMソリューション(Hibernateなど)と統合され、Strutsをはるかに凌駕しているMVCフレームワークが含まれています。さらに、より高いレベルのGUIフロー設計については、SpringWeb-flowを検討することをお勧めします。

58
Vihung

英国での主な違いは、ATG請負業者として1日あたり500ポンドを獲得できることですが、一般的なStrutsの人としては、幸運にも350ポンドを獲得できます。

苦いというわけではありません。

9
Gareth Davis

ATGはプロプライエタリソフトウェアです...そしてリソースは少ないです...

0
Sameer