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

マイクロソフトは現在、.NETファミリーとして、.NET Core、.NET Framework、Xamarin(Mono)を擁しています。

ここには多くの重複があるようです。これらのタイプの.NETの違いは何ですか?自分のプロジェクトで、.NET FrameworkやXamarinではなく、.NET Coreを使うことを選ぶべきなのはどんなときですか?

ソリューション

ドキュメント[こちら][1]によると、以下の6つの典型的なシナリオでは、.NET FrameworkやXamarinではなく、.NET Coreを使用する必要があります。

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

Windows、Linux、MacOSといった複数のプラットフォームで動作するアプリケーション(Web/サービス)を開発する場合、ランタイム(CoreCLR)やライブラリがクロスプラットフォームに対応している.NET Coreを使用することが、.NETエコシステムにおける最良の選択であることは明らかです。もう1つの選択肢は、Monoプロジェクトを使用することです。 どちらもオープンソースですが、.NET CoreはMicrosoftが直接かつ公式にサポートしており、今後も大きな投資が見込まれています。 プロジェクト管理、デバッグ、ソースコントロール、リファクタリング、Intellisenseを含むリッチエディット、テストなど、多くの生産性向上のための機能をサポートするVisual Studio IDEは、Windows上で最高の開発体験を提供します。しかし、Mac、Linux、WindowsのVisual Studio Codeでも、インテリセンスやデバッグなどのリッチな開発がサポートされています。Sublime、Emacs、VIなどのサードパーティのエディタでも動作し、オープンソースのOmnisharpプロジェクトを使ってエディタのインテリセンスを得ることができます。

2.マイクロサービス

マイクロサービス指向のシステムを構築する場合、複数の独立した、動的に拡張可能な、ステートフルまたはステートレスのマイクロサービスで構成されていますが、ここでの大きな利点は、マイクロサービスレベルで異なる技術/フレームワーク/言語を使用できることです。そのため、システム内のマイクロ領域ごとに最適なアプローチや技術を使用することができます。たとえば、非常にパフォーマンスが高くスケーラブルなマイクロサービスを構築したい場合は、.NET Coreを使用するとよいでしょう。最終的には、.NET Coreに対応していない.NET Frameworkのライブラリを使用する必要があっても問題なく、そのマイクロサービスを.NET Frameworkで構築し、将来的には.NET Coreで代用することができるかもしれません。 使えるインフラプラットフォームはたくさんあります。大規模で複雑なマイクロサービスシステムには、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は、システムに最高のパフォーマンスとスケーラビリティを必要としている場合、どんなに多くのユーザーを抱えていても最高の応答性を得ることができます。同じ量のインフラ/ハードウェアでできることが増えれば増えるほど、エンドユーザーに豊かな体験を低コストで提供できるようになります。 しかし、システムが成長していく中で、より多くのことを行う必要があります。また、指数関数的に増加する日々の要求の高いユーザーに対して、より高いスケーラビリティとパフォーマンスが求められます。より効率的に、あらゆる場所で最適化し、マシン、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.22。 2.3ET Coreではなく、それでも.NET Framework 4.xを使うべきなのはどんなときか】3。 3.44

解説 (5)

マイクロソフトの説明はこうだ。

]1.

.NET Frameworkは、Windowsと一緒に配布されている.NETの"full"または"traditional"フレーバーです。WindowsデスクトップやUWPアプリを構築する場合や、古いASP.NET 4.6+を使用する場合に使用します。

.NET Coreは、Windows、Mac、Linuxで動作するクロスプラットフォームの.NETです。Dockerコンテナ内を含め、あらゆるプラットフォームで動作するコンソールアプリやWebアプリを構築したい場合に使用します。現在、UWP/デスクトップアプリケーションは含まれていません。

Xamarinは、iOS、Android、Windows Phoneデバイス上で動作するモバイルアプリの構築に使用します。

Xamarinは通常、Monoの上で動作します。Mono**は、Microsoftが.NET Coreで正式にクロスプラットフォーム化を決定する前に、クロスプラットフォーム対応のために構築された.NETのバージョンです。Xamarinと同様に、UnityプラットフォームもMonoの上で動作します。


よくある混乱のポイントは、ASP.NET Coreがどこに入るのかということです。ASP.NET Coreは、こちらの回答に詳しく書かれているように、.NET Framework(Windows)または.NET Core(クロスプラットフォーム)のいずれかの上で動作します。ASP.NET Core(.NET Core)とASP.NET Core(.NET Framework)の違い

解説 (6)

この行で参照することができます - https://stackoverflow.com/questions/37684508/difference-between-asp-net-core-net-core-and-asp-net-core-net-framework/37684644#37684644

.

Xamarinは全く議論になりません。C#を使ってモバイル(iOS、Android、Windows Mobile)アプリを作りたい場合、Xamarinが唯一の選択肢となります。

.NET Frameworkは、WindowsとWebアプリケーションをサポートしています。現在、.NET FrameworkでWindowsアプリケーションを構築するには、Windows Forms、WPF、UWPを使用することができます。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

解説 (0)