なお、この記事は2014年に公開した『クラウド時代に最適化されるASP.NET vNextとは』を大幅に加筆修正しております。全3回に渡り、既存のASP.NET MVCとの相違点を中心に紹介します。
ASP.NETの歴史
1996年のActive Server Pages、2002年のASP.NET、2009年のASP.NET MVCというように、Microsoft社は約6年に1回のペースで新しいWeb技術を公開してきました。そして、ついに2016年「ASP.NET Core」を公開しました。最新のASP.NET Coreはオープンソースで開発されており、プラットフォームに依存しない柔軟な基盤となりました。本稿では、Visual Studioで生成される基本テンプレートを元に「ASP.NET Core」の概要についてご紹介します。
ASP.NET Coreとは
ASP.NET Coreは、ASP.NET 4.6の後継として「ASP.NET 5.0」という名前で呼ばれていた時もありましたが、最終的には「ASP.NET Core 1.0」という別系統のラインナップとなりました。ASP.NET Coreでの大きな違いは、動作するOS環境がWindowsに加えMacとLinuxに正式に対応したことです。
ASP.NET 4.6とASP.NET Core 1.0の主な相違点を見てみましょう。
名前 | ASP.NET4.6 | ASP.NET Core 1.0 |
---|---|---|
正式対応OS | Windowsのみ | Mac/Linux/Windows |
対応プラットフォーム | .NET Frameworkのみ | .NET Framework/.NET Core |
IISへの依存 | 有 | 無 |
MVC/WebAPI/WebPages機能 | ○(別クラス) | ○(統合済み) |
WebForm機能 | ○ | × |
WebService機能(asmxやWCF) | ○ | × |
オープンソース開発 | × | ○ |
これらの「機能」「プラットフォーム」「Webサーバー」「OS」の関係を整理すると下図のようになります。
これまで個別の機能であった「ASP.NET MVC」「WebAPI」「WebPages」は、ASP.NET Coreで再設計され、1つに統合されました。これらを含め、ASP.NET Coreではオープンソースで開発されていることも大きな特徴と言えるでしょう。
.NET Coreとは
ASP.NET Coreでは、従来の「.NET Framework」だけではなく、マルチプラットフォームで動作する「.NET Core」を使用できるようになりました。.NET Coreと.NET Frameworkの相違点についても見てみましょう。
機能 | .NET Framework | .NET Core |
---|---|---|
対応OS | Windowsのみ | Mac/Linux/Windowsなど |
インストール方式 | インストーラーで導入 | アプリケーション別に取得 |
主な特徴 | OSに1つの制約あり | アプリに応じて複数導入可 |
オープンソース | × | ○ |
実行コマンド | EXE実行またはDLL呼び出し | dotnetコマンドから呼び出し |
従来の.NET Frameworkでは、各サーバーにインストールする際、他アプリへの影響を心配してバージョンアップに慎重になる必要がありました。これに対して、.NET Coreでは、各アプリケーションがそれぞれ必要な.NETライブラリを利用できます。
さらに、Linux/Mac/Windows共通で使用できるコマンドラインインターフェース「dotnetコマンド」が用意されています。このコマンドを使用することで、リポジトリから取得してきたソースコードを、環境を意識することなく依存解決を行い、ビルドし、実行できるようになりました。
新しいWebサーバー「Kestrel」
従来のASP.NETアプリケーションではIISと連携して動作していましたが、ASP.NET CoreではIISに依存することなく動作します。libuvベースのKestrelという新しいWebサーバーが提供され、IISやNginxとの連携することもできます。