ASP.NETすげぇや…。

ASP.NET対応の為に、少しだけ調べてみたり。
ポイントになるリソースは、IHttpModule。
こいつを使って、ASPの時は、コンテナをブートストラップする感じで。
要は、S2ContainerServletと同じ様な位置付けのコードを書く事になる感じ。


更に、こいつのInitメソッドで、HttpApplicationへイベントを追加する事で、
S2ContainerFilterの様な動作をする事が出来ます。
ポイントになるイベントは、

  • BeginRequest(HTTPリクエスト処理開始直後のイベント、Pageオブジェクトは未生成)
  • PreRequestHandlerExecute(Pageオブジェクト実行直前のイベント)
  • EndRequest(HTTPリクエスト終了直前のイベント)


各イベントの1番目の引数として入ってくるHttpApplicationから取れるHttpContextでは、
HttpRequestやらHttpResposeやら、まぁ何でも取れます。
HttpContextのHandlerプロパティが特に重要なプロパティです。
これは、各リクエスト時に実行対象となるPageオブジェクトが格納されているからです。
WebサービスのホストとしてASP.NETを使っている時はその限りではありませんが…。


実は、HttpHandler ファクトリを、カスタムメイドする事で、
Pageオブジェクト自体も、DIコンテナが完全に管理する事も出来ます。
只、ASP.NETがPageオブジェクトを具体的にどう扱っているのか、イマイチ見えないので、カスタムメイドは難しいかなぁ…と。
特に、HttpリクエストとPageのメンバをマッピングする部分は、かなり難しいんじゃないかなぁ…とか。


ASP.NETWebサービスのホストとして動作する場合の対応は、まだ未調査です。


調査の為に、無料で使えるので、WebMatrixを使ってみたのですが、
付属している簡易HTTPサーバが凄く良い感じです。
ASP.NETを開発するなら、軽いし使い易いと思います。
WebMatrix自体も、本格的な開発にはチト向かないかなぁ…とは思うものの
ASPの凄さを実感するには、調度良いツールです。
レイアウトの為の.aspxファイルと、
処理を記述する為の、.aspx.csを分けてくれないのがイマイチ極まり無いです…。