Microsoftが.NET Core 2.0を発表したが、開発者の間には、.NET Core、.NET Standard、Xamarin、.NET Frameworkの違いについて、まだ混乱がある。
.NET Frameworkは、デスクトップアプリケーションとIISサーバーで動くASP.NETアプリケーションの構築に使われる。これは最初にリリースされたマネージフレームワーク(managed framework)だ。
Xamarinは、iOS、Android、macOSデスクトップアプリケーションを構築するためのマネージフレームワークだ。
.NET Core
.NET Coreは、マネージフレームワークのフリーでクロスプラットフォームなオープンソース実装だ。4種類のアプリケーションをサポートする(コンソール、ASP.NET Core、クラウド、UWP (Universal Windows Platform) )。Windows FormsとWPF (Windows Presentation Foundation) は.NET Coreの一部ではない。
技術的には、.NET Coreがサポートしているのはコンソールアプリケーションだけだ。ASP.NET CoreとUWPは、.NET Core上に構築されたアプリケーションモデルだ。
.NET Frameworkとは違って、.NET CoreはWindowsコンポーネントだとみなされない。そのため、アップデートはWindows Update経由ではなく、NuGetパッケージとして配布される。.NET Coreランタイムはアプリローカルにインストールされ、アプリケーションはパッケージマネージャ経由でアップデートされる。したがって、アプリケーションは特定の.NET Coreバージョンと関連づけて個別にアップデートすることができる。
.NET Standard
マネージフレームワーク実装ごとにBCL (Base Class Libraries) がある。BCLには、例外処理、文字列、XML、I/O、ネットワーキング、コレクションなどのクラスが含まれている。
.NET StandardはBCLを実装するための仕様だ。.NET実装はこの標準に従う必要があり、アプリケーション開発者はマネージフレームワーク実装ごとのBCLバージョンを気にする必要はない。
WPF、WCF、ASP.NETなどのFCL (Framework Class Libraries) はBCLの一部ではなく、.NET Standardには含まれない。
.NET Standardと.NET実装の関係は、HTML仕様とブラウザの関係に相当する。後者は前者の実装だ。
したがって、.NET Framework、Xamarin、.NET Coreは、それぞれのマネージフレームワークにおいて、BCLのための.NET Standardを実装している。コンピュータ業界は新しいハードウェアとOSを導入し続けるので、これからも.NETのための新しいマネージフレームワークが出てくるだろう。この標準のおかげで、アプリケーション開発者は一貫性のあるAPIセットをあてにすることができる。
それぞれの.NETバージョンには、対応する.NET Standardのバージョンがある。
一貫性のあるAPIを提供することにより、アプリケーションを別のマネージ実装にポーティングしたりツールを提供したりするのが簡単になっている。
.NET Standardは単一のNuGetパッケージとして定義されている。すべての.NET実装はそれをサポートする必要があるためだ。特定のバージョンで使える一貫性のあるAPIセットがあるため、ツールは簡単になる。複数の.NET実装のために、単一のライブラリプロジェクトを構築することもできる。
プラットフォーム固有のAPIのための.NET Standardラッパーを構築することもできる。
.NET Standard vs Portable Class Libraries
Portable Class Librariesが同じことをしていたのでは?
Portable Classはプラットフォームがサポートする共通APIの組み合わせを使っていた。そのため、サポートするプラットフォームが増えれば増えるほど、使えるAPIは少なくなる。特定のプラットフォームの組み合わせにおいて、どのAPIが実際にサポートされているのかを把握するのは困難だった。新しいプラットフォームでは、既存のPCLを再コンパイルする必要がある。また、Microsoftがプラットフォームごとに新たなFramework実装をフォークする必要もあった。
.NET Standardは実装ではなくAPIを固定するため、アプリケーションを再コンパイルする必要がない。リリースされる新しい.NET実装はみな、必要なライブラリを実装している。アプリケーションは再コンパイルする必要なしに、新しいハードウェアプラットフォームやOSをターゲットにすることができる。理論的には、API呼び出しでNotSupportedExceptionを受け取る可能性はあるが、それはめったにないはずだ。
まとめ
.NET Standardは、特定のバージョンに対して、どのBCLを実装する必要があるかを定義したAPI仕様だ。
.NET Coreは、コンソール、クラウド、ASP.NET Core、UWPアプリケーションを構築するために最適化されたマネージフレームワークであり、BCLのための.NET Standardの実装を提供している。
Rate this Article
- Editor Review
- Chief Editor Action