Kプロジェクトのまとめ
ここで一度、vNextアプリケーションの特徴について整理してみましょう。
- 必要なアセンブリを実行時に取得(Project.json)
- 事前コンパイル不要、実行時の動的なコンパイル(Roslyn)
- IISに依存しないライブラリ群(Microsoft.AspNet名前空間)
- Windowsのインストール状況に依存しない.NET Framework(CoreCLR)
このような特徴から、vNextでは、C#のコード群を配置するだけで、簡単にWebアプリケーションを実行できるようになります。
Kプロジェクトを知る上で、OWIN/Katana/HeliosといったASP.NETを取り巻く新しい流れについても理解しておくと良いでしょう。
OWIN(Open Web Interface for .NET)とは、.NETにおけるWebサーバーとWebアプリケーションを疎結合にするためのインターフェース仕様です。そのOWIN仕様を実現するプロジェクトがKatana Projectです。Katana Projectによって、IIS以外の環境でもASP.NETアプリケーションを動かせるようになりました。そして、HeliosはSystem.Webに依存しない軽量のライブラリで、IIS上で軽量のOWINサーバーとして動作します。
OWIN/Katana/Heliosが登場した背景や詳細についてはChannel9の日本語動画が参考になります。
Kプロジェクトを構成する要素
続けてvNextのアプリケーションを動かすKプロジェクトの構成要素について理解していきましょう。本稿では、Kプロジェクトを理解するために、セットアップ/ビルド/サーバー起動の流れをコマンドプロンプトだけで実行してみます。
KVM、KRE、KLR、KPM、Kとは
Kプロジェクトのアプリケーションをビルドして動作させる環境はKRE(K Runtime)と呼ばれます。KREをインストールすると、実行時の本体であるKLRコマンド、アプリケーションを起動するKコマンド、パッケージを管理するKPMコマンドがインストールされます。そして、そのKREのバージョンを管理するコマンドがKVMコマンドとなります。
コマンド/要素 | 概要 |
---|---|
KRE | Kランタイムエンジン。vNextアプリケーションを管理。KLR/KPM/Kコマンドが含まれる(JavaにおけるJREのようなもの) |
Kコマンド(k.cmd) | vNextアプリケーションを起動するコマンド。内部的にKLRを呼び出す。 |
KLRコマンド(klr.exe) | Kランゲッジランタイムコマンド。vNextアプリケーション本体(Javaコマンドのようなもの) |
KPMコマンド(kpm.cmd) | Kパッケージマネージャ。Project.jsonに従ってNuGetサーバーからDLLを取得(Node.jsにおけるNPMのようなもの)。内部的にKLRを呼び出す。 |
KVMコマンド(kvm.cmd) | Kバージョンマネージャー。KREのインストールとバージョンを管理(Node.jsにおけるNVMのようなもの) |
コマンドプロンプトでKプロジェクトを実行
それでは、MicrosoftがGitHubで公開している最新のソースを取得して、vNextアプリケーションを実行してみましょう。なお、現時点で必要な環境はWindows 7/Windows Server 2008 R2以上、.NET 4.5.1です。Mac OSX/Linuxの場合、Mono 3.4.1以上(bash/zshとcurlが必要)となります。
GitHubからvNextのHomeをダウンロード
まず、GitHubのASP.NET Homeのページから最新ソースを取得します。GitHubのASP.NET Homeページで、Download ZIPボタンをクリックします。
ダウンロードしたZIPファイルを解凍して、任意のフォルダ(ここではC:¥CodeZine¥home-master)に展開します。解凍したフォルダの中にKVMコマンド(kvm.cmd)があることを確認しておきます。