次の方法で共有


Docker コンテナー用 .NET Framework を選択するタイミング

ヒント

このコンテンツは eBook の「コンテナー化された .NET アプリケーションの .NET マイクロサービス アーキテクチャ」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

.NET 8 は新しいアプリケーションとアプリケーション パターンには大きな利点がありますが、既存の多くのシナリオでは引き続き .NET Framework が適切な選択肢となります。

既存アプリケーションを Windows Server コンテナーに直接移行する

マイクロサービスを作成していない場合は、デプロイメントを簡略にするためだけでも Docker コンテナーを使用できます。 たとえば、Docker に対する DevOps ワークフローを改善したいとします。コンテナーを使用すると、適切に分離されたテスト環境を確保でき、運用環境に移行したときに依存関係が失われて生じるデプロイメントの問題も解消できます。 このようなケースでは、単体のアプリケーションをデプロイする場合でも、現在の .NET Framework アプリケーションのために Docker および Windows コンテナーを使用するメリットがあります。

このシナリオのほとんどのケースでは、既存のアプリケーションを .NET 8 に移行する必要はありません。従来の .NET Framework を含む Docker コンテナーを使用できます。 しかし、ASP.NET Core で新しいサービスを作成するなど、既存のアプリケーションを拡張するときには .NET 8 を使用することをお勧めします。

NET 8 で使用できないサードパーティ製の .NET ライブラリや NuGet パッケージの使用

サードパーティ製のライブラリでは .NET Standard の採用が迅速に進められています。これにより、.NET 8 を含むすべての種類の .NET でコードを共有できるようになります。 .NET Standard 2.0 以降、異なるフレームワーク間での API サーフェスの互換性はかなり高くなっています。 さらに、.NET Core 2.x と新しいアプリケーションでは、既存の .NET Framework ライブラリを直接参照することもできます (.NET Standard 2.0 をサポートする .NET Framework 4.6.1 に関するページを参照してください)。

さらに、Windows 互換機能パックでは、Windows の .NET Standard 2.0 で利用可能な API サーフェスが拡張されています。 このパックでは、最小限の変更か、または変更を伴わずに、.NET Standard 2.x のほとんどの既存コードを再コンパイルして、Windows 上で実行できます。

しかし、.NET Standard 2.0 および .NET Core 2.1 以降の進歩が並外れているとしても、特定の NuGet パッケージの実行には Windows が必要であり、.NET Core 以降がサポートされていないケースはあります。 これらのパッケージがアプリケーションに不可欠な場合は、Windows コンテナー上で .NET Framework を使用する必要があります。

.NET 8 で利用できない .NET テクノロジの使用

一部の .NET Framework テクノロジは、.NET 8 では利用できません。 今後のリリースで使用可能になるものもありますが、それ以外は .NET Core の対象となる新しいアプリケーション パターンには適合せず、使用可能にならない可能性があります。

以下の一覧は、.NET 8 で利用できないテクノロジの大多数を示しています。

  • ASP.NET Web フォーム。 このテクノロジは .NET Framework のみで利用できます。 現時点では、ASP.NET Web Forms を .NET 以降に含める予定はありません。

  • ワークフロー関連サービス。 Windows Workflow Foundation (WF)、ワークフロー サービス (1 つのサービスに WCF と WF) および WCF Data Services (旧称: ADO.NET Data Services) は、NET Framework でのみ使用できます。 現在、これらを .NET 8 に含める予定はありません。

公式の .NET ロードマップに一覧表示されているテクノロジに加え、他の機能が新しい統合 .NET プラットフォームに移植される可能性があります。 GitHub でのディスカッションに参加して意見を述べることを検討してください。 また、何か足りないと感じた場合は、dotnet/runtime GitHub リポジトリで新しい案件を作成してください。

.NET 8 をサポートしていないプラットフォームまたは API の使用

Microsoft とサードパーティ製のプラットフォームの中には、.NET 8 をサポートしないものがあります。 たとえば、一部の Azure サービスには、.NET 8 ではまだ使用できない SDK を提供しているものがあります。 ほとんどの Azure SDK は最終的に .NET 8/.NET Standard に移植されるはずですが、一部のものはさまざまな理由で移植されない可能性があります。 使用可能な Azure SDK については、Azure SDK の最新リリース ページを参照してください。

この間、Azure のプラットフォームまたはサービスがそのクライアント API で .NET 8 をまだサポートしていない場合は、Azure サービスまたはクライアント SDK の同等の REST API を .NET Framework で使用できます。

既存の ASP.NET アプリケーションを .NET 8 に移植する

.NET Core は、.NET Framework を画期的に進歩させたものです。 生産性からパフォーマンスまで、またクロスプラットフォーム サポートから開発者の満足度まで、.NET Framework に比べ全体的に数多くのメリットをもたらします。

その他のリソース