連載ASP.NET 2.0が変えるWebアプリ開発の世界第1回 周辺技術が支えるASP.NET 2.0の進化山田 祥寛2004/09/29 |
|
|
●新しいコードビハインド・モデルを採用
従来のASP.NET 1.xでは、2つのプログラミング・モデルを採用していた。1つに、「.aspx」ファイル内でHTMLとコードが共存する「ページインライン」モデル。そして、もう1つが、HTML部分を「.aspx」ファイルに、コード部分を「.aspx.vb(または.aspx.cs)」に分離する「コードビハインド」モデルだ。
ページインライン・モデルとコードビハインド・モデル |
比較的小規模なサイトで単独の人間が開発を行っているようなケースでは、ページインライン・モデルの方がファイル管理も容易だ。一方、中規模以上のサイトで、レイアウト部分はデザイナーが、コード部分はプログラマが、というように分担作業を行っているようなケースでは、ファイルそのものを分割できるコードビハインド・モデルを採用するのが好ましい(ちなみに、エンタープライズ用途での利用を主眼に置いたVS.NET 2003ではコードビハインド・モデルを、パーソナル用途を主眼に置いたWeb Matrixではページインライン・モデルを採用している)。
特にコードビハインド・モデルは、ASP.NETの特徴的なモデルの1つであったが、旧来のコードビハインド・モデルには1つ厄介な問題が含まれていた。それは、「.aspx」ファイルで使用しているサーバ・コントロールと同型同名のフィールドを、「.aspx.vb(もしくは.aspx.cs)」ファイルでも明示的に宣言しなければならなかったという点だ。VS.NET 2003では、この定型的な記述をIDEが自動的に生成していたが、それでもその長大なコードが常につきまとっているのはうっとうしいものであったし、そもそも開発者が誤って変更してしまうような危険性も伴っていたわけだ(デフォルトでは、#Region〜#End Regionブロックによって不可視の状態になっているにせよ)。また、テキスト・エディタで開発している人間にとっては、クラスの宣言という行為自体が過ちを犯しやすいものであった。
そこで、ASP.NET 2.0では新しいコードビハインド・モデルを導入している。それは、VB.NET/C#で新たに導入された「パーシャル・クラス(C#では、パーシャル・タイプ)」を利用したモデルだ。具体的には、VS 2005で作成したDefault.aspxとDefault.aspx.vbを見てみよう。
|
|
VS 2005により生成されたDefault.aspx |
|
|
VS 2005により生成されたDefault.aspx.vb |
Default.aspxに新たな@Pageディレクティブの属性として、CompileWith属性が追加されているのがお分かりになるだろうか。また、Default.aspx.vbからは、サーバ・コントロールをインスタンス化するコード・ブロックがきれいさっぱり取り除かれ、見慣れない「Partial」というキーワードが先頭に付加されていることにお気付きになるだろう。
CompileWith属性は、「.aspx」ファイルとともにコンパイルするソース・コードを指定するための属性だ。つまり、ここでは「.aspx」ファイルを基にASP.NETが自動生成したクラス定義のコードと、ソース・コード本体であるDefault.aspx.vbとを1つのクラスとして、コンパイル処理しているわけである。Partialは、1つのクラスを複数のファイルに分離するための新しいキーワードだ。
新しいコードビハインド・モデルの採用によって、開発者は冗長なクラス定義のコードを目にしなくても済むようになった。VS 2005のソース・コードには、もはや開発者にとって「必要な」コードしか含まれない。
●インテリセンス機能の強化
VS 2005では、大幅にインテリセンスの機能が強化された。従来からあったプログラム・コードやHTMLの補完はもちろん、ディレクティブ、web.config、そのほかスキーマを持つXMLファイルに対してもインテリセンス機能が有効になった。
後述するように、ASP.NET 2.0では、web.configの編集を容易にするためのツールも用意されているが、ちょっとした修正をコード・エディタ上で行いたいというケースは決してなくならないだろう。そのような場合に、このインテリセンス機能の強化は心強い味方である。
web.configに対しても適用可能になったインテリセンス機能 |
現在のコンテキストで利用可能な要素/属性名、属性値の候補を自動表示する。 |
HTMLコードの検証に際して、対象ブラウザを明示的に選択できるようになったのもうれしい。これによって、[ソース]モードでは、対象ブラウザ(スキーマ)に合わせて、補完されるタグの候補を切り替えることができる。ASP.NETでは、特定のクライアントを意識したコーディングを行うことはさほどに多くないが、対象ユーザーがある程度限定される企業内システムを構築するような場合、このような検証機能は有効だろう。
次の画面は、[HTMLソースの編集]ツールバーにより、実際に対象ブラウザを指定しているところだ。
[HTMLソースの編集]ツールバー |
[HTMLソースの編集]ツールバーでは、対象となるブラウザを選択可能。そのほか、ページのアクセサビリティのチェックを検証することもできる。 |
また、小さなことではあるが、[ソース]モードの強化に伴い、[デザイン]モードに切り替えても、HTMLのソースが自動的に再整形されることがなくなった。VS.NET 2003までは、もっぱらフォーム・デザイナが自動生成したHTMLのコードには手を入れるな、という姿勢だったものが、VS 2005では自前でHTMLのソースを微調整するようなケースにも柔軟に対応しているというわけだ。これまでVS.NET 2003の勝手な整形に悩まされてきた方も多いと思うが、今後はそのようなストレスからは解放されることになる。
●コンパクトになったファイル構成
旧来のVS.NET 2003では、ソリューションやプロジェクトの作成に伴って、さまざまなプロジェクト・ファイルがVS.NETによって自動生成されていた。「.sln」ファイルや「.vbproj(もしくは.csproj)」ファイルなど、VS.NETの管理上でのみ必要なファイルは、本番環境に移行するタイミングでいちいち取り除く必要があったわけだ。
しかし、VS 2005では実行に必要なファイルのみが生成される。本来の実行には不要なプロジェクト・ファイルが、アプリケーション・フォルダに展開されなくなったので、開発環境から本番環境へのアプリケーションの配置がより容易になった。
VS 2005で作成したプロジェクトの中身 |
VS 2005では、プロジェクト管理のためのファイルが廃止となった。プロジェクトの配下には、アプリケーションの実行に必要なファイルのみが格納される。 |
ASP 2.0は、ここまでに述べてきたようなVS 2005自体の新機能によって強化されただけではなく、.NET Framework 2.0の新機能による進化も大きい。それでは、.NET Framework 2.0の新機能について見ていこう。
INDEX | ||
ASP.NET 2.0が変えるWebアプリ開発の世界 | ||
第1回 周辺技術が支えるASP.NET 2.0の進化 | ||
1.Visual Studio 2005新機能「簡易Webサーバ」と「配置」 | ||
2.Visual Studio 2005新機能「インテリセンス」と「構成」 | ||
3..NET Framework 2.0新機能「事前コンパイル」 | ||
4..NET Framework 2.0新機能「サイト管理」 | ||
「ASP.NET 2.0が変えるWebアプリ開発の世界」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|