サーバー アプリ用 .NET と .NET Framework

サポートされているサーバー側アプリ構築用の .NET 実装は、.NET と .NET Framework の 2 つです。 サーバー開発に使用するのに適した .NET のバージョンは、最新の .NET バージョン (現在は .NET 8) です。 .NET Framework を使用し続ける理由は特殊で限定的なものです。

実装 含まれているバージョン
.NET .NETMicrosoft .NET.NET Core 1.0 から 3.1 および、.NET 5 以降のバージョン
.NET Framework .NET Framework 1.0 から 4.8

.NET を選択する

.NET には、以下のサーバー アプリにとっての利点があります。

  • クロスプラットフォームで動作する。

    .NET を使用すると、Web アプリまたはサービス アプリを複数のプラットフォーム (Windows、Linux、macOS など) で実行できます。 これらのオペレーティング システムのいずれかを開発ワークステーションとして使用することもできます。 Windows 上で Visual Studio 統合開発環境 (IDE) を使用するか、macOS、Linux、Windows 上で Visual Studio Code を使用します。 Visual Studio Code では、IntelliSense とデバッグがサポートされています。 Sublime、Emacs、VI などのほとんどのサード パーティ製エディターは、.NET で使用することができます。 これらのサード パーティ製エディターでは、[Omnisharp](https://www.omnisharp.net/) を使用して、エディターを IntelliSense にします。 コード エディターを使用せずに、.NET CLI を直接使用することもできます。

  • マイクロサービスをターゲットにできる。

    マイクロサービス アーキテクチャでは、サービスの境界を越えて、複数のテクノロジを組み合わせて使用できます。 このテクノロジの組み合わせによって、他のマイクロサービスやサービスと連携する新しいマイクロサービスに .NET を段階的に採用することができます。 たとえば、.NET Framework、Java、Ruby などのモノリシックなテクノロジを使用して開発されたマイクロサービスまたはサービスを組み合わせることができます。

    使用できるインフラストラクチャ プラットフォームは多数あります。 [Azure Service Fabric](https://azure.microsoft.com/services/service-fabric/) は、大規模で複雑なマイクロサービス システム向けに設計されています。 [Azure App Service](https://azure.microsoft.com/services/app-service/) は、ステートレス マイクロサービスに推奨されます。 次のセクション (Docker コンテナーをサポートする) で説明するように、Docker ベースのマイクロサービスの代替物は、どのようなマイクロサービスのアプローチにも適しています。 .NET は、これらすべてのプラットフォームでサポートされるため、お使いのマイクロサービスをホストするのに最適です。

    マイクロサービス アーキテクチャの詳細については、「.NET マイクロサービス: コンテナー化された .NET アプリのアーキテクチャ」を参照してください。

  • Docker コンテナーをサポートする。

    通常、コンテナーは、マイクロサービス アーキテクチャとともに使用されます。 コンテナーは、任意のアーキテクチャ パターンに従う Web アプリやサービスをコンテナー化するためにも使用できます。 .NET Framework を Windows コンテナー上で使用することもできますが、モジュール性と軽量性の観点から .NET はコンテナーにとってより優れた選択肢と言えます。 コンテナーを作成して展開する場合、そのイメージのサイズは .NET Framework より .NET の方がはるかに小さくなります。 クロスプラットフォームであるため、Linux Docker コンテナーにサーバー アプリを展開することができます。

    Docker コンテナーは、独自の Linux または Windows インフラストラクチャでホストすることも、Azure Kubernetes Service のようなクラウド サービスでホストすることもできます。 Azure Kubernetes Service は、コンテナーベースのアプリケーションの管理、調整、およびスケールをクラウドで行うことができます。

  • 高パフォーマンスでスケーラブルである。

    お使いのシステムに実現しうる最高のパフォーマンスとスケーラビリティが必要な場合、NET と ASP.NET Core があなたに最適な選択肢です。 ASP.NET Core は Windows Server および Linux 向けの高パフォーマンスなサーバー ランタイムであり、TechEmpower のベンチマークで高パフォーマンスの Web フレームワークとして上位に評価されています。

    何百ものマイクロサービスが実行される可能性があるマイクロサービス アーキテクチャの場合は特に、パフォーマンスとスケーラビリティが重要です。 ASP.NET Core では、システムははるかに少ない数のサーバーまたは仮想マシン (VM) を使用して実行されるため、インフラストラクチャとホスティングのコストを節約できます。

  • アプリケーション単位のサイドバイサイドの .NET バージョンをサポートする。

    .NET の実装は、同じマシン上の異なるバージョンの .NET ランタイムのサイドバイサイド インストールをサポートしています。 この機能により、同じサーバー上で複数のサービスが、それぞれ独自のバージョンの .NET を使用できます。 また、アプリケーションのアップグレードと IT 運用に関係するリスクとコストを軽減できます。

    .NET Framework で、サイドバイサイド インストールはできません。 これは Windows コンポーネントであり、一度に 1 つのマシン上に存在できるバージョンは 1 つだけです。.NET Framework の各バージョンは、以前のバージョンに取って代わります。 新しいバージョンの .NET Framework を対象とする新しいアプリをインストールすると、以前のバージョンが置き換えられてしまうために、そのコンピューターで実行されている既存のアプリが破損してしまう場合があります。

  • 安全性がより高い。

どのような場合に .NET Framework を選択すべきか

既に述べたように、.NET 実装は、新しいアプリケーションとアプリケーション パターンに対して大きな恩恵をもたらします。 ただし、いくつかの特定のシナリオでは、サーバー アプリに .NET Framework を使用することが必要になる場合があるため、.NET Framework は引き続きサポートされます。 サーバー アプリで .NET Framework を使用するのは以下の場合です。

  • アプリで現在 .NET Framework を使用している。

    ほとんどの場合、お使いの既存のアプリケーションを .NET に移行する必要はありません。 そうではなく、ASP.NET Core での新しい Web サービスの記述など、既存のアプリを拡張する際に .NET を使用することをお勧めします。

  • アプリが .NET で利用できないサードパーティ製のライブラリや NuGet パッケージを使用している。

    .NET Standard を使用すると、.NET 6+ を含め、すべての .NET 実装でコードを共有できます。 NET Standard 2.0 の互換モードを使用すると、.NET Standard および .NET プロジェクトで .NET Framework ライブラリを参照できます。 詳細については、「[.NET Framework ライブラリのサポート](whats-new/whats-new-in-dotnet-standard.md#support-for-net-framework-libraries)」を参照してください。

    .NET Framework を使用するのは、ライブラリや NuGet パッケージが .NET Standard や .NET で利用できないテクノロジを使用している場合に限るべきです。

  • .NET で使用できない .NET Framework テクノロジをアプリで使用している。

    一部の .NET Framework テクノロジは .NET では使用できません。 .NET にはない最も一般的なテクノロジを、以下に列挙します。

    • ASP.NET Web Forms アプリケーション: ASP.NET Web Forms は、.NET Framework でのみ使用できます。 ASP.NET Core は、ASP.NET Web Forms に使用できません。
    • ASP.NET Web ページ アプリケーション: ASP.NET Web ページは、ASP.NET Core に含まれていません。
    • ワークフローに関連するサービス: Windows Workflow Foundation (WF)、ワークフロー サービス (1 つのサービスに WCF と WF) および WCF Data Services (旧称: ADO.NET Data Services) は、NET Framework でのみ使用できます。
    • 言語のサポート: Visual Basic と F# は .NET でサポートされていますが、"すべてのプロジェクト タイプでサポートされているわけではありません"。 サポートされるプロジェクト テンプレートの一覧については、[dotnet new のテンプレート オプション](../core/tools/dotnet-new.md#arguments)に関するセクションを参照してください。

    詳細については、.NET で使用できない .NET Framework テクノロジに関する記事を参照してください。

  • お使いのアプリで、.NET がサポートされていないプラットフォームを使用している。

    Microsoft やサードパーティ製のプラットフォームの中には、.NET がサポートされていないものもあります。 一部の Azure サービスにより、.NET ではまだ使用できない SDK が提供されています。 そのような場合は、クライアント SDK の代わりに同等の REST API を使用できます。

関連項目