BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース .NET Coreと.NET Standard: 違いは何か?

.NET Coreと.NET Standard: 違いは何か?

原文(投稿日:2017/10/09)へのリンク

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 FormsWPF (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

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT