対象読者
- 新しいASP.NET Coreの機能について知りたい方
- MacやLinuxなどでASP.NET Coreアプリケーションを動かしたい方
検証環境
本稿では、以下の環境で動作を確認しています。
- Windows 10
- macOS Sierra 10.12.6
ASP.NETとは? 歴史と概観を知ろう
まずはASP.NETについての概要を改めて確認していきましょう。
ASP.NETの概要
ASP.NETは、前身となるActive Server Pagesが1996年に登場して以来、MicrosoftにおけるWebのフレームワークとして広く利用されています。現在のASP.NETは、利用用途別にさらにサブフレームワークが複数存在しており、「Webアプリケーション用途」「Webサービス用途」の2つに大別できます。
それぞれ、以下のようなサブフレームワークが存在します。
- Webアプリケーション用途:「ASP.NET MVC」「Web Forms」「Web Pages」の3つ
- Webサービス用途:「ASP.NET Web API」「SignalR」の2つ
(1)ASP.NET MVC
2009年に登場し、現在ASP.NETでのWebアプリケーション開発の主流となっているフレームワークです。その名の通りMVC(Model-View-Controller)デザインパターンに沿ったWebアプリケーションを開発するためのフレームワークであり、Razorと呼ばれるビューエンジンを使ったビュー開発やスキャフォールディング機能を使ったCRUD機能の半自動生成、クラウドサービスであるMicrosoft Azureへのアプリケーションのデプロイといった開発支援機能もサポートしています。
(2)Web Forms
ASP.NETの中で最も古くから存在するフレームワークであり、サーバーコントロールと呼ばれるUI部品をドラッグ&ドロップで配置してアプリケーションを開発していきます。Windowsアプリケーションの流れをくんだ開発手法ではありましたが、単体テストの実行が難しかったり、固有の概念が多かったりなどの理由から、現在では利用される機会が減ってきています。
(3)Web Pages
PHPのようにHTMLの中にコードを埋め込むモデルを採用していますが、小規模利用を想定していることもあって、あまり普及していません。
(4)ASP.NET Web API
ASP.NETにおけるAPIの開発用フレームワークです。ASP.NET MVCでもAPIを作成することはできますが、Web APIの方が機能特化しているため使い分けて利用することが勧められています。
(5)SignalR
ASP.NETをリアルタイム通信に対応させるためのライブラリです。クライアントからのWebSocket、Server Sent Events、Forever Frame、Ajax Long pollingといった通信手段をライブラリが判別して最適な通信手段を選択するため、開発者が低レベルな手続きを意識しなくていいなどの特長があります。
ASP.NETとASP.NET Core
ASP.NETについて概要を確認しました。次はASP.NETとASP.NET Coreの違いについて見ていきます。
ASP.NET Coreは一言でいうと、「マルチプラットフォームに対応したASP.NET」です。厳密には、ASP.NET Coreの実行基盤にあたる「.NET Core」がマルチプラットフォームに対応しているためで、ASP.NET Coreはその.NET Core上で動作させることができるASP.NETです(図1の通り、.NET Framework上でも動作が可能です)。
その他にも、ASP.NET Core 2.0には後ほど説明するRazor Pagesという新しい手法が追加されていることや、SignalRがアルファ版であるといった相違点があります。
比較点 | ASP.NET | ASP.NET Core 2.0 |
---|---|---|
対応OS | Windows | Windows, macOS, Linux |
対応サブフレームワーク | MVC, Web Forms, Web Pages, Web API, SignalR | MVC, Razor Pages, Web API, SignalR(アルファ版) |
1台のマシンで実行できるバージョン | 1台に1バージョン | 1台で複数バージョン |
対応言語 | C#, VisualBasic, F# | C# |