Aspire uygulamalarıyla Dev Proxy kullanma

Bir bakışta
Hedef: Aspire ile Geliştirme Proxy'si kullanma
Süre: 15 dakika
Eklentiler: Çeşitli
Önkoşullar:Geliştirme Proxy'sini ayarlama, Aspire

Aspire , gözlemlenebilir, üretime hazır, dağıtılmış uygulamalar oluşturmaya yönelik, öngörülebilir, buluta hazır bir yığındır. .NET üzerine kurulmuştur ve web uygulamaları oluşturmak için modern, hızlı ve ölçeklenebilir bir platform sağlar.

Dev Proxy'yi Aspire uygulamanızla kullanmak için DevProxy.Hosting NuGet paketini kullanın. Paket, Dev Proxy'yi Aspire uygulamanıza kolayca tümleştirmek için Dev Proxy Aspire uzantıları sağlar.

Dev Proxy Aspire uzantıları NuGet paketini yükleme

Dev Proxy Aspire uzantıları NuGet paketini yüklemek için Aspire uygulamanızın kök klasöründe aşağıdaki komutu çalıştırın:

dotnet add package DevProxy.Hosting

Aspire Dev Proxy uzantılar paketi kullanarak, yerel olarak yüklenen yürütülebilir dosya veya bir Docker kapsayıcısından Dev Proxy'i entegre edebilirsiniz.

Yerel olarak yüklenmiş bir yürütülebilir dosyadan Dev Proxy'yi entegre etme

Geliştirme Proxy'niz yerel olarak yüklüyse, bunu Aspire uygulamanızla tümleştirmenin en kolay yolu yerel yürütülebilir dosyaya başvurmaktır. Aşağıdaki kod parçacığında, yerel olarak yüklenen yürütülebilir dosyadan Dev Proxy'nin Aspire starter uygulamasıyla nasıl tümleştirleneceği gösterilmektedir.

Önemli

Dev Proxy'yi yerel yürütülebilir dosyayı kullanacak şekilde yapılandırdığınızda, yürütülebilir dosyanın uygulamanızı çalıştırdığınız tüm makinelerde kullanılabilir olduğundan emin olun. Dev Proxy'yi kapsayıcılı bir ortamda kullanmak istiyorsanız, bunun yerine Docker kapsayıcısını kullanmayı göz önünde bulundurun.

using DevProxy.Hosting;

var builder = DistributedApplication
    .CreateBuilder(args);

// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
    .WithHttpHealthCheck("/health")
    .WithHttpsEndpoint();

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()
    .WithHttpHealthCheck("/health")
    .WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
    .WithReference(apiService)
    .WaitFor(apiService)
    .WaitFor(devProxy);

// Build and run the application
builder.Build().Run();

İlk olarak, Dev Proxy Aspire uzantılarını kullanarak uygulamanıza bir Dev Proxy hizmeti eklersiniz. AddDevProxyExecutable yöntemi, Dev Proxy yürütülebilir dosyasının adını belirtir. WithConfigFile yöntemini kullanarak Dev Proxy yapılandırma dosyasının yolunu belirtirsiniz. WithUrlsToWatch yöntemini kullanarak izleyebileceğiniz URL'lerin listesini belirtirsiniz. Bu örnekte, Dev Proxy'nin web uygulamasının API hizmetine yaptığı istekleri kesmesini istiyorsunuz.

Önemli

yönteminin WithUrlsToWatch izleyebileceğiniz URL'lerin listesini döndüren bir işlevi kabul ettiğini fark edin. Bunun nedeni, Geliştirme Proxy'sini yapılandırırken API hizmet uç noktasının kullanılamamasıdır, bu nedenle URL'yi doğrudan geçiremezsiniz. Bunun yerine, kullanılabilir olduğunda API hizmetinin URL'sini döndüren bir lambda ifadesi kullanırsınız.

Ardından, web uygulamasında ortam değişkenini HTTPS_PROXY kullanarak web uygulamasını Dev Proxy kullanacak şekilde yapılandıracaksınız. WaitFor metodunu kullanarak, web uygulamasına başlamadan önce Dev Proxy'nin kullanılabilir olmasını beklemesini söylersiniz.

Docker kapsayıcısından Dev Proxy'yi tümleştirme

Alternatif olarak, Dev Proxy'yi Bir Docker kapsayıcısından Aspire uygulamanıza tümleştirebilirsiniz. Dev Proxy Docker görüntüsünü kullanmak kullanışlıdır, çünkü Aspire, görüntü yerel olarak mevcut değilse otomatik olarak indirir. Bunun dezavantajı, uygulamanızda Dev Proxy'yi yapılandırmak için birkaç adım daha olmasıdır.

Aşağıdaki kod parçacığı, Docker kapsayıcısından Dev Proxy'nin Aspire starter uygulamasıyla nasıl tümleştirileceğini göstermektedir.

using DevProxy.Hosting;

var builder = DistributedApplication
    .CreateBuilder(args);

// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
    .WithHttpHealthCheck("/health")
    .WithHttpsEndpoint();

// 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()
    .WithHttpHealthCheck("/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();

Temel adımlar, yerel olarak yüklenen yürütülebilir dosya kullanılırken gerçekleştirilir. Temel fark, HTTPS trafiğini kesmek için yapılandırma dosyasını ve sertifikayı nasıl belirttiğinizdir.

Dev Proxy'yi bir Docker kapsayıcısından tümleştirirken yerel klasörleri yapılandırma dosyası ve sertifikayla kapsayıcıya bağlamanız gerekir. Bu örnekte, Aspire çözümünüzde aşağıdaki klasör yapısına sahipsiniz:

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

klasör, cert Geliştirme Proxy'sinin HTTPS trafiğini kesmek için kullandığı Kişisel Bilgi Değişimi (PFX) sertifikasını içerir.

Önemli

Makinenizdeki klasördeki sertifikaya cert güvenmeniz gerekir, aksi takdirde API hizmetine yönelik istekler başarısız olur. Ayrıca, Dev Proxy'nin sertifikayı yükleyebilmesi için PFX biçiminde olması, olarak adlandırılması rootCert.pfxve parolayla korunmaması gerekir.

Klasör, config Dev Proxy yapılandırma dosyasını ve taklitler veya hatalar gibi diğer Dev Proxy dosyalarını içerir.

Sertifika ve yapılandırma dosyalarını kapsayıcıdaki ayrı birimlere bağlarken, bunların ayrı klasörlerde depolanması gerekir.

Aspire starter uygulamasıyla Dev Proxy kullanma

Uygulamayı başlattıktan sonra Geliştirme Proxy'si uygulamada bir kaynak olarak gösterilir.

Geliştirme Proxy'si de dahil olmak üzere uygulama kaynaklarını gösteren Aspire panosunun ekran görüntüsü.

Api hizmetine istekte bulunmak için web uygulamasını kullandığınızda, Dev Proxy istekleri durdurur ve yapılandırmanıza göre işler. Geliştirme Proxy'si çıkışını Aspire panosunun Konsol bölümünde görebilirsiniz.

Dev Proxy konsol çıkışını gösteren Aspire panosunun ekran görüntüsü.

Ayrıca bakınız