分離されたワーカー モデルと Azure Functions 上の .NET のインプロセス モデルの違い
.NET 関数には、次の 2 つのプロセス モデルがあります:
実行モデル | 説明 |
---|---|
分離ワーカー モデル | 関数コードは、別の .NET ワーカー プロセスで実行されます。 .NET と .NET Framework のサポートされているバージョンで使います。 詳細については、.NET 分離ワーカー プロセス関数の開発に関する記事を参照してください。 |
インプロセス モデル | 関数コードは、Functions ホスト プロセスと同じプロセスで実行されます。 .NET の長期サポート (LTS) バージョンのみをサポートします。 詳細については、.NET クラス ライブラリ関数の開発に関する記事を参照してください。 |
重要
インプロセス モデルのサポートは 2026 年 11 月 10 日に終了します。 完全なサポートのために、分離ワーカー モデルにアプリを移行することを強くお勧めします。
この記事では、2 つのモデル間の機能と動作の違いの現在の状態について説明します。 インプロセス モデルから分離ワーカー モデルに移行するには、「.NET アプリをインプロセス モデルから分離ワーカー モデルに移行する」を参照してください。
実行モードの比較テーブル
次の表を使用して、2 つのモデル間の特徴と機能の違いを比較します。
機能/動作 | 分離ワーカー モデル | インプロセス モデル3 |
---|---|---|
サポートされている .NET バージョン | 長期サポート (LTS) バージョン、 標準期間サポート (STS) バージョン、 .NET Framework |
.NET 8 で終わる長期サポート (LTS) バージョン |
コア パッケージ | Microsoft.Azure.Functions.Worker Microsoft.Azure.Functions.Worker.Sdk |
Microsoft.NET.Sdk.Functions |
バインディング拡張機能パッケージ | Microsoft.Azure.Functions.Worker.Extensions.* | Microsoft.Azure.WebJobs.Extensions.* |
Durable Functions | サポートあり | サポートあり |
バインディングによって公開されるモデルの型 | 単純型 JSON シリアル化可能な型 配列/列挙型 サービス SDK の種類4 |
単純型 JSON シリアル化可能な型 配列/列挙型 サービス SDK の種類4 |
HTTP トリガー モデルの型 | HttpRequestData / HttpResponseData [HttpRequest] / [IActionResult] ([ASP.NET Core 統合] を使用)5 |
HttpRequest / IActionResult5 HttpRequestMessage / HttpResponseMessage |
出力バインディングのインタラクション | 次の値を使用して、展開されたモデルの値を返します。 ‐ 1 つまたは複数の出力 - 出力の配列 |
戻り値 (単一出力のみ)、out パラメーター、IAsyncCollector |
命令型バインディング1 | サポートされていません - 代わりに SDK の種類を直接操作します | サポートあり |
依存関係の挿入 | サポート対象 (.NET エコシステムと一貫性のある改善されたモデル) | サポートあり |
ミドルウェア | サポートあり | サポートされていません |
Logging | FunctionContext から、または依存関係の挿入により取得した ILogger<T> /ILogger |
ILogger が関数に渡される依存関係の挿入による ILogger<T> |
Application Insights の依存関係 | サポートあり | サポートあり |
キャンセル トークン | サポートあり | サポートあり |
コールド スタート時間2 | 構成可能な最適化 | 最適化済み |
ReadyToRun | サポートあり | サポートあり |
[Flex 従量課金] | サポートあり | サポートされていません |
1 実行時に決定されたパラメーターを使用してサービスとやり取りする必要がある場合は、命令型バインディングを使用するよりも、対応するサービス SDK を直接使用することをお勧めします。 SDK はより簡潔で、より多くのシナリオをカバーすることができ、エラー処理やデバッグの目的にも適しています。 この推奨事項は、両方のモデルに適用されます。
2 Windows で一部の .NET プレビュー バージョンを使用する場合、プレビュー フレームワークの Just-In-Time 読み込みが原因で、コールド スタート時間がさらなる影響を受ける可能性があります。 この影響は、インプロセス モデルとアウトプロセス モデルの両方に当てはまりますが、異なるバージョン間で比較すると違いが顕著になる可能性があります。 このプレビュー バージョンの遅延は、Linux プランでは生じません。
3 C# スクリプト関数もインプロセスで実行され、インプロセス クラス ライブラリ関数と同じライブラリを使用します。 詳細については、Azure Functions C# スクリプト (.csx) 開発者向けリファレンスを参照してください。
4サービス SDK の型には、BlobClient などの Azure SDK for .NET の型が含まれます。
5 .NET Framework では、ASP.NET Core がサポートされていません。
サポートされているバージョン
Functions ランタイムの各バージョンでは、.NET の特定のバージョンがサポートされています。 Functions のバージョンの詳細については、「Azure Functions ランタイム バージョンの概要」を参照してください。 バージョンのサポートは、関数がインプロセスで実行されるか、分離ワーカー プロセスで実行されるかによっても異なります。
Note
関数アプリで使用される Functions ランタイム バージョンを変更する方法については、「現在のランタイム バージョンの表示と更新」を参照してください。
次の表は、特定のバージョンの Functions と共に使用できる最上位レベルの .NET と .NET Framework を示しています。
Functions ランタイムのバージョン | 分離ワーカー モデル | インプロセス モデル5 |
---|---|---|
Functions 4.x1 | .NET 9.0 (プレビュー) .NET 8.0 .NET 6.02 .NET Framework 4.83 |
.NET 8.0 .NET 6.02 |
Functions 4.x1 | 該当なし | .NET Framework 4.8 |
1 .NET 7 は、以前は分離ワーカー モデルでサポートされていましたが、2024 年 5 月 14 日に公式サポートが終了しました。
2 .NET 6 は 2024 年 11 月 12 日に公式サポート終了となります。
3 ビルド プロセスには .NET SDK も必要です。
4 Azure Functions ランタイムのバージョン 1.x のサポートは 2026 年 9 月 14 日に終了します。 詳細については、こちらのサポートに関するお知らせを参照してください。 引き続き完全なサポートを受けるには、アプリをバージョン 4.x に移行する必要があります。
5 インプロセス モデルのサポートは、2026 年 11 月 10 日に終了します。 詳細については、こちらのサポートに関するお知らせを参照してください。 完全なサポートを受け続けるには、分離ワーカー モデルにアプリを移行する必要があります。
特定の古いマイナー バージョンの削除など、Azure Functions リリースに関する最新のニュースについては、Azure App Service のお知らせを閲覧してください。