はじめに
本連載では、マルチプラットフォーム化が進む.NETと、そのWebアプリケーション開発フレームワークであるASP.NET Coreの全体像を俯瞰します。ASP.NET Coreは、アプリケーションの目的や開発スタイルに応じて選択することができる多彩なサブフレームワークを搭載しています。それらの基本的な性質や機能を読者に示すことで、ASP.NET Core導入の一助になることを目的とします。
対象読者
- 「Core」以前のASP.NETに慣れ親しんだ方
- Web開発の新しい選択肢としてASP.NET Coreを理解したい方
- ASP.NET Coreの多彩なフレームワークを俯瞰したい方
必要な環境
本記事のサンプルコードは、以下の環境で動作を確認しています。
-
macOS Big Sir / Windows 10 (64bit)
- .NET SDK 6.0.100
- Google Chrome 96
Razor PagesとMVVMパターン
まずは、Razor Pagesとはどのようなフレームワークなのか? ということを掘り下げていきましょう。
Razor Pagesとは?
Razor Pagesは、ASP.NET Core 2.0から導入された、「ページ指向」のWebアプリケーションフレームワークです。ページ指向とはどういうことかというと、ひとつのページにひとつのソースファイルが対応し、フォルダの構造がそのままサイトの構造になっているものです。あるページをユーザーに見せたいと思ったら、そのページを然るべきパスに置いていくことになります。これがRazor Pagesの基本であり、シンプルかつ直感的にわかりやすいフレームワークです(図1)。
ページのソースファイルは、ページの構造を記述する.cshtmlファイルと、後述するページモデルを記述する.cshtml.csファイルで構成されます。.cshtmlファイルには通常のHTMLタグとは別に、Razorと呼ばれるビューエンジンに基づくコードを埋め込むことができます。
Razorにおけるコードは、@から始まるRazor構文によって記述していきます。Razor構文では、変数やメソッド呼び出しによる式(インライン式)、まとまったコード(コードブロック)の実行などが可能です。以下は、Razor構文の例です。
<h1>@Model.Title</h1> // インライン式(コードナゲット) @{ // コードブロック @ViewBag.Title = "Content"; }
ASP.NET Web Formsなどの経験があるなら、<%……%>に相当するものと思えばよいでしょう。Razor構文によって書かれた部分は、ページの呼び出し時にサーバサイドでレンダリングされ、適切なHTMLタグやリテラルに置き換えられてWebブラウザで表示されます。Razor構文については、実際のファイルを見ながら後ほど説明していきます。
MVVMパターンとは?
Razor Pagesはページ指向のフレームワークと書きましたが、MVVMパターンに準拠したフレームワークであるとも言われます。これは、ASP.NET MVCがMVCパターンに準拠したフレームワークであることに対比しているのではないかと思われますが、このMVVMパターンとは何でしょうか?
まず、上述のようにMVVMパターンを取り上げる際に比較対象にされるMVCパターンがあります。MVCパターンは有名なので、MVVMパターンは知らないけどMVCパターンはよく知っているという人も多いのではないでしょうか? MVVMパターンについて掘り下げる前に、MVCパターンについて簡単におさらいしましょう。
MVCパターンとは、アプリケーションの構成要素をモデル(Model:M)、ビュー(View:V)、コントローラ(Controller:C)に分割し、それぞれが独立して協調しながら動作する設計モデルです(図2)。Modelはデータ処理、ビューはUIの構築、コントローラは要求の振り分けを行います。本連載で取り上げる予定のASP.NET MVCをはじめ多くのWebアプリケーションフレームワークで採用されていますが、単純なアプリケーションでも設計が煩雑になりがちで、コントローラに負荷が集中しがちという欠点もあり、それに代わる設計モデルが模索されてきました。
MVVMパターンは、MicrosoftのWPF(Windows Presentation Framework)やSilverlightに発した設計モデルと言われます。データ処理を扱うモデル(Model:M)とUIを担うビュー(View:V)の間にビューモデル(ViewModel:VM)が介在し、ビューとビューモデルの間は双方向のデータバインド(表示上の項目とデータ上の項目を結び付けること)という仕組みで、相互にデータの反映を行うようになっています(図3)。
Razor Pagesは、このMVVMパターンを取り入れたWebアプリケーションフレームワークです。上記にて、Razor Pagesにおけるページ(これをRazorページと呼びます)は.cshtmlファイルと.cshtml.csファイルから構成されると書きました。この.cshtmlファイルがビューに相当し、.cshtml.csファイルがビューモデル(Razor Pagesではこれをページモデルと呼んでいる)に相当します。モデルの部分は、アプリケーションの内容に応じて独自に構築します。ビューモデル(ページモデル)の基本的な部分はRazor Pagesが受け持ってくれますから、MVVMパターンを活かすのに特別な注意は不要です。
やや概念的に過ぎた感があるので、ここからは実際にアプリケーションを作成し、生成されるファイルの内容を見ながら具体的なところに踏み込んでいきましょう。