1. ホーム
  2. .net

[解決済み】.NET Standardと.NET Coreの比較

2022-04-01 23:36:05

質問

.NET Standardと.NET Coreの違いについて読んだことがありますが、何が違うのか、どのタイミングで.NET Standardライブラリプロジェクトを選択し、どのタイミングで.NET Coreライブラリプロジェクトを選択すればいいのか、本当によくわかりません。

.NET Standardは、使用するプラットフォームに関係なく(そのプラットフォームが選択した.NET Standardバージョンと互換性がある限り)、一連のAPIが常に利用できるようにするためのものだと読みました。私が間違っていなければ、これは、私が.NET Standardのクラスライブラリを作成し、私が選択した.NET Standardバージョンと互換性のある任意のプラットフォーム上でそれを使用することができるということを意味します。

.NET Coreについても、クロスプラットフォームでの利用を想定しているとのことなので、.NET Coreライブラリを選べば、.NET Standardと同様に多くのプラットフォームで利用できるようだ。

結局のところ、違いがわからないんですね。いつ、どれを使えばいいのでしょうか?何が違うのでしょうか?

解決方法は?

私は、あなたの疑問をさらに明らかにし、Jon Skeetの回答を拡張するよう努めます。

.NET 標準は 仕様 そのため、特定の .NET Standard バージョン用にコンパイルされたライブラリは、異なる .NET Standard 実装で使用することができます。

他のコメントで述べたように、.NET Standard と他の .NET Standard 実装 (.NET Core、.NET Framework など) の関係を表す良い例えがあります。 David Fowlerによるこの要旨 : .NET 標準バージョンは Interfaces フレームワークはそのインターフェイスを実装したものです。

この関係を理解するのに役立つのが、この簡略化した図です。

ターゲットとするもの NetCore10 へのアクセスが可能です。 INetStandard15 API NetCore10 特定 のようなAPI( DotNetHostPolicy ).

もちろん、このライブラリは、異なる INetStandard15 の実装( NetCore10 は変換できません。 NetFramework462 または Mono46 ).

にのみアクセスする必要がある場合、その代わりに INetStandard15 API(そして具体的なフレームワークではなく、その仕様をターゲットとする)あなたのライブラリは 任意の それを実装しているフレームワーク ( NetCore10 , NetFramework462 など)

David Fowlerは、オリジナルのアナロジーで、.NET標準バージョンとフレームワークの実装の両方にインターフェイスを使用しています。私は、インターフェースとクラスを使用することで、より直感的で、仕様と具体的な実装の間の関係をよりよく表すことができると考えています。