概要
ASP.NET は、Microsoft が開発したサーバサイトアプリケーションフレームワークです。
動的な処理はウェブサーバ上で行い、 クライアントには(普通の HTML などの)結果のみが表示されます。
ASP.NET のフレームワークを用いることで、 (人が直接操作することを前提に)結果を HTML で表示するウェブフォームや、 (プログラムから呼び出して使うことが前提の)SOAP と呼ばれる通信プロトコルでデータを返す XML ウェブサービスを簡単に作ることができます。
ここでは、ウェブフォームを中心に説明していきます。
例
ASP.NET のウェブフォームでは、HTML (ただし、拡張子は .html ではなく、.aspx にする)の中にプログラムを埋め込んだり、 「HTML + プログラムソースファイル」で開発ができます。
例として、現在時刻を表示するだけの単純な ASP.NET ウェブフォームを示します。 以下のような内容を、拡張子 .aspx を付けて保存するだけで OK です。
<%@ Page Language="C#" %>
<html lang="ja">
<body>
<p style="color:#0000ff;">
<%= DateTime.Now.ToString() %>
</p>
</body>
</html>
こうすると、 <% %> という特殊なタグでくくられた部分がサーバ上で解釈されて、 結果を該当箇所に埋め込んだ HTML が出力されます。
特にコンパイル作業なども必要なく、 この .aspx ファイルをサーバ上に置くだけで OK。 (サーバ側で拡張子 .aspx を ASP.NET アプリケーションとして認識する設定は必要。 「ASP.NET を使える」という触れ込みのサーバなら最初から設定済みのはず。) ページが始めて表示される際に、 自動的にコンパイルされて、 以後は .aspx ファイルや関連するファイルの中身が修正されるまでの間、 ページを表示するたびにコンパイル済みのバイナリが呼び出されます。
ちなみに、 この <% %> でコードを囲って書く方式は、 (ビジュアルとロジックが混ざるのがあまりよくないと言われていて) 非推奨とされています。 代わりに、以下のように、<script> タグを使ってロジックを分離します。
<%@ Page Language="C#" %>
<script runat="server" type="text/C#">
void Page_Load(object sender, EventArgs e)
{
this.label1.Text = DateTime.Now.ToString();
}
</script>
<html>
<body>
<form id="form1" runat="server">
<p>
<asp:Label runat="server" ID="label1" />
</p>
</form>
</body>
</html>
Page_Load というのは、このページが表示される際に呼び出される特殊な関数です。 属性に runat="server" と書いたタグの箇所には、サーバ側での処理の結果が表示されます。
先ほどの <% %> を使ったものや、 この .aspx ファイル中に直接 <script> タグを書くような方式は、 インラインコード(inline code)と呼ばれています。 これに対して、ASP.NET では、 .aspx ファイルとプログラムコードを完全に分離して書くことができます。 例えば、以下の通り。
using System;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.label1.Text = DateTime.Now.ToString();
}
}
}
<%@ Page Language="C#"
CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<html>
<body>
<form id="form1" runat="server">
<p>
<asp:Label runat="server" ID="label1" />
</p>
</form>
</body>
</html>
このような方式をコードビハインド(code-behind: ニュアンスとしては code behind the page、aspx ページの後ろに隠れたコード。「分離コード」と訳すことも。)といいます。 こうすることで、 完全にビジュアル(見た目・視覚的なデザイン)とロジック(処理内容・論理的なデザイン)を分離できます。 ビジュアルとロジックの分離によって、 ビジュアルデザイナーとプログラマーの分業がしやすくなるなどのメリットがあって、 ASP.NET では、このコードビハインド方式での開発が推奨されています。
ただし、この場合、コードの方はコンパイル作業が必要です。 (Visual Studio などを使えばコンパイルも簡単。)
ちなみに、 コードビハインドを使ってビジュアルとロジックを分離するという思想は、 「Windows Presentation Foundation」にも引き継がれています。
開発環境
ASP.NET は、ウェブフォームを作るにしろウェブサービスを作るにしろ、 全てテキスト形式のソースファイルで書くことができます。 なので、やろうと思えば、テキストエディタ一つあれば開発ができます。 (実際、前節の例はテキストエディタで書いてる。)
まあ、でも、普通は統合開発環境を使って開発します。 Visual Studio や、 その入門者向け無料サブセット版のVisual Web Developer 2005 Express Edition を使うのが一般的です。
ウェブサーバ
ウェブアプリケーションを使うためには、当然、ウェブサーバが必要になります。 「自宅でサーバを稼動させて・・・」なんてやる人はそう多くないので、 レンタルサーバを少し紹介。
というか、Microsoft のサイト中に ASP.NET ホスティングサービス情報があったりします。 無料で利用できるものとか、 ドメイン取得費無料・月額525円とかいう安いのもあるので、 気軽に試してみたい方はこのあたりを。
リンク
本格的に ASP.NET を勉強してみるつもりなら、 以下の辺りを。
- ASP.NET Developer Center
- 日本語公式サイト。
- ASP.NET クイック スタート チュートリアル
- Microsoft が提供するチュートリアル。 Microsoft はドキュメントの多言語対応に結構力をいれているので、 日本語的にも割りと安心して読めると思います。
- @IT 連載 プログラミングASP.NET
- こちらは@ITの記事。