ASP.NETプログラム部品の効率性再認識

■先日、Visual Studio 2005に比較すると、CodeCharge Studioという開発環境の方がはるかに使いやすそうだということを書いた。この点を修正する必要はないのだが、山田祥寛著『独習ASP.NET』(翔泳社)を読んで、ASP.NETそれ自身はそれほど筋が悪いわけではないということがわかった。

ユーザ認証を実装するのに設定ファイルを記述しなければならないのは手間ではあるが、逆にweb.configファイルでログインページを一度指定すれば、個々のページでログイン中かどうかをチェックするロジックの必要はなく、ログインしていなければ自動的にログインページにリダイレクトされる。そしてログインページでデータベースへユーザ名とパスワードを照会するようにしておけばいい。IDとパスワードを記憶するかどうかも、web.configファイル内のフラグを1つ設定しておくだけでいい。
Visual Studio 2005でどこにどんなコードが自動生成されるのか全くわからないまま.NETのユーザ認証のしくみを使うよりも、設定ファイルのweb.configを書く方がはるかに解りやすい。
この『独習ASP.NET』を読むと、phpとASP.NETの根本的な思想の違いもよくわかる。やはりASP.NETはマイクロソフトの開発環境の思想を受け継ぎ、あくまで「ヴィジュアル・コンポーネント指向」だ。マイクロソフトが提供する完成されたGUI部品を使って、アプリケーションを組み立てていくという思想がある。対してphpは汎用性を重視したプログラム部品(クラスライブラリや関数群)を利用するが、GUIは一から記述する必要がある。
ASP.NETで表形式のデータ表示をするデータグリッド系のプログラム部品が、元となるデータをひもづけるだけで、「見た目」の部分はほとんどプログラム部品自体が自動生成してくれる。それに対してphpでは、たとえば表の1行ごとに背景色を変えるという「見た目」の制御はいちいち記述する必要がある。
驚いたのはASP.NETのデータグリッド系部品が、1レコードを複数行で表示する機能もTemplate要素として用意していることだ。また、データ件数が増えたとき複数ページに分割して表示するページング機能も、同じくTemplate要素としてかんたんに実装できる。phpでWeb型データベースアプリケーションを開発しようとすれば、わざわざSmartyでも組み合わせない限りASP.NETほど効率よく実装するのは難しいだろう。当然ASP.NETはマイクロソフトのInternet Information Service上でしか実行できないというお決まりの制約はあるが。