05. Web アプリの仕組み

トップどんと来い! ASP.NET > 05. Web アプリの仕組み

Web アプリとは?

これまで実際にアプリを組んできましたので、このあたりで Web アプリケーションそのものについて理解してみようと思います。

Windows アプリケーションは、アプリケーション自体をダウンロードし、インストールまたは解凍することで動かすことができます。これは自分のパソコン上にあるアプ リケーションが、自分のパソコンの上で動いています。これがいわゆる「普通のソフト」であると考えられます。

この普通のソフトの中には、ネットワーク対応型ゲームなど、ネットワークでの扱いを前提として作られたものも含まれます。これらはネットを利用しているも のの、実際に動いているのは自分のパソコン上ですから、Web アプリケーションとは言いません。
また、普通のソフトの中には、Windows アプリケーション以外にも  Linux など他のプラットフォームで動作するものも、実際に自分のパソコンの中で動かす場合は普通のソフトです。

しかし、掲示板をダウンロードして自分のパソコンで使ったことのある人はいるでしょうか?
アクセスカウンタを見るのにダウンロードしたことがあるでしょうか?

皆さんはブラウザからそれらを閲覧したと思います。決してダウンロードして実行したわけではありません。
ダウンロードせずに、サーバ上にある掲示板をそのまま実行したのです。

このようなタイプのアプリケーションを Web アプリケーションと呼びます。
この Web アプリケーションはサーバ上で実行して、HTML ファイルを生成する場合がほとんどです。そのため、ネットサーフィンをして HTML ページを見るのと同じ感覚で実行し、見ることができるのです。

言語の種類

Web アプリケーションはサーバ上で動く、ということは説明しました。ここでは、Web アプリケーションを記述する言語の種類について簡単に説明します。

最もポピュラーな言語は、Perl 言語を利用した CGI です。これはテキスト処理に優れ、多くの部分で利用されています。ステップアップC# のアクセスカウンタはこれです。
また、PHP というものもありますが、これは Perl を拡張したようなもので、Dokiwiki がこれで構成されています。

これらが、ほとんど一般的な Web アプリケーションです。Web サイトをお持ちの方は自分の Web アプリケーションが何で構成されているかをご確認ください。大半が、CGI であろうと思います。

しかし、時代は大きく変わってきました。アプリケーションの規模は大きく、そして複雑になりました。そうなると、インタープリタでオブジェクト指向が入っ ていない Perl ではシステムの管理が大変なコストになります。
インタープリタというのはコードを逐次解析・実行するもので、C/C++ 等のコンパイラ言語と反対に位置します。

別に Perl で書けないがあるわけではありません。現在の Perl は非常に拡張され、オブジェクト指向が取り入れられてきた面もあります。しかし、大規模なコミュニティやショッピングサイトなどでは先ほど述べたように、 実際に作るときとそのシステムの管理が大変になります。

具体的に言うと、短期間の開発・メンテナンス性・安定性などが向上すればいいな、ということです。これらを実現したのが、ASP.NET です。ASP.NET は事実上、ASP とは互換性がありません。

ためしに、Microsoft.NET 関連最大コミュニティ GotDotNet(Japan) をご覧ください。このコミュニティはすべて ASP.NET で記述されています。
http://www.gotdotnet.com/japan/ (日本)
http://www.gotdotnet.com/ (アメリカ)

何が違うのか?

ASP.NET がこれまでの Web アプリケーションを構成する言語とは違うことは大体わかったと思います。
では、何が違うのでしょう?

まず簡単なところは、ASP.NET には HTML も HTML 文法のまま記述できるという点です。皆さんがお持ちの HTML ファイルが厳格であれば、その拡張子を [ .aspx ] にしたとたん、それは ASP.NET アプリケーションに変わります。
これまでのように、掲示板だけ CGI 、あとは HTML というようにサイト内でシステムを分けることなく、1つのサイトが ASP.NET だけで構成することができます。先ほどの GotDotNet もその一例です。

また、ASP.NET ではビジュアル部品とコードとを分離して記述することができます。これは同じページ内でという意味です。
つまり、掲示板なら実際に見えるテーブルや画像、テキストなどと、それらをクリックやロードしたときに動かすコードの部分をごちゃ混ぜにすることなく、分 けることができます。
この要素は先ほど述べた、短期間の開発・メンテナンス性・安定性の向上に大きく役立ちます。

さらに、これは画期的なことですが、Windows アプリケーションで利用する名前空間・クラスなどがそのまま使えます。
Windows アプリに使うクラスは System.Windows 名前空間に定義されているのは知っていると思いますが、その他の System.Drawing や System.Text 、System.IO 等の名前空間は、Windows / Web の両方から扱うことができます。
これはパワーアップといえるでしょう。現在は Windows と Web は必ずしもパワーが同じとはいえません。しかしこれからは Web アプリもパワーアップする可能性を秘めているのです。

これで終わりにしますが、最後にもうひとつ。最近では iPod ...ではなく、iモードや PDA などの多くのプラットフォーム、特にパソコン以外の環境からホームページを見ることが多くなりました。
そんな時、すべての環境から掲示板を閲覧できるようにしようと思ったらなかなか簡単にはいきません。

しかし、ASP.NET テクノロジはかなり抽象化しているため、個々の具体的なプラットフォームに柔軟に対応できます。すなわち、ASP.NET で作られた Web ページは、閲覧する環境に合わせて HTML を的確に生成するのです。

これが ASP.NET 、さらには Microsoft.NET 構想の正体です。
.NET は Windows アプリケーションを構成するためにあるのではなく、Web アプリケーションを構成するためにあるといっても過言ではないのです。