.NET Core、.NET Framework、およびXamarinの違いは何ですか?


362

マイクロソフトは現在、.NET Core、.NET Framework、およびXamarin(Mono)をその.NETファミリで提供しています。

ここには多くの重複があるようです。これらのタイプの.NETの違いは何ですか?プロジェクトで.NET FrameworkやXamarinの代わりに.NET Coreを使用することを選択する必要があるのはいつですか?


2
いい質問だ!.netフレームワークと.netコアに関する補足記事です。 pogsdotnet.blogspot.sg/2017/11/… ありがとう!
Allan Chua

回答:


269

ここのドキュメントに従って、次の6つの一般的なシナリオでは、.NET FrameworkまたはXamarinの代わりに.NET Coreを使用する必要があります。

1.クロスプラットフォームのニーズ

明らかに、目標がプラットフォーム(Windows、Linux、MacOS)で実行できるアプリケーション(Web /サービス)を持つことである場合、.NETエコシステムでの最良の選択は、ランタイムとして.NET Coreを使用することです(CoreCLR )およびライブラリはクロスプラットフォームです。もう1つの選択肢は、Mono Projectを使用することです。

どちらの選択肢もオープンソースですが、.NET CoreはMicrosoftによって直接かつ公式にサポートされており、今後大きな投資が行われます。

プラットフォーム間で.NET Coreを使用すると、プロジェクト管理、デバッグ、ソース管理、リファクタリング、Intellisenseを含む豊富な編集、テストなど、多くの生産性機能をサポートするVisual Studio IDEを備えたWindowsで最高の開発エクスペリエンスが実現します。ただし、IntelliSenseやデバッグなど、Mac、Linux、WindowsでVisual Studio Codeを使用して、豊富な開発もサポートされています。Sublime、Emacs、VIなどのサードパーティエディターでさえうまく機能し、オープンソースのOmnisharpプロジェクトを使用してエディターのインテリセンスを得ることができます。

2.マイクロサービス

複数の独立した、動的にスケーラブルなステートフルまたはステートレスマイクロサービスで構成されるマイクロサービス指向のシステムを構築する場合、ここにある大きな利点は、マイクロサービスレベルでさまざまなテクノロジー/フレームワーク/言語を使用できることです。これにより、システムのマイクロ領域ごとに最適なアプローチとテクノロジーを使用できるため、非常に高性能でスケーラブルなマイクロサービスを構築する場合は、.NET Coreを使用する必要があります。最終的に、.NET Coreと互換性のない.NET Frameworkライブラリを使用する必要がある場合、問題はありません。.NETFrameworkを使用してそのマイクロサービスを構築でき、将来的には.NETで置き換えることができる可能性があります芯。

使用できるインフラストラクチャプラットフォームは多数あります。理想的には、大規模で複雑なマイクロサービスシステムの場合は、Azure Service Fabricを使用する必要があります。ただし、ステートレスマイクロサービスの場合、Azure App ServiceやAzure Functionsなどの他の製品を使用することもできます。

2016年6月の時点で、Azure内のすべてのテクノロジーが.NET Coreをサポートしているわけではありませんが、.NET CoreがRTMのリリースにより、Azureでの.NET Coreのサポートが劇的に増加することに注意してください。

3.最高のパフォーマンスとスケーラブルなシステム

システムが可能な限り最高のパフォーマンスとスケーラビリティを必要とするため、ユーザー数に関係なく最高の応答性を得ることができれば、.NET CoreとASP.NET Coreが本当に優れています。同じ量のインフラストラクチャ/ハードウェアでより多くのことができるほど、エンドユーザーはより低コストでより豊かなエクスペリエンスを体験できます。

ムーアの法則の時代、単一のCPUに対するパフォーマンスの向上はもはや当てはまりません。それでも、システムが成長している間はより多くのことを行う必要があり、数が指数関数的に増加している日々のより要求の厳しいユーザーのために、より高いスケーラビリティとパフォーマンスが必要です。最終的には、より効率的になり、あらゆる場所で最適化し、マシンのクラスター、VM、およびCPUコア全体でより適切に拡張する必要があります。これはユーザーの満足度だけの問題ではありません。また、コスト/ TCOに大きな違いをもたらす可能性があります。このため、パフォーマンスとスケーラビリティを追求することが重要です。

前述のように、システムの小さな部分をマイクロサービスまたはその他の疎結合アプローチとして分離できる場合は、各小さな部分/マイクロサービスを個別に進化させるだけでなく、長期的にも優れているため、より優れています。俊敏性とメンテナンスだけでなく、必要なものが.NET Coreと互換性がない場合は、マイクロサービスレベルで他のテクノロジーを使用することもできます。そして最終的には、それをリファクタリングして、可能であれば.NET Coreに取り込むことができます。

4. Mac、Linux、またはWindows用のコマンドラインスタイルの開発。

.NET Coreを使用する場合、このアプローチはオプションです。もちろん、完全なVisual Studio IDEを使用することもできます。ただし、軽量のエディターとコマンドラインを多用する開発者である場合、.NET CoreはCLI用に設計されています。サポートされているすべてのプラットフォームで使用できるシンプルなコマンドラインツールを提供し、開発者は、開発者、ラボ、または実稼働マシンに最小限のインストールでアプリケーションを構築およびテストできます。Visual Studio Codeのようなエディターは、開発エクスペリエンスに同じコマンドラインツールを使用します。そして、Visual StudioのようなIDEは同じCLIツールを使用しますが、それらを豊富なIDEエクスペリエンスの背後に隠しています。開発者は、CLIからエディター、IDEまで、ツールチェーンとやり取りするレベルを選択できるようになりました。

5.アプリケーションレベルごとに.NETバージョンを並べて配置する必要があります。

.NETのさまざまなバージョンのフレームワークに依存するアプリケーションをインストールできるようにするには、このドキュメントで前述したように、100%サイドバイサイドの.NET Coreを使用する必要があります。

6. Windows 10 UWP .NETアプリ。

さらに、以下もお読みください。

  1. .NET Coreを使用すべきでないのはいつですか?
  2. いつでも.NET Coreではなく.NET Framework 4.xを使用する必要がありますか?
  3. いつ.NET CoreではなくXamarinを使用する必要がありますか?

17
なぜasp.net Coreの方がパフォーマンスが高いのですか?マイクロサービスを構築するときに、なぜ優れているのですか?
ファンザムディオ2017年

4
Mac用のVisual Studioも利用可能になりました。.NET Coreについてもう1つ良い点があります。visualstudio.com/vs/visual-studio-mac
Husyn

8
リンクが壊れています
shaneparsons

2
@JuanZamudioフレームワークのバージョンはモノリシックレイヤーであり、それぞれが直前のバージョンに依存しており、完全に1.1を置き換えたバージョン2.0への依存チェーンに戻ります。その結果、4.5から何かを使用する場合、2.0までのすべてに暗黙的に依存します。コアフレームワークは、ほとんどが完全に変更されていないAPIを書き換えるよりも、依存関係をリファクタリングして無関係な手荷物を排除することを目的としています。EF Coreのように、大幅に簡素化されたものもあります。
Peter Wone

説明的な回答をありがとう
Tolga Kartal

171

これは、Microsoftによる説明です。

.NET Framework、.NET Core、Xamarin

。ネットフレームワークは、Windowsで配布される.NETの「完全」または「従来の」フレーバーです。デスクトップWindowsまたはUWPアプリを構築している場合、または古いASP.NET 4.6以降を使用している場合に使用します。

.NET Coreは、Windows、Mac、Linuxで動作するクロスプラットフォームの.NETです。これは、Dockerコンテナー内など、任意のプラットフォームで実行できるコンソールまたはWebアプリを構築する場合に使用します。現在、UWP /デスクトップアプリは含まれていません。

ザマリンは、iOS、Android、またはWindows Phoneデバイスで実行できるモバイルアプリの構築に使用されます。

Xamarinは通常、Mono上で実行されます。Mono は、Microsoftが.NET Coreとのクロスプラットフォームを正式に決定する前にクロスプラットフォームサポート用に構築された.NETのバージョンです。Xamarinと同様に、UnityプラットフォームもMonoの上で実行されます。


よくある混乱のポイントは、ASP.NET Coreが適しているところです。ASP.NETCoreは、.NET Framework(Windows)または.NET Core(クロスプラットフォーム)の上で実行できます。 NET Core(.NET Core)およびASP.NET Core(.NET Framework)


3
.NET Coreはクロスプラットフォームであると誰かが言うときはいつでも、新しい開発者は混乱します。「.NET Core」はUWP + ASP.NET Coreのみをサポートし、ASP.NET Coreはクロスプラットフォームですが、UWPはサポートしていません。
Hassan Tareq 2017

@HassanTareqそれは全く正しくありません。.NET Coreは、Windows、Mac、またはLinuxで実行できるランタイムとライブラリを指します。.NET Coreはクロスプラットフォームであるため、ASP.NET Coreはクロスプラットフォームです。
Nate Barbettini 2017

次に、.Netコア(ランタイムとライブラリ)はクロスプラットフォームですが、Mac / LinuxでUWPアプリを使用できないことを言及すると、グリーンホーンにとって役立ちます。UWPはクロスプラットフォームではありません
。UWP

@HassanTareq良い提案、私は私の答えを編集しました。
Nate Barbettini 2017

1
Xamarinフォームは、1つのコードベースからほぼすべてで実行されます。Windows UWPデスクトップ、WPFデスクトップ、MacOS、iOS、Android、およびTizen(TV)。デフォルトでは、コア実装から.NET標準をターゲットにします。良い時間!
Sean Anderson、

35

この行で参照できます-ASP.NET Core(.NET Core)とASP.NET Core(.NET Framework)の違い

.NET Framework、.NET Core、Xamarin

Xamarinは決して議論の的ではありません。C#を使用してモバイル(iOS、Android、およびWindows Mobile)アプリを構築する場合、Xamarinが唯一の選択肢です。

.NET Frameworkは、WindowsおよびWebアプリケーションをサポートしています。現在、Windowsフォーム、WPF、およびUWPを使用して、.NET FrameworkでWindowsアプリケーションを構築できます。ASP.NET MVCは、.NET FrameworkでWebアプリケーションを構築するために使用されます。

.NET Coreは、Windows、Mac、Linuxを含むすべてのオペレーティングシステム用のアプリケーションを構築するための新しいオープンソースおよびクロスプラットフォームフレームワークです。.NET CoreはUWPおよびASP.NET Coreのみをサポートします。UWPは、Windows 10ターゲットWindowsおよびモバイルアプリケーションのビルドに使用されます。ASP.NET Coreは、ブラウザーベースのWebアプリケーションを構築するために使用されます。

詳細については、このリンクを参照して
ください https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles / standard / choosing-core-framework-server


12
  1. .NETc#言語に基づくエコシステムです
  2. .NET Standard は、.NET Ecosystemの標準(つまり、仕様)です。

.Net Core Class Libraryは、.Net標準に基づいて構築されています。.NET標準スタンドアロンを実行することはできませんし、別によって参照されなければならない唯一のクラスライブラリプロジェクトを作ることができます.NET Coreまたは .NET Frameworkのあなたがに移植され、ライブラリ実装する実行可能project.If の.NET Frameworkを.NETをコアXamarin.Net標準ライブラリを選択

  1. .NET Frameworkは、に基づいて、フレームワークであり、.NET、それはWindowsとWebアプリケーションをサポートしています

(.NET Frameworkを使用して、実行可能プロジェクト(コンソールアプリケーション、ASP.NETアプリケーションなど)を作成できます)

  1. ASP.NETは、.NET Framework上に構築されたWebアプリケーション開発テクノロジーです。
  2. .NETのコアにも基づいてフレームワーク.NET

これは、Windows、Mac、およびLinuxを含むすべてのオペレーティングシステム用のアプリケーションを構築するための新しいオープンソースおよびクロスプラットフォームフレームワークです。

  1. Xamarinは、C#を使用してクロスプラットフォームモバイルアプリケーション(iOS、Android、およびWindows Mobile)を開発するためのフレームワークです。

.NET Standard [blue]の実装サポートおよび.NET Standardの完全サポートのための実行可能な最小プラットフォーム(最新:[ https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-サポート]


「バージョン履歴」テーブルへの反対票。再現したのは、.net / standardやcoreの「バージョン履歴」ではありません。これは、特定の.Net標準バージョンと一致させたい場合に使用できる、実行可能なプラットフォームの最小バージョンです。EG:Full .NETで.NET Standard 1.4をサポートする場合、使用できる最低バージョンは4.6.1です
shawty

正解を更新し、回答を正しく文書化したので、下向き投票は削除されました:-)
shawty

代わりにAppleで開発するつもりだと思います...
Richard Hammond

7

.NET 5は、2020年11月にリリースされるすべての.NETバリアントの統合バージョンになるため、バリアントを選択する必要がなくなります。 ここに画像の説明を入力してください


1
うそだ。.NET CoreはLinuxでWPF / WinFormsをサポートできません!
ビンセント

それは事実ですが、.NETの他のバリアントもそれをサポートしていませんでした。.NETのバリアントの選択肢がなくなったことは、良いことです。
yanlend

1

.NET Coreは、現在使用している.NETの現在のバージョンです(機能の追加、バグの修正など)。

Xamarinは、C#でコーディングされたクロスプラットフォームのモバイル問題のソリューションを提供するプラットフォームです。IOSでSwiftを個別に使用する必要がなく、Androidでも同じことが言えます。


2
LinuxまたはLinuxおよびWindowsで実行する必要がある場合は、.Net Coreを使用する必要があります。しかし、Monoの場合も同様です。確かにそれ以上の機能はありません。定義上、これは「コア」ビットのみであり、Windowsのみのビットがないため、機能が少なくなっています。そして、私は推測しているだけですが、.Net Coreにバグが少ないとは思えません。.Net Frameworkは、ほぼ20年間世界中で使用されてきました。この時点ではかなり戦場で強化されていると思います。しかし、それは単なる推測です。
ジェイソンボイド

確かにより多くの新機能があり、最近.NET 4.8には追加されない新しいクラスが追加されました。WPFとWinFormsも移植しました。実際には、.NET Coreが.NET Frameworkを置き換える可能性があるようです。どちらかと言えばパフォーマンスが高いようです。
asdf

0

Xamarinは電話アプリケーション(IOS / Androidの両方)に使用されます。.NET Coreは、ApacheとIISの両方で機能するWebアプリケーションの設計に使用されます。

それが2つの文の違いです。


うーん.. 3番目のオプション(.netフレームワーク)がないことを除いて、それは完全に真実ではありません。.NETコアはほとんどすべて(Web、デスクトップ、モバイル、クラウド、ゲーム、IoTなど)で使用できます。.NET FrameworkはWindows中心であり、完全に閉じられていました。Monoは、Xamarinで使用されている.NET Frameworkのオープンソース(コミュニティ主導)バージョンであり、クロスプラットフォームのモバイルツールをMonoの上に置きました。Xamarinは最終的にはBlazorによって置き換えられる予定です(現在はPWAですが、ハイブリッドのネイティブがロードマップの一部です)。
shox

それは本当です。Xamarinはモバイルアプリケーション用です。すぐに交換されるとは思いません。ASMXはまだWebサービスのために使用、およびVisual 2019に含まれている
user10868910

-1

2019年5月に更新

.Net Core 3.0以降を次のバージョンの.Net 5にアップグレードするときに使用する必要があります。必要なのは、1つの統合プラットフォーム.Net5だけです。

今後は.NETが1つだけとなり、それを使用してWindows、Linux、macOS、iOS、Android、tvOS、watchOS、WebAssemblyなどをターゲットにできます。 https://devblogs.microsoft.com/dotnet/introducing-net-5/


この答えは意味がありません。
Kiril1512
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.