BT

Your opinion matters! あなたのご意見でInfoQが変わる!

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

| 作者: Michael Stiefel フォローする 0 人のフォロワー , 翻訳者 sasai フォローする 0 人のフォロワー 投稿日 2017年10月16日. 推定読書時間: 4 分 |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

原文(投稿日: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
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT