だるろぐ

明日できることは、今日しない。

ASP.NET Web ページとは

f:id:daruyanagi:20130320053155g:plain

ASP.NET Web ページ (ASP.NET Web Pages)という技術をほかの人に説明するとき、どうすればいいんだろう? と最近考えているけど、ぶっちゃけよくわからん。

一応 MSDN ではこのように紹介されている。

ASP.NET Web ページは、Web アプリケーションのプログラミング可能なユーザー インターフェイスとして使用します。 ASP.NET Web ページは、ブラウザーまたはクライアント デバイスでユーザーに情報を表示し、サーバー側コードを使用してアプリケーション ロジックを実装します。 ASP.NET Web ページの特徴を次に示します。

  • Microsoft の ASP.NET テクノロジに基づいており、サーバー上で動作するコードがブラウザーまたはクライアント デバイスに対して動的に Web ページ出力を生成します。
  • すべてのブラウザーまたはモバイル デバイスと互換性があります。 ASP.NET Web ページは、スタイルやレイアウトなどの機能に対して正しいブラウザー準拠 HTML を自動的に表示します。
  • Microsoft Visual Basic や Microsoft Visual C# など、.NET 共通言語ランタイムによってサポートされているすべての言語と互換性があります。
  • Microsoft .NET Framework 上に構築されています。 これにより、マネージ環境、タイプ セーフ、継承などのフレームワークの利点を利用できます。
  • 高い柔軟性。ユーザーが作成したコントロールやサードパーティ製のコントロールを Web フォーム ページに追加できます。
ASP.NET Web ページの概要

なるほど、よくわからん。

困ったので、今度は緑タイツ(の片割れ)が授けてくれた“秘伝の書”(P.24)を開いてみた。

プログラミングMicrosoft ASP.NET 4 (マイクロソフト公式解説書)

プログラミングMicrosoft ASP.NET 4 (マイクロソフト公式解説書)

Web Forms、MVC、Web Pages

ASP.NET Web Forms は、どちらかと言えば、開発者やソフトウェア技術者にとって受け入れやすいものでした。ASP.NET MVC の場合は、少し余分な作業が必要になり、試行錯誤による習得や発見はまったくうまくいきません。では、ASP.NET の世界に飛び込むためのハードルはどれくらい高いのでしょうか。

ASP.NET には Web Pages という新しいアプローチがあります。ASP.NET Web Pages はプロの開発者を対象としたフレームワークではありませんが、やはり ASP.NET プラットフォームの一部であり、今後も更新されていく予定です。

文脈を端折っているためよくわからない部分もあるが、つまり、

  • ASP.NET:.NET Framework を基盤とした Web アプリケーション開発のためのプラットフォーム

であり、その上には歴史的に古い順に

  • ASP.NET Web Forms:「Visual Studio」+「Windows Forms」によるコントロールの“ポトペタ”*1開発の Web アプリ版。最初は Web のことがあまりわからなくても、用意されたパーツを組み合わせるトップダウン型の手法でサクサク開発できるけど、裏で生成される HTML コードは複雑怪奇でゲロ汚い。
  • ASP.NET MVC:Ruby on Rails などの MVC フレームワークに影響を受けて生まれる。コードを重ねながら複雑さを増していくボトムアップ型。エレガントにしてスケーラブルだけど、ちょっとゴテゴテして大げさな感じ。規約(約束事)ベースなので、最初は覚えることが多い……。

というフレームワークが追加されてきた。でも、こいつらはいかんせんデカい。パワフルだけれど、小回りが利かない。というわけで、

  • ASP.NET Web Pages:ASP.NET MVC の大げさな部分を取り去った軽量な、どちらかといえば初心者向けフレームワーク

が生まれたというわけ。

Web Forms が一体成型のプレートアーマー、MVC をいろんなパーツから成る着脱式の日本鎧とするなら、Web Pages はさしずめ忍者スーツやな。

小さく、単純で、シームレス

ASP.NET Web Pages の対象となるユーザーはソフトウェアの専門家ではありません。また、作成するサイトは極めて単純なので、非常に単純なプロジェクトに従事する Web 開発者が対象となります。このユーザーは、

  • 単一ページモデル
  • コードとビューを記述するために単純化された方法(要は Razor 記法)

といった、さらなる単純さの恩恵を受けることになります。ASP.NET Web Pages には、

  • WebMatrix という IDE
  • IIS Express という IIS の簡易バージョン

が含まれています。特に WebMatrix は、サーバーコード、マークアップ、データベーステーブルを1つのデザイナー環境にまとめて、

  • ページの記述
  • サイトへの発行

をワンステップで行えるようにします。

ASP.NET は当初、おもにエンタープライズ向けだったので*2、最初からコンポーネント化(Web Forms)や役割の分担(MVC)を図った大規模フレームワークがドーンとあった。でも、それだけでは初心者が足を踏み入れ難い。大規模な Web サイトならともかく、“ペラいち”*3の Web サイトまで Web Forms や MVC で作るなんて、ちょっとメンドクサイというか、意味ワカンナイ。

その点、Web Pages は“ごちゃ混ぜ”だけど単純。基本的に、1ファイルのソースコードが 1つの Web ページ。ロジックもビューも一緒に書いちゃう(コードとビューの結合)。でも、ちょっとした用途ならば、むしろこれがわかりやすい。

Perl や PHP、Ruby がそこから初めて大規模なフレームワークを載せていくように進化したのとはまったく逆のベクトルで生まれているのが、ちょっと面白いかも。

まとめ

ASP.NET Web ページというのは、その名の通り“Web ページを書くための ASP.NET 技術”で、ほとんど Razor 構文のことです。たぶん。

*1:たとえば、ボタンをドラッグ&ドロップでフォームに配置して、イベントハンドラをゴリゴリ書いていくスタイル

*2:たぶん、知らんけど

*3:紙一枚の意