Použití Dev Proxy s aplikacemi Aspire

Na první pohled
Cílem: Použití vývojového proxy serveru s Aspire
Čas: 15 minut
Pluginy: Různé
Požadavky:Nastavení vývojového proxy serveru, Aspire

Aspire je s pevným názorem, cloudově připravený technologický stack pro sestavování produkčních, pozorovatelných a distribuovaných aplikací. Je postavená na platformě .NET a poskytuje moderní, rychlou a škálovatelnou platformu pro vytváření webových aplikací.

Pokud chcete používat Dev Proxy s vaší aplikací Aspire, použijte balíček NuGet DevProxy.Hosting. Balíček poskytuje rozšíření Dev Proxy Aspire pro pohodlnou integraci Dev Proxy do vaší aplikace Aspire.

Nainstalujte balíček NuGet pro rozšíření Dev Proxy Aspire

Pokud chcete nainstalovat balíček NuGet rozšíření Dev Proxy Aspire, spusťte následující příkaz v kořenové složce vaší aplikace Aspire:

dotnet add package DevProxy.Hosting

Pomocí balíčku rozšíření Dev Proxy Aspire můžete vývojový proxy server integrovat z místně nainstalovaného spustitelného souboru nebo z kontejneru Dockeru.

Integrace dev Proxy z místně nainstalovaného spustitelného souboru

Pokud máte místně nainstalovaný Dev Proxy, nejpohodlnější způsob, jak ho integrovat do aplikace Aspire, je odkazovat na místní spustitelný soubor. Následující fragment kódu ukazuje, jak integrovat Dev Proxy z místně nainstalovaného spustitelného souboru s úvodní aplikací Aspire.

Důležité

Když nakonfigurujete Dev Proxy tak, aby používal místní spustitelný soubor, ujistěte se, že je spustitelný soubor dostupný na všech počítačích, na kterých spouštíte aplikaci. Pokud chcete používat Dev Proxy v kontejnerizovaném prostředí, zvažte místo toho použití kontejneru Dockeru.

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();

Nejprve pomocí rozšíření Dev Proxy Aspire přidáte do své aplikace službu Dev Proxy. Metoda AddDevProxyExecutable určuje název spustitelného souboru dev proxy. WithConfigFile Pomocí této metody zadáte cestu ke konfiguračnímu souboru dev proxy serveru. WithUrlsToWatch Pomocí této metody zadáte seznam adres URL, které se mají sledovat. V tomto příkladu chcete, aby dev proxy zachycuje požadavky, které webová aplikace provádí ve službě API.

Důležité

Všimněte si, že WithUrlsToWatch metoda přijímá funkci, která vrací seznam adres URL ke sledování. Důvodem je to, že koncový bod služby API není při konfiguraci dev proxy k dispozici, takže adresu URL nemůžete předat přímo. Místo toho použijete výraz lambda, který vrátí adresu URL služby API, když je k dispozici.

Dále ve webové aplikaci pomocí HTTPS_PROXY proměnné prostředí nakonfigurujete webovou aplikaci tak, aby používala Dev Proxy. WaitFor Pomocí metody, kterou dáváte webové aplikaci pokyn, aby před spuštěním čekala, až bude dev proxy server k dispozici.

Integrace dev proxy serveru z kontejneru Dockeru

Alternativně můžete vývojový proxy server integrovat do aplikace Aspire z kontejneru Dockeru. Použití obrazu Dockeru Dev Proxy je výhodné, protože Aspire automaticky stáhne obraz, pokud není dostupný místně. Nevýhodou je, že existuje několik dalších kroků ke konfiguraci dev proxy ve vaší aplikaci.

Následující fragment kódu ukazuje, jak integrovat Dev Proxy z kontejneru Dockeru s úvodní aplikací 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();

Základní kroky jsou stejné jako při použití místně nainstalovaného spustitelného souboru. Hlavním rozdílem je určení konfiguračního souboru a certifikátu pro zachycení provozu HTTPS.

Při integraci dev Proxy z kontejneru Dockeru je potřeba připojit místní složky s konfiguračním souborem a certifikátem do kontejneru. V tomto příkladu ve vašem řešení Aspire máte následující strukturu složek:

AspireStarterApp
├── .devproxy
│   ├── cert
│   │   └── rootCert.pfx
│   └── config
│       └── devproxy.json
├── Projects
│   ├── AspireStarterApp_ApiService
│   └── AspireStarterApp_Web
└── AspireStarterApp.sln

Složka cert obsahuje certifikát PFX (Personal Information Exchange), který dev Proxy používá k zachycení provozu HTTPS.

Důležité

Musíte důvěřovat certifikátu ve složce cert na vašem počítači, jinak požadavky na službu API selžou. Aby dev proxy server načetl certifikát, musí být ve formátu PFX, musí mít název rootCert.pfxa nesmí být chráněný heslem.

Složka config obsahuje konfigurační soubor Dev Proxy a další soubory Dev Proxy, jako jsou chyby nebo napodobení.

Protože připojujete certifikát a konfigurační soubory k oddělení svazků v kontejneru, musí být uložené v samostatných složkách.

Použití Dev Proxy s úvodní aplikací Aspire

Po spuštění aplikace se dev proxy zobrazí jako prostředek v aplikaci.

Snímek obrazovky řídicího panelu Aspire zobrazující prostředky aplikace, včetně Dev Proxy

Když použijete webovou aplikaci tak, aby zpracovávala požadavky na službu API, Dev Proxy zachytí požadavky a zpracuje je podle vaší konfigurace. Výstup dev proxy uvidíte v části Konzola na řídicím panelu Aspire.

Snímek obrazovky řídicího panelu Aspire zobrazující výstup konzoly Dev Proxy

Viz také