C#の基本を学んだ次は、Webの世界に飛び込んでみましょう! ASP.NET Coreは、Microsoftが提供するモダンで高性能なWebアプリケーション開発フレームワークです。Webサイト、Web API、マイクロサービスなど、様々なWebアプリケーションをC#で開発できます。
Webアプリケーションは、Webブラウザを通じてアクセス・利用されるアプリケーションのことです。皆さんが普段見ているウェブサイトの多くは、裏側でWebアプリケーションが動いています。
Webアプリケーションは、クライアントとサーバーが通信し合うことで機能します。ASP.NET Coreは、主にこの「Webサーバー」側(サーバーサイド)の処理をC#で記述するためのフレームワークです。
ASP.NET Coreは、従来のASP.NET (.NET Framework) を大幅に刷新した、最新のWeb開発フレームワークです。
ASP.NET Coreは、新しいWebアプリケーション開発のデファクトスタンダードとして広く採用されています。これからC#でWeb開発を始めるなら、ASP.NET Coreを学ぶのが最適です。
ASP.NET Coreには、開発するWebアプリケーションの種類に応じていくつかのモデルがあります。ここでは代表的な2つを紹介します。
主にWebサイトやWebアプリケーションのユーザーインターフェース(UI)を構築するためのモデルです。
Webサイトのユーザーインターフェースを持たず、データを提供するAPI(Application Programming Interface)を構築するためのモデルです。モバイルアプリや他のWebサービスなど、様々なクライアントからデータを取得・更新する際に利用されます。
Visual Studioを使って簡単なWebアプリケーションを作成する手順を見ていきましょう。
MyWebApp
)と場所を指定し、「次へ」をクリックします。プロジェクトが作成されると、基本的なWebサイトの構造が生成されます。
Pages
(Razor Pagesの場合) / Views
, Controllers
, Models
(MVCの場合): Webページの構成要素です。Program.cs
: アプリケーションの起動と初期設定を行うファイルです。appsettings.json
: アプリケーションの設定ファイルです。wwwroot
: 静的なファイル(CSS, JavaScript, 画像など)を置く場所です。Razor Pagesでは、.cshtml
ファイル(UI)と.cshtml.cs
ファイル(コードビハインド)のペアでページを構成します。
Pages
フォルダを右クリックし、「追加」>「Razor Page...」を選択します。Greeting.cshtml
)を指定して「追加」をクリックします。Greeting.cshtml
にはHTMLとRazor構文を、Greeting.cshtml.cs
にはC#コードを記述します。
<!-- Pages/Greeting.cshtml -->
@page
@model MyWebApp.Pages.GreetingModel
@{
ViewData["Title"] = "ご挨拶ページ";
}
<h1>@ViewData["Title"]</h1>
<p>あなたの名前を入力してください:</p>
<form method="post">
<input type="text" asp-for="Name" />
<button type="submit">送信</button>
</form>
@if (!string.IsNullOrEmpty(Model.Message))
{
<h2>@Model.Message</h2>
}
// Pages/Greeting.cshtml.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyWebApp.Pages
{
public class GreetingModel : PageModel
{
// ユーザーから入力された名前を保持するプロパティ
[BindProperty] // このプロパティにフォームの値をバインドする
public string Name { get; set; }
// 表示するメッセージを保持するプロパティ
public string Message { get; set; }
// GETリクエスト(ページが最初に表示されるとき)
public void OnGet()
{
// 初回表示時の処理(ここでは何もしない)
}
// POSTリクエスト(フォームが送信されたとき)
public void OnPost()
{
if (string.IsNullOrEmpty(Name))
{
Message = "名前を入力してください!";
}
else
{
Message = $"こんにちは、{Name}さん!";
}
}
}
}
@page
: このファイルがRazor Pageであることを示し、URLでアクセス可能にします。@model MyWebApp.Pages.GreetingModel
: このページで使用するC#のモデルクラスを指定します。@{ ... }
: C#のコードブロックを記述します。<form method="post">
: フォームを定義し、データ送信方法をPOSTに指定します。asp-for="Name"
: ASP.NET Coreのタグヘルパーで、フォーム要素とモデルのプロパティをバインドします。OnGet()
: ブラウザがページを初めてリクエストしたときに実行されるメソッドです。OnPost()
: フォームが送信されたときに実行されるメソッドです。[BindProperty]
: HTTPリクエストからこのプロパティにデータを自動的にバインドするよう指示します。Visual Studioのツールバーにある「デバッグ開始」(緑色の再生ボタン)をクリックするか、F5
キーを押すと、Webアプリケーションが起動し、ブラウザで表示されます。
URLの最後に/Greeting
を追加して、作成したページにアクセスしてみてください。
https://localhost:ポート番号/Greeting
ASP.NET Coreの基本的なWebアプリケーション開発の入り口に触れました。このフレームワークは非常に多機能であり、さらに学ぶべきことがたくさんあります。
Webアプリケーション開発は、日々進化する技術のスピードが速い分野です。しかし、C#とASP.NET Coreの堅牢な基盤があれば、様々なWebサービスを作り出すことが可能です。ぜひ、自分のアイデアをWebの世界で形にしてみてください。