* Struts vs. ASP.NET 比較 [#ld652dfd]

** Struts とは [#he4dc49b]

  Jakartaプロジェクトが開発しているオープンソースのソフトウェアで、Java言語を用いてWebアプリケーションを開発する際の必要な基盤(フレームワーク)となるもの。
  MVCというソフトウェア設計モデルに基づいており、JavaサーブレットやJSPを組み合わせてアプリケーションを構築する際に必要となる諸機能を提供する。
([[e-Words:http://e-words.jp/w/Struts.html]] の説明より)

つまり、Java([[J2EE:http://sdc.sun.co.jp/java/j2ee/index.html]]) ベースの Web アプリケーションの MVC フレームワークということ。

- [[The Ja-Jakarta Project:http://www.jajakarta.org/]]
-- [[Struts(日本語):http://www.jajakarta.org/struts/]]
-- [[Struts(日本語):http://www.ingrid.org/jajakarta/struts/]]
-- [[Struts(英語):http://struts.apache.org/]]
-- [[Struts 1.0.2(日本語訳):http://www.ingrid.org/jajakarta/struts/struts1.0/ja/target/documentation/index.html]]

** ASP.NET とは [#vd46cdc7]

  .NET Frameworkで提供されるWebサービス向けのクラスライブラリ。Windowsサーバ上でダイナミックなWebページを動作させるための基盤となるソフトウェアで、WebアプリケーションやWebサービスの開発・構築に用いられる。
([[e-Words:http://e-words.jp/w/ASP2ENET.html]] の説明より)

つまり、Win32 ベースの Web アプリケーションの MVC フレームワークということ。

- [[MSDN:http://www.microsoft.com/japan/msdn/]]
-- [[ASP.NET ホームページ:http://www.microsoft.com/japan/msdn/asp.net/]]
-- [[ASP.NET クイック スタート チュートリアル:http://ja.gotdotnet.com/quickstart/aspplus/]]
- [[@IT:http://www.atmarkit.co.jp/]]
-- [[ASP.NET プログラミング:http://www.atmarkit.co.jp/fdotnet/aspnet/index/index.html]]
- [[GotDotNet:http://www.gotdotnet.com/japan/]]
-- [[ASP.NET:http://www.gotdotnet.com/japan/team/asp/default.aspx]]

** どちらを選ぶ? [#iff9b574]

どちらが良い?という問いは愚問。case by case である。

以下の観点から、最適なソリューションと思われる方を選択する。
(あくまで目安として。)

''参考記事''
- [[ASP.NET vs. Struts フレームワーク徹底比較:http://www.atmarkit.co.jp/fdotnet/special/aspstruts01/aspstruts01_01.html]]
- [[ASP.NET と Struts : Web アプリケーションのアーキテクチャ:http://www.microsoft.com/japan/msdn/net/aspnet/ASPNet-ASPNet-J2EE-Struts.aspx]]

*** プラットフォームで選ぶ [#i4d88473]

Struts は、様々なプラットフォーム(OS)を選択できる。
LinuxやUNIX 系OSは勿論、Win32系OS(Windows 2000, Windows XP など)を選択することも可能。
要は、J2EEが稼動するプラットフォーム(だから、ほぼ全て)ならどれでもOK。

対するASP.NETは、Win32系OSのみ。
UNIX系OS向けに [[Mono プロジェクト:http://www.mono-project.com/]] というものも立ち上がっているが、
まだ一般的ではない。

プラットフォームがWin32以外であることが決まっているなら、
自ずとStrutsを選択することになる。

** 簡易さで選ぶ [#r0e90a78]

開発の簡単さ、つまり、どちらが楽に開発できるか、という観点でいうなら、
私はASP.NETの方が簡単だ、と思う。

Strutsは、その言葉の意味が示す通り
家や橋を支える土台となる「支柱」ということで、
要は、フレームワークをつくるための部品の集合、という感じ。
なので、その部品を使ってどのようなフレームワークを組むかは、
開発者の設計次第ということになる。

それに対してASP.NETは、
部品と共に、フレームワークそれ自体も、最初からある程度出来上がっている。
つまり、ASP.NETを選択した時点で、
.NET Framework という仕組みの上に設計をしていくことになる。
これは、最初からある程度標準的な仕組みができているということで、
開発者が考えたり設計したり書いたりする量が単純に減る。

2者のこの部分は、それぞれ長所にも短所にもなる。
設計の大部分を開発者に任されるということは、
作業量が大きい分、自由度、カスタマイズ性が高いということ。
逆に、設計は必要最小限に抑えられるということは、
作業量が減るが、自由度が下がり、制限が多くなるということでもある。

一言でいうなら、Strutsは、どちらかといえば玄人志向、
ASP.NETは、どちらかといえば初心者向け、という感じか。

*** 開発環境で選ぶ [#hb11936e]

Strutsは、特に開発環境を選ばない。
テキストエディタでコードを書いて、コンソールでコンパイルする、
という方法を採ることもできるし、
[[JBuilder:http://www.borland.com/jp/products/jbuilder/]] や [[Eclipse:http://eclipsewiki.net/eclipse/]] などの環境で開発することもできる。
要は、Java の開発環境なら何でもOK、ということ。

ASP.NETは、事実上、[[Visual Studio .NET:http://www.microsoft.com/japan/msdn/vstudio/]] ということになる。
(他にも、[[Boland:http://www.borland.com/jp/]] から .NET 向けの開発環境も出ていたり、
フリーのツールもあったりするが。)
一応、.NET Framework の SDK があれば、
テキストエディタで編集、コンパイルということもできるが、
その場合、ASP.NETの大きなメリットである開発の簡便さという部分がなくなってしまう。

当然いえることとして、
Strutsの開発は、設定やコーディング、GUIの作成などを、ほぼ手動で行わなければならない。
特に、開発初期においてStrutsが動作する環境を整える為には、相応の知識と労力を要する。
対するVS.NETならば、ソリューションを立ち上げるだけで、基本的な動作環境は全て整ってしまう。
また、開発においても、IntelliSenseによるコード補完やフォーム形式のGUI作成機能は強力。
ステップ実行やブレークポイントの設定によるデバッグ機能も非常に使いやすい。
Strutsも、Eclipseを使えば、コード補完やGUIの作成をある程度支援してくれるが、
Eclipse自体の動作設定や環境調整はやはり戸惑うことがある。

この意味でも、Strutsは玄人志向といえる。

ただ、これはあくまで開発者の観点からの考え方であって、
それがベストなソリューションであるかどうか、という話は別。

*** コストで選ぶ [#v3b6bc4e]

Strutsは、システム構築自体は、ぶっちゃけ全てタダ。
Struts(J2EE)自体オープンソースであり、
開発環境も全てフリーで整う。
DBもPostgreSQLやMySQLなどであればフリー、
プラットフォームもLinuxを選択してしまえば、
材料としてお金がかかる部分はない。

対して、ASP.NETは、まずVS.NETを購入しなければならない。
(必要に応じてMSDNの契約なども。)
また、プラットフォームはWindowsに限定されるので、
当然そのソフトとライセンスの費用が発生する。
DBは、ASP.NETはほとんどの場合SQLServerが選択される。
これは、ASP.NETが標準で持つDBアクセスのクラスライブラリがADO対応であり、
ADOはSQLServerと親和性が高いためである。
(MSDEならばタダだが、大規模システムになると、接続数が対応できない場合が多い。)
勿論、他のDBを選ぶこともできるが、
その場合もフリーのDBを選択するケースはほとんどなく、
多くの場合、SybaseやOracleなどの有償のものが選択される。

つまり、初期投資の面で見れば、断然Strutsの方が安上がりである。

ただ、システム開発と維持にかかる費用というのは、
初期投資だけでなく、メンテナンス(にかかる工数)のことも考慮しなければならないので、
一概に、Strutsの方が安い、ともいえない。

*** 開発言語で選ぶ [#eb5bade2]

Strutsの場合は、もう Java 一択である。それ以外はない。

ASP.NETは、使用可能な言語として、
C#、Visual Basic.NET、J#、(Managed C++ は使えるのかな?)、
Boland 製品を買うなら、[[Delphi:http://www.borland.com/jp/products/delphi/]] などがある。

私にいわせれば、言語の違いはそれほど大きな差異ではない。
もちろん、開発者が使い慣れた言語というのはあって、
使い慣れた言語の方が開発は速いとは思うのだけど、
昨今の言語はほぼオブジェクト指向の形をとっていて、
そのどれかひとつでも経験していれば、他の大抵の言語には対応できる。
要は、慣れを要するか否かの問題だと思う。

ここは、好みかな。


-----
[[プログラム・開発系メモ]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS