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

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

Microsoft のファミリには現在、.NET Core、.NET Framework、Xamarin (Mono) が含まれています。

ここでは多くの重複があるようです。これらの種類の .NET プラットフォームの違いは何ですか? プロジェクトで .NET Framework や Xamarin ではなく .NET Core を使用することを選択すべきなのはどのような場合ですか?

ベストアンサー1

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

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

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

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

プラットフォーム間で .NET Core を使用する場合、Windows では Visual Studio IDE を使用することで最高の開発エクスペリエンスが実現します。Visual Studio IDE は、プロジェクト管理、デバッグ、ソース管理、リファクタリング、Intellisense を含むリッチ エディット、テストなど、多くの生産性向上機能をサポートしています。また、Mac、Linux、Windows で Visual Studio Code を使用して、Intellisense やデバッグなどのリッチ開発もサポートされています。Sublime、Emacs、VI などのサード パーティ エディターでも問題なく動作し、オープン ソースの Omnisharp プロジェクトを使用してエディター Intellisense を利用できます。

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 が真価を発揮します。同じ量のインフラストラクチャ/ハードウェアで実行できることが多くなればなるほど、エンド ユーザーに提供するエクスペリエンスはより豊かになり、コストも削減されます。

ムーアの法則による単一 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 を使用すべきなのはいつですか?

おすすめ記事