PerlのCatalystJavaのStrutsのMVC実装の比較をしてみます。

Struts

struts.jpg

Catalyst

catalyst.jpg

Model:

Struts
 図ではModelとしてActionFormとなっていますが、ActionFormはむしろViewに近い存在です。Strutsにおける実際の開発ではむしろJavaBeansをModelとして扱い、ModelのSerializeにはHibernateのようなO-Rマッピングツールなどを使います。SerializeにはDAOパターンを使うことが多いです。

Catalyst
 Catalystでは純粋なModelもフレームワークに組み込まれています。Class::DBIなどのActionRecord的アプローチを取るためModelそのものにSerializeの機能を含めることが多いためDAOなどを使う場面は少ないです。

Contoller:

Struts
 StrutsではActionServletクラスがstruts-config.xmlに従って指定されたActionクラスにディスパッチします。Actionクラスにはビジネスロジックを実装してその結果によってActionServletがstruts-config.xmlに従ってViewを返します。

Ctalyst
 CatalystではControllerとURLが密接に関係しているためディスパッチはURLによって判断されます。Controllerにビジネスロジックを実装して結果としてViewを返します。

View:

Struts
 StrutsではJSPなどを用います。

Catalyst
 CatalystではTemplate-Toolkitなどを用います。

CatalystとStrutsの相違点は、Strutsではstruts-config.xmlという設定ファイルによってアプリケーションの挙動の多くをを決定する必要があるため、このファイルの管理が煩雑になりがちです。CatalystではURLとControllerが密結合している(ある意味で制限ではあるのですが)ため、必要な設定ファイルは存在しません。

Model部分の実装ではCatalystではActiveRecord的アプローチを取るのに対して、StrutsではHibernateなどのO-Rマッピングツールが使われることが多いのも違います。これは、開発規模や経緯などで優位性が違ってくると思うのですが、データベースと密接な関係が許されたり、新規のプロジェクトで新たにデータベースの設計が行えるのであればActiveRecord、他のアプリケーションからの利用があったり、既存のスキーマを使う必要があるのであればHibernateのアプローチが向いていると思います。(この辺はTheServerSide.COMの記事が詳しいです。)

一方、類似点は「薄いフレームワーク」であるという点です。Rails on Rubyなどよりも規制が少ない分応用が利き汎用性が高い反面、よく言われるように色々できてしまう分、チーム開発などの場面では自分で規制を決める必要があります。

              

              

トラックバック(1)

トラックバックURL: http://mt.hide-k.net/mt-tb.cgi/378

[ abs+ ] (PukiWiki/TrackBack 0.3) - Link/Java/AppFramework/Struts (2009年5月 2日 07:49)

Link/Java/AppFramework/Struts  Contents Link/Java/AppFramew... 続きを読む

コメントする

プロフィール

このブログ記事について

このページは、hideが2005年11月 4日 19:46に書いたブログ記事です。

ひとつ前のブログ記事は「Fedora Core 4 on VMwareでkernel panicの対処法」です。

次のブログ記事は「ほげほげ2.0」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。