特集
» 2015年05月19日 05時00分 公開

「最新.NET技術がよく分からない」と感じる人のための用語整理特集:ASP.NET 5を探る(2/3 ページ)

[かわさきしんじ,Insider.NET編集部]

DNXの構造

 では、DNXはどのような要素で構成されているのか。これを簡単にまとめたのが以下の図だ。

DNXの構成 DNXの構成

 DNXの役割は、ランタイムをホストするネイティブプロセスの実行、マネージコード側のエントリポイント(とはつまり、開発者が記述したアプリのエントリポイント)の発見、マネージコードで記述されたアプリのホストなどだ。そして、図にある通り、DNXではアプリのホストには.NET Frameworkのランタイム(図ではFull CLR)、.NET Coreランタイム(Core CLR)、monoランタイムが使用できる。図では一つのDNXに複数のランタイムが存在しているかのように書いているが、実際にはそうではなく、ランタイムごとに一つのDNXとなる。そして、どのDNXを現在の環境で使用するかを指定するのが、先ほど紹介したdnvmコマンドとなる。

 DNXには、DNXを構成するコンポーネント*1に加えて、dnxコマンドとdnuコマンドが含まれる。

  • dnxコマンド: 現在のDNXを使用して、アプリを実行する
  • dnuコマンド: NuGetクライアント。現在のプロジェクトのパッケージ管理を行う

 dnxコマンドは、コマンドラインからDNXアプリを実行する(セルフホストする)場合に使用する。dnxコマンドは、DNXへのエントリポイントとなり、ここからランタイムをホストするプロセスが作成されたり、作成したアプリのエントリポイントが呼び出されたりする。

*1 ランタイムで必要となる各種アセンブリは「ユーザーのホームディレクトリ\.dnx\runtimes\ランタイムの種類\bin」ディレクトリ以下に格納される。.NET Core CLRをランタイムとするDNXでは、ランタイム自身(Core CLR)とCoreFXと呼ばれるクラスライブラリの一部も格納される。.NET Framework(Full CLR)とmonoをランタイムとするDNXでは、ランタイムと基本クラスライブラリはDNXとしては配布されない。


用語:dnxコマンド

dnxコマンド: 現在のDNXを使用して、アプリを実行する。旧称は「k」コマンドあるいは「klr」コマンド。

dnxコマンドは通常、「dnx アプリのベースディレクトリ コマンド」という形式で実行する。ただし、これはシンタックスシュガーであり、例えば「dnx . kestrel」というよく見られるdnxコマンドラインは「dnx --appbase . Microsoft.Framework.ApplicationHost kestrel」の省略形と考えてよい。

上記のコマンドラインに含まれる「Microsoft.Framework.ApplicationHost」がランタイムをホストする。そして、「dnx 〜 kestrel」というコマンドラインから察するに、そこからMicrosoft.AspNet.Hostingアセンブリ(のProgram.Mainメソッド)が呼び出されて、そこからWebサーバーであるKestrelが起動された後、最終的にアプリのエントリポイントが呼び出されてアプリの実行が開始されることになるだろう。

この内容と上記のDNXの構成図をつきあわせると、DNXがどんな処理をしているのかが何となく把握できるのではないだろうか。


 dnuコマンドは、現在のプロジェクトのパッケージ管理を行う(ここでいうプロジェクトは、コマンドプロンプトやシェルのカレントディレクトリ以下に格納されているアプリのこと)。

dnuコマンド dnuコマンド

 DNXでは、プロジェクトが必要とするパッケージはdnuコマンドを使って管理する。ASP.NET 5を構成するアセンブリもその例外ではない(そのため、上の図では矢印を「ASP.NET 5」にも引いてある)。

用語:dnuコマンド

dnuコマンド: DNXでアプリを開発する際に使用するユーティリティコマンド。パッケージの管理、アプリのパッケージの作成、依存性のインストール、アプリのビルドなどで使用する。「dnu」は「.NET Development Utility」を意味する。旧称はkpm(K Package Manager)。

dnuコマンドは「dnu オプション コマンド」の形式で実行する。主なコマンドを以下に示す。

  • restore: プロジェクトが依存しているパッケージを復元する(デフォルトでは「ユーザーのホームディレクトリ\.dnx\packages」ディレクトリにアセンブリごとにサブディレクトリが作成され、そこにバージョンごとにアセンブリが格納される
  • install: 現在のプロジェクトが依存するパッケージを追加する(project.jsonファイルに追記される)
  • publish: 配備用にアプリを出力する(デフォルトでは、カレントディレクトリの「bin\output」ディレクトリ以下にアプリが出力される。このとき、アプリが依存するアセンブリ群も展開される)
  • build: プロジェクトのアセンブリを作成する

 ここまでのまとめとして、以下の表にDNX関連用語を現在のものと以前のものに分けてクロスリファレンス的に示しておこう。

名称 説明 以前の名称
DNX クロスプラットフォームでの.NETアプリ実行環境の総称 KRE/XRE
dnvm DNX環境のバージョン管理ユーティリティ。実行環境のバージョン管理を行う kvm
dnu .NETアプリ開発用ユーティリティ。アプリが使用するパッケージの管理やアプリの配備などに使用する kpm
dnx DNX上でアプリを実行するためのユーティリティ。一般には、このコマンドでランタイムのエントリポイント(を経由してアプリのエントリポイント)を呼び出す k/klr
DNX関連用語

名称 説明 現在の名称
KRE クロスプラットフォームでの.NETアプリ実行環境の総称。K Runtime Environment DNX
XRE クロスプラットフォームでの.NETアプリ実行環境の総称。Cross-platform Runtime Environment DNX
kvm K環境用のバージョンマネージャー(K Version Manager)。実行環境のバージョン管理を行う dnvm
kpm K環境用のパッケージマネージャー(K Package Manager)。アプリが使用するパッケージを管理する dnu
k KRE/XRE上でアプリを実行するためのユーティリティ。一般には、このコマンドでランタイムのエントリポイント(を経由してアプリのエントリポイント)を呼び出す dnx
klr K Language Runtime。KRE/XRE上でアプリをセルフホストするためのユーティリティ(kコマンドから呼び出される薄いラッパー)。DNXではkコマンドと合わせてdnxコマンドになった dnx
以前の用語

 次ページでは、ここまでに見てきたDNXの上で動作するASP.NET 5について、その特徴を簡単にまとめておこう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。