Cassiniを知る
Windows XP Homeでウェブアプリ
ここ数年でJAVAもしくはDotNETでのウェブアプリという方向性が浸透していた、ということを実感。
J2EEしかやってなかったからDotNETがどのくらい使われているのか、いまいちわからなかったのだが、思っていたよりも使われているようだ。
仕事とはべつに、ちょっとしたウェブアプリを作りたいと思っているのだが、J2EEの機能のうちウェブサーバしか提供していないTOMCATでは力不足で、JBossは再配布がめんどくさいし、でかすぎる。
Sun Java System Application Server 9 Platform Editionはセットアップもデプロイメントも簡単で、この中では、もっとも最適な解に近いと思う。
しかし、SJSAS9PEをもってしても、デフォルトで起動するデータベースサーバがない。JAVAで軽量で無料のデータベースとしてはApache DerbyやHSQLDBがあるが、アプリケーションサーバの起動と同時に立ち上がるようにするには少し手間がいる。
そして、なにより、これらのサーバ類を立ち上げている間、そのマシンの物理メモリの100MBぐらいは軽く仮想マシンが占有してしまう。
本当にサーバ機に入れるのならば何を気にすることもないのだが、入れたいのは一般人が使うWindows XP Homeのようなマシン。使うときだけJ2EEサーバを立ち上げて、使い終わったらJ2EEサーバをシャットダウンして…、って、かなりめんどくさくてユーザフレンドリじゃない。
Windows XP Home + ASP.NETでウェブアプリ
なるほど、ASP.NETなら仮想マシンに食われるメモリの心配もしないていいし、試した限りでは不活性状態のDotNETアプリは物理メモリをほとんど食わない。
…と思ったら、よくよく考えてみると、Windows XP HomeにはIISがインストールできない。
ちょっと検索すると、
http://www.15seconds.com/issue/020118.htm
てな記事があって、homeにiisを入れるためにpro版であることを偽装する方法があるようだが、proのライセンスがない場合には非合法だ。
しかし、VS2005にはmini-IISのようなものがついていて、実はWindowsXP Home Edition上でASP.NETの開発ができるようになっている。もともとASP.NETの構造は従来のASPのようにIISにディペンドしているものではなく、ウェブサーバへのリクエストをASP.NETのインフラに接続する仕組みになっていて、たとえば、SessionやApplicationCacheなどもASP.NETのフレームワーク側がもっている。当初よりIISに依存しないつくりである。実際に、ApacheにASP.NETを接続するためのmodが開発されているらしい。
まあ…、UnixでASP.NETの意味があるのかわからないが、Windows 2003 ServerでApache + ASP.NETの意味は限りなくゼロだろう。
しかし、Windows XP Home + Apache + ASP.NET、というのならば話は別だ。それも、アリかもしれない。
…だが、こんな記事もみつけた。
http://msdn.microsoft.com/msdnmag/issues/04/12/ServiceStation/default.aspx
なんだか、よくわからないが、ASP.NETのインフラに接続するために必要なことは、ほんとうに少ないらしい。
Apacheである必要性がない。
さらに調べてみたら、VS2005が使っているmini-IISのような機能は、サンプルサーバのCassiniと呼ばれるもので、ASP.NETのサイトで、マイクロソフトが以前から提供しているものらしい。これはサービスとして起動するわけでもなく、配置できるアプリケーションも1つだけのシンプルで単純なサンプル・ウェブサーバである。
そして、それをベースに、再配布、アプリケーションの配備を簡単にし、複数のアプリケーションのデプロイとサービスとしての起動を可能にしたフリーのサーバがあるらしい。
UltiDevCassiniWebServerというものである。
http://www.ultidev.com/Products/Cassini/CassiniDevGuide.htm
おお、これは大本命かもしれない。
データベースサーバはSQLServer2005Express Editionを使えばいいし、ウェブサーバも、これでセットアップできるのならば、ASP.NETで開発してもXP Homeの心配はしなくてすみそうだ。
おまけにSQLServer2005もASP.NETも不活性状態であれば物理メモリに与えるインパクトは少ない。OracleやJ2EEのようなサーバ・アプリがメモリを占有できるリッチなマシンでなくてもいい。他のアプリケーションに与える影響も少なく、一般コンシューマのマシンにもウェブベースのアプリケーションを配布できる感じなっている気がする。
ちょっと調べてみるかな。
(追伸) 普通に問題なく動いたし、簡単にデプロイできました。あとは、再配布用のセットアップを、どう作るか、ですかね…。