概要
目標: Aspire と Dev Proxy を使用する
時間: 15 分
プラグイン: 各種
前提条件:開発プロキシの設定、 アスパイア
アスパイア は、監視可能で運用環境に対応した分散アプリケーションを構築するための、意見が豊富なクラウド対応スタックです。 これは .NET 上に構築され、Web アプリケーションを構築するための最新の高速でスケーラブルなプラットフォームを提供します。
Aspire アプリケーションで Dev Proxy を使用するには、DevProxy.Hosting NuGet パッケージを使用します。 このパッケージは、Dev Proxy を目的のアプリケーションに簡単に統合するための Dev Proxy Aspire 拡張機能を提供します。
Dev Proxy Aspire 拡張機能 NuGet パッケージをインストールする
Dev Proxy Aspire 拡張機能 NuGet パッケージをインストールするには、アスパイア アプリケーションのルート フォルダーで次のコマンドを実行します。
dotnet add package DevProxy.Hosting
Dev Proxy Aspire 拡張機能パッケージを使用すると、ローカルにインストールされた実行可能ファイルまたは Docker コンテナーから開発プロキシを統合できます。
ローカルにインストールされた実行可能ファイルから開発プロキシを統合する
Dev Proxy をローカルにインストールしている場合、それをアスパイア アプリケーションに統合する最も便利な方法は、ローカルの実行可能ファイルを参照することです。 次のコード スニペットは、ローカルにインストールされた実行可能ファイルの開発プロキシを、Aspire スターター アプリケーションと統合する方法を示しています。
Von Bedeutung
ローカル実行可能ファイルを使用するように開発プロキシを構成する場合は、アプリケーションを実行するすべてのマシンで実行可能ファイルを使用できることを確認します。 コンテナー化された環境で開発プロキシを使用する場合は、代わりに Docker コンテナーを使用することを検討してください。
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
var devProxy = builder.AddDevProxyExecutable("devproxy")
.WithConfigFile(".devproxy/config/devproxy.json")
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
まず、開発プロキシ の機能拡張を使用して、アプリケーションに開発プロキシ サービスを追加します。
AddDevProxyExecutable メソッドは、開発プロキシ実行可能ファイルの名前を指定します。
WithConfigFileメソッドを使用して、開発プロキシ構成ファイルへのパスを指定します。
WithUrlsToWatchメソッドを使用して、監視する URL の一覧を指定します。 この例では、Web アプリが API サービスに対して行う要求を、Dev Proxy でインターセプトします。
Von Bedeutung
WithUrlsToWatch メソッドは、監視する URL の一覧を返す関数を受け入れることに注意してください。 これは、開発プロキシを構成するときに API サービス エンドポイントを使用できないため、URL を直接渡すことができないためです。 代わりに、API サービスが使用可能になったときに API サービスの URL を返すラムダ式を使用します。
次に、Web アプリで、 HTTPS_PROXY 環境変数を使用して、開発プロキシを使用するように Web アプリを構成します。
WaitForメソッドを使用して、開始する前に開発プロキシが使用可能になるまで待機するように Web アプリに指示します。
Docker コンテナーから開発プロキシを統合する
または、Docker コンテナーから Dev Proxy をアスパイア アプリケーションに統合することもできます。 Dev Proxy Docker イメージを使用すると便利です。これは、イメージがローカルで使用できない場合、自動的にダウンロードされるためです。 欠点は、アプリケーションで開発プロキシを構成するためのいくつかの手順があることです。
次のコード スニペットは、Docker コンテナーから Dev Proxy を、Aspire スターター アプリケーションと統合する方法を示しています。
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
// Add Dev Proxy as a container resource
var devProxy = builder.AddDevProxyContainer("devproxy")
// specify the Dev Proxy configuration file; relative to the config folder
.WithConfigFile("./devproxy.json")
// mount the local folder with PFX certificate for intercepting HTTPS traffic
.WithCertFolder(".devproxy/cert")
// mount the local folder with Dev Proxy configuration
.WithConfigFolder(".devproxy/config")
// let Dev Proxy intercept requests to the API service
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
// set the HTTPS_PROXY environment variable to the Dev Proxy endpoint
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
基本的な手順は、ローカルにインストールされた実行可能ファイルを使用する場合と同じです。 主な違いは、HTTPS トラフィックをインターセプトするための構成ファイルと証明書を指定する方法です。
Docker コンテナーから開発プロキシを統合する場合は、構成ファイルと証明書を含むローカル フォルダーをコンテナーにマウントする必要があります。 この例では、アスパイア ソリューションに次のフォルダー構造があります。
AspireStarterApp
├── .devproxy
│ ├── cert
│ │ └── rootCert.pfx
│ └── config
│ └── devproxy.json
├── Projects
│ ├── AspireStarterApp_ApiService
│ └── AspireStarterApp_Web
└── AspireStarterApp.sln
cert フォルダーには、Dev Proxy が HTTPS トラフィックをインターセプトするために使用する Personal Information Exchange (PFX) 証明書が含まれています。
Von Bedeutung
コンピューター上の cert フォルダー内の証明書を信頼する必要があります。または、API サービスへの要求が失敗します。 また、Dev Proxy が証明書を読み込むには、PFX 形式である必要があり、 rootCert.pfxという名前を付ける必要があり、パスワードで保護することはできません。
config フォルダーには、開発プロキシ構成ファイルと、モックやエラーなどの他の開発プロキシ ファイルが含まれています。
証明書と構成ファイルをコンテナー内の個別のボリュームにマウントするため、個別のフォルダーに格納する必要があります。
Dev Proxy を、アスパイア スターター アプリケーションと共に使用する
アプリケーションを起動すると、開発プロキシはアプリケーション内のリソースとして表示されます。
Web アプリケーションを通じて API サービスに要求を行うと、Dev Proxy は設定に基づいて要求をインターセプトし、処理します。 Dev Proxy の出力は、アスパイア ダッシュボードの コンソール セクションで確認できます。
こちらも参照ください
Dev Proxy