[ASP.NET Core 入門] 学習するための基礎知識を身につけよう

ASP.NET Core ASP.NET Core
スポンサーリンク

はじめに

.NET Core 3.0 がリリースされ、より効率的に開発が行えるようになりました。

これを機に ASP.NET Core を学習しようと思ったのですが、ググっても意外に情報が少なくどこから学習したら良いのか苦労しました。

そこで今回は、実際にコードを書く前に、ASP.NET Core の知っておくべき基礎知識について説明をします。

ASP.NET Core

従来の ASP.NET は、.NET Framework で動作するWebアプリケーションフレームワークです。IIS(Internet Information Services) と呼ばれるWindows 標準の Web サーバー で動作する Webアプリケーションを作成することができます。開発は Windows で行います。

一方 ASP.NET Core は マルチプラットフォームに対応しており、Windows、 macOS、Linux で動作する ASP.NET です。オープンソースとして提供されています。

ASP.NET Core を用いることで次のことができます。

  • Web アプリ、Web サービス、IoT アプリ、モバイルバックエンドの開発
  • 好みのOS(Windows, macOS, Linux)での Webサーバー構築や開発
  • ASP.NET は IIS でしか動作しませんでしたが、Nginx、Apache、Docker などでホストすることができる
  • などなど

Blazor

ASP.NET Core について学習を始めると、Blazor という単語が出てきます。

Microsoft のサイトの言葉を引用すると

Blazor は、.NET を使って対話型のクライアント側 Web UI を構築するためのフレームワークです。

https://docs.microsoft.com/ja-jp/aspnet/core/blazor/?view=aspnetcore-3.0

とあります。この説明の通り、Blazorはフレームワークです。

これまでの ASP.NET の場合は、C# や VB.NET 以外に、JavaScript や Angular、React といった知識も必要でしたが 、Blazor を使用すると JavaScript を使用することなく C# や VB.NET を用いてフロント側の UI (ブラウザに表示する画面)を構築することができるようになります。

Razor 構文

C# や VB.NET を用いてフロント側のUIを構築する時に使用するのが Razor 構文です。HTML を動的に生成したい場合は、以下の例のように、@をつけることで、プロパティやメソッドの値を出力することができます。

<p>@DateTime.Now</p>
<p>@DateTime.Now.ToString() </p>

もともと Razor 構文は、ASP.NET MVC で、サーバー側ビューの記述言語として提供されていましたので、ご存知の方もいらっしゃることでしょう。新しい ASP.NET Core では、JavaScript を知らなくても C# や VB.NET を知っていれば、サーバー側だけではなく、クライアント側のビューを記述することもできますので、学習コストを削減することができます。

Razor 構文を利用して HTML のコードを記述するファイルには、C# 用の「.cshtmlファイル」とVB.NET 用の「.vbhtmlファイル」があります。

WebAssembly

WebAssembly(公式サイトは https://webassembly.org/ ) というのは、ブラウザで動作するプログラミング言語のことで、略して Wasm とも呼ばれています。

WebAssembly は、FireFox、Chrome、Safari、Microsoft Edge など主要なブラウザが対応しています。

前述した Blazor によって C# や VB.NET で WebAssembly を作ることができるようになりましたの。結果としてC# や VB.NET で作成したコードをを主要のブラウザで動作させること可能になります。

Single Pages Application

Single Pages Application(略:SPA) とは、単一のページ(1枚のHTML)で、動的に複数のコンテンツ切り替えを行うことができるページを作成することができる技術です。

単一のページで作成するため、ページが遷移することなくコンテンツを切り替えることが出来ます。

コンテンツを切り替える流れは以下となります。

  • ページ上でユーザーがアクション(クリックやリストの選択など)をする
  • そのアクションに必要なデータをサーバーに要求する
  • サーバーから返ってきたデータ(大抵の場合 json です)を JavaScript などで処理をする
  • 処理結果をページに反映する

MVC

MVCは、Java や PHP, C#など、様々な言語でも使用されているデザインパターンですのでご存知の方も多いことでしょう。 ASP.NET Core の前身であるASP.NET でもMVCパターンを使用した開発が可能です。

MVCは、Model, View, Controller それぞれの頭文字を取ったものです。

ユーザーの入力を受け付けるのが View(ビュー)です。Viewは、HTMLを通して受け付けたデータを Controller(コントローラー)に渡します。Controller は View から受け取った入力を元に Model に処理を依頼したり、View に対してユーザーに表示を依頼したりします。Model はデータベースの操作をしたり、入力値のチェックなどを行います。

このように、それぞれ役割分担が明確になっており、HTML の表示については Web デザイナーさんに、Model や Controller はプログラマーさんにお願いするといった分業がかのうになります。

SignalR

SignalR は、リアルタイム、非同期、双方向通信を実現するためのライブラリです。

SignalR を利用することで、接続してきたクライアントに対してリアルタイムに情報をプッシュ配信することを可能にします。リアルタイムで通信が行えることで、チャットやリアルタイムゲーム、インスタントメッセージ配信などリアルタイムWeb機能を実現します。

SignalR は、可能な限り WebSocket を使用して通信をするのでが、WebSocket を使用しない場合は他の技術によって通信を行います。通信する技術に関係なく、同じアプリケーションコードを使用することができます。

WebSocket

WebSocket とは、Web においてクライアントとサーバー間で、双方向で通信を行うための仕組みです。

例えば、Web で実現するチャットアプリは、多数のクライアントが1つページにアクセスします。誰かが送信したチャットのテキストは、参加しているユーザーに配信する必要があり、このような場合に WebSocket が用いられます。

もともと Web の通信プロトコルは HTTP のみでした。このため「ロングポーリング(※)」という手法を使用して双方向通信を実現できるのですが、この手法は無駄が多く非効率のため WebSocket というプロトコルが作成されたというわけです。

※ロングポーリング:ポーリングとはサーバーへの定期的なリクエストのことです。ロングポーリングは、1)リクエストをサーバーに送信、2)サーバーはメッセージを受け取るまで接続を閉じない、3)メッセージがきたら応答を返す、4)クライアントは即新しいリクエストを送信する、という手法です。

 

Please follow and like us:

コメント

タイトルとURLをコピーしました