「ASP.NET MVC」の版間の差分
imported>Administrator |
|||
35行目: | 35行目: | ||
== MVC == | == MVC == | ||
MVCとは「Model(モデル)、View(ビュー)、Controller(コントローラ)」の頭文字をとった1980年代にSmalltalkで確立されたアプリケーションのアーキテクチャパターン。 | MVCとは「Model(モデル)、View(ビュー)、Controller(コントローラ)」の頭文字をとった1980年代にSmalltalkで確立されたアプリケーションのアーキテクチャパターン。 | ||
− | + | モデルはデータとビジネスロジック(業務処理)、ビューは表示処理、コントローラはモデルとビューの連結を担当する。 | |
− | + | === モデル === | |
+ | モデルはビジネスロジックを記述するものだが、作り手によっては単純にデータベースとのマッピングをモデルとなっておりコントローラにビジネスロジックが書いてあるようなシステムも結構見かける。 | ||
+ | === ビュー === | ||
ビューは名前の通り見た目を表す部分を記述する。ウェブアプリであればHTMLテンプレートに相当する。 | ビューは名前の通り見た目を表す部分を記述する。ウェブアプリであればHTMLテンプレートに相当する。 | ||
+ | 最近流行のjQueryあたりを使ってJavaScriptでゴリゴリ動かす処理などもビューである。 | ||
+ | === コントローラ === | ||
コントローラは、モデルとビューを繋ぐ役割を担う。コントローラは大きくわけてページコントローラ方式とフロントコントローラ方式があり、ASP.NET MVCではフロントコントローラ方式が採用されている。 | コントローラは、モデルとビューを繋ぐ役割を担う。コントローラは大きくわけてページコントローラ方式とフロントコントローラ方式があり、ASP.NET MVCではフロントコントローラ方式が採用されている。 | ||
+ | |||
+ | ASP.NET MVCでは、すべてのリクエストはフロントコントローラで受け、ルーティングに従い、個々のコントローラクラスのアクション(クラスメソッド)を呼び出す。 | ||
+ | |||
+ | {{stub}} | ||
+ | |||
+ | == ルーティング == | ||
+ | リクエストURIを、あらかじめ決められたルールに基づいていくつかのパラメータに分解し、その内容に従って適切なコントローラ・クラスを選択する処理のこと。 | ||
+ | |||
+ | {{stub}} | ||
+ | |||
+ | == アクション == | ||
+ | アクションとは、フロントコントローラから呼び出されるエントリーポイント。 | ||
+ | モデルにデータを渡してごにょごにょさせ、その結果をビューに渡すのが役割。 | ||
+ | |||
+ | 書こうと思えばアクションに壮大なビジネスロジックがかけてしまうが、あまりおすすめできないそうだ。モデルを作るまでもない簡単なロジックなら組み込んでも良い気もする。 | ||
+ | |||
+ | ASP.NET MVCのアクションは必ずActionResultクラスのインスタンスを返すことになっている。 | ||
+ | ActionResultの種類など、詳細は「[[ActionResult クラス (System.Web.Mvc)]]」を参照。 | ||
+ | |||
+ | {{stub}} | ||
+ | |||
+ | == マスターページ == | ||
+ | ウェブサイトを作るうえで、ヘッダやフッタなどの大枠のデザインは統一されるのが一般的ということで、大枠部分をテンプレート化しておける機能(テンプレートファイル)をマスターページという。 | ||
+ | |||
+ | 便利。 | ||
{{stub}} | {{stub}} | ||
48行目: | 77行目: | ||
ビューヘルパーとはデザインパターンのひとつ。 | ビューヘルパーとはデザインパターンのひとつ。 | ||
簡単に言うと「ビューの中に複雑なロジックを書くな」という掟。 | 簡単に言うと「ビューの中に複雑なロジックを書くな」という掟。 | ||
− | + | ヘルパークラスに静的メソッドを用意して、複雑なロジックはそこに記述し、デザイナーなどのプログラマー以外の人も触るであろうビューでは簡潔に1行で書けるようにして、見通しを良くしておきましょうというお話らしい。 | |
ASP.NET MVCではよく使われるであろうビューヘルパーがあらかじめいくつか用意されている。 | ASP.NET MVCではよく使われるであろうビューヘルパーがあらかじめいくつか用意されている。 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
{{stub}} | {{stub}} | ||
2012年3月14日 (水) 08:19時点における版
ASP.NET MVCとは、Webアプリケーション開発のためのフレームワークである。
Monoを用いて動かす方法などについてはxspやmod_monoの項目も参照。
目次
ASP.NET と ASP.NET MVC
ASP.NET MVCは、ASP.NET(無印)と名称が非常に似ているが、まったくの別物である。 どちらかというとASP.NET MVCは元祖ASP(.NETが付く前)に近い。
大事なことなのでもう一度言うが、ASP.NET MVCとASP.NETはまったくの別物である。
このようなクソな名称を採用したマイクロソフトのセンスの無さには驚愕する。
ASP.NET(無印)とASP.NET MVCの唯一の共通点は、ASP.NET MVCで用いるデフォルトのビューエンジン(PHPでいうSmarty、RubyのeRuby/erbに相当)で用いるテンプレートファイルの拡張子がaspxである点くらいである。拡張子は同じだが、ASP.NET(無印)のaspxファイルは人間が直接触ることを想定していないのに対して、ASP.NET MVCでは至って普通のHTMLテンプレートファイルであり、本当に共通点は拡張子だけある。
しかもASP.NET MVC 3からはRazorという新型ビューエンジンが導入され、HTMLテンプレートファイルの拡張子も.cshtmlまたは.vbhtmlとなってしまったため、拡張子という共通点すら無くなった。
概要
従来のASP.NETでは、Windowsアプリケーションに近い開発スタイルが取られており、HTMLを気にせず、ビジュアル・デザイナーでGUIアプリケーションを作るような感じで開発を行うというものであった。逆を言えばHTMLは実行時に自動生成されるものであり、人間が直接編集するものではないという独特のシステムであった。
一方でWebアプリケーション開発で主力であるPHPやPerl、Pythonの開発者からしたら、HTMLを触れないとか意味不明すぎて誰もが敬遠し、クソだクソだと口コミが広まった。
こうした批評をうけ、PHPとSmartyの組合せのようなシンプルなものを、装いも新たに実装したのがASP.NET MVCである。
Mono
ASP.NET MVCをMonoで利用に関しての特記事項を記載する。 その他にも色々あるだろうが、個人的にはまった部分について記載しておく。
ハンドラーの強制変更
詳細は「mod_mono#ASP.NET MVCを使うための設定」を参照。
ファイル名の大文字小文字
Windowsはファイル名の大文字小文字は区別しないが、Linux/Unixではファイル名の大文字小文字を区別するため、この点を考慮していないウェブアプリは注意。 個人的にはASP.NET MVCで「マスターページが見つからない」というエラーではまった。
MVC
MVCとは「Model(モデル)、View(ビュー)、Controller(コントローラ)」の頭文字をとった1980年代にSmalltalkで確立されたアプリケーションのアーキテクチャパターン。 モデルはデータとビジネスロジック(業務処理)、ビューは表示処理、コントローラはモデルとビューの連結を担当する。
モデル
モデルはビジネスロジックを記述するものだが、作り手によっては単純にデータベースとのマッピングをモデルとなっておりコントローラにビジネスロジックが書いてあるようなシステムも結構見かける。
ビュー
ビューは名前の通り見た目を表す部分を記述する。ウェブアプリであればHTMLテンプレートに相当する。 最近流行のjQueryあたりを使ってJavaScriptでゴリゴリ動かす処理などもビューである。
コントローラ
コントローラは、モデルとビューを繋ぐ役割を担う。コントローラは大きくわけてページコントローラ方式とフロントコントローラ方式があり、ASP.NET MVCではフロントコントローラ方式が採用されている。
ASP.NET MVCでは、すべてのリクエストはフロントコントローラで受け、ルーティングに従い、個々のコントローラクラスのアクション(クラスメソッド)を呼び出す。
ルーティング
リクエストURIを、あらかじめ決められたルールに基づいていくつかのパラメータに分解し、その内容に従って適切なコントローラ・クラスを選択する処理のこと。
アクション
アクションとは、フロントコントローラから呼び出されるエントリーポイント。 モデルにデータを渡してごにょごにょさせ、その結果をビューに渡すのが役割。
書こうと思えばアクションに壮大なビジネスロジックがかけてしまうが、あまりおすすめできないそうだ。モデルを作るまでもない簡単なロジックなら組み込んでも良い気もする。
ASP.NET MVCのアクションは必ずActionResultクラスのインスタンスを返すことになっている。 ActionResultの種類など、詳細は「ActionResult クラス (System.Web.Mvc)」を参照。
マスターページ
ウェブサイトを作るうえで、ヘッダやフッタなどの大枠のデザインは統一されるのが一般的ということで、大枠部分をテンプレート化しておける機能(テンプレートファイル)をマスターページという。
便利。
ビューヘルパー
ビューヘルパーとはデザインパターンのひとつ。 簡単に言うと「ビューの中に複雑なロジックを書くな」という掟。 ヘルパークラスに静的メソッドを用意して、複雑なロジックはそこに記述し、デザイナーなどのプログラマー以外の人も触るであろうビューでは簡潔に1行で書けるようにして、見通しを良くしておきましょうというお話らしい。
ASP.NET MVCではよく使われるであろうビューヘルパーがあらかじめいくつか用意されている。
その他