ASP.NET
|
|
さて、C#でWebアプリケーションを作るためのフレームワークがASP.NETよ。
|
|
|
細かく言うと、ASP.NETには2系統あるのね。
・ASP.NET Webフォーム ・SP.NET MVC っての。 |
両方に共通するのは、WindowsのWebサーバー機能であるIIS(Internet Information Services)ってのの上で動いていること。まあ、オープンソースなプロジェクトで、Linux向けの移植もあったりはするけども。あと、.NET Frameworkの標準ライブラリは、どちらでも使えるわ。
|
|
じゃあ、2つの違いについて説明して行きましょうか。
|
ASP.NET Webフォーム
|
|
1つ目のASP.NET Webフォームは、Webの仕組みをASP.NETが隠ぺいしてくれていて、デスクトップアプリケーションと同じ感覚でWebアプリケーションを作れるものなの。
|
デスクトップアプリケーションを作りなれた人なら、すぐになじめると思うわ。前に説明した、ルーティングとかHTMLテンプレーティングとかも、あまり考える必要ないのよ。
ただ、隠ぺいされた部分を知らないまま作ってると、通信量が膨れ上がっちゃって性能が出なかったりするので注意も必要。
それに、最近の若い子なんかは、Web全盛の時代に育ってて、逆にデスクトップアプリケーションの作り方の方がなじめないかもしれないわねぇ。アプリケーションの利用者(エンドユーザー)にとっても同様で、ASP.NETがWebっぽいところを隠ぺいしようとしているせいで、アプリケーションの使い勝手が悪いと感じる人がどんどん増えてるみたい。
ASP.NET MVC
|
|
そこで、Web育ちなWebっ子向けに、Webらしい部分を隠さないフレームワークを作ったのが、ASP.NET MVCというわけ。
|
|
|
PHPとかJava、PythonなんかでよくあるWebフレームワークと同じような構造してるわよね。
|
|
|
そう。MVCという名前も、Webフレームワークではよく、MVC(Model-View-Controller)パターンって構造が使われてて、ASP.NETもそのMVCパターンで作れますという意味だし。
|
例えば、Visual Studioで、ASP.NET MVCアプリケーションを作成すると、以下のようなプロジェクトが生成されるわ。
Controllersフォルダー以下に入っているControllerと付くクラスは、ルーティングの結果呼ばれる処理を書く部分で、Viewsフォルダー以下に入っているcshtmlという拡張子のファイルがHTMLテンプレートよ。
ASP.NET MVCのルーティング
ASP.NET MVCのルーティングは、開発者がカスタマイズすることもできるんだけど、デフォルトだと以下のような感じ。
URLの、最初の階層がContollerクラス名に対応していて、2つ目がメソッド名。クエリ文字列(URLの最後&から後ろの部分)や、POSTデータ(HTMLの<form>タグで入力したデータ)は、メソッドの引数として渡されるわ。
|
|
この対応付けのルールを覚えるまではちょっと戸惑うわねー。
|
ASP.NET MVCのHTMLテンプレーティング
さて、Controllerの中身まで見てみると、戻り値のところにView()とだけ書かれてる。これは、HTMLを作って返すという意味なんだけど、どのHTMLテンプレートを元にHTMLを生成するかは、デフォルトでは以下のようなルールになっているわ。
Controllerクラス名やメソッド名に応じて、Viewsフォルダー以下のcshtmlというファイルが選ばれるの。で、このcshtmlの中身は、たとえば、About.cstmlの冒頭部分を抜き出すなら以下のような感じ。
@{
ViewBag.Title = "About Us";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
<h2>@ViewBag.Message</h2>
</hgroup>
<article>
<p>
…
これは、Razorと呼ばれる構文で、C#とHTMLを混在させたようなものになってるわ。アットマーク(@)から始まる部分がC#で、その他の部分はHTMLそのまんま。@{}で囲った部分は全部がC#になるけども、@ViewBag.Title みたいな部分は、プロパティの参照だけC#で、その後ろはHTMLに戻るわ。そして、ここで出てくるViewBagには、Controllerクラス側で与えたデータが入っているの。
まとめ
|
|
あの子最後まで帰ってこなかったわね。
|
|
|
いいんじゃなーい。わたしの出番増えるし♡ まとめ、やっちゃおーう。
|
|
|
はいはい。
|
|
|
えーっと、ウェブアプリケーションでやることは…
(1)ルーティング(URL→呼び出す処理の対応付け) (2)アプリケーション本体の処理 (3)HTMLテンプレーティング の3つね。 |
|
|
このうち、1と3は、大部分をフレームワーク側が担ってくれて、フレームワークごとに少し流儀が異なるわ。ASP.NET Webフォームだと、ASP.NETが隠ぺいしてて、開発者はあまり意識しなくて済んだりも。2がアプリケーションの本体なんだけど、ここはフレームワークによらず共通よ。
|
|
|
さて、後編では具体的な実装かしら。ASP.NET MVCの方を使って、実際にランキングを作ってみましょー。
|
おなじみ、お便りコーナーです♪いつも素敵な似顔絵ありがとうございます!今後も引き続き、似顔絵やお手紙随時募集中です。
さて、またまたC#たんがゲスト出演!雑誌や大手サイトにも載っちゃいました♪ こちらもぜひご覧ください。
