Verbindingsreeks aanpassen met behulp van .NET Aspire-manifesten
Implementatiehulpprogramma's zoals Visual Studio of de Azure Developer CLI maken manifestbestanden die de inhoud van een .NET Aspire-oplossing beschrijven. Als u de implementatie wilt aanpassen, kunt u rechtstreeks wijzigingen aanbrengen in het manifestbestand.
In de winkel voor buitenapparatuur hebt u besloten om een bestaand Azure Cache voor Redis exemplaar te gebruiken om de uitvoercache voor de microservice van uw web-app te hosten. U wilt ervoor zorgen dat de web-app-service verbinding maakt met het juiste exemplaar van Azure Cache voor Redis.
In deze les leert u hoe u verbindingsreeks s kunt wijzigen in het .NET Aspire-manifestbestand.
Een manifestbestand genereren met behulp van de .NET CLI
Tijdens lokale ontwikkeling en foutopsporing maakt .NET Aspire geen manifestbestand. Als het gaat om implementatie, moet .NET de inhoud van de .NET Aspire-oplossing beschrijven, inclusief de microservices, backingservices en configuratie. Het manifestbestand dient dit doel. Hierin wordt de oplossing in JSON-indeling beschreven.
Als u het manifestbestand wilt maken, voeren Visual Studio en de Azure Developer CLI een .NET CLI-opdracht run
uit met een specifiek doel. U kunt dezelfde opdracht handmatig uitvoeren om als volgt uw eigen manifestbestand te maken:
dotnet run --project eShop.AppHost\eShop.AppHost.csproj `
--publisher manifest `
--output-path ../aspire-manifest.json
Notitie
Zorg ervoor dat u het app-hostproject opgeeft met de --project
optie.
De opdracht produceert uitvoer die vergelijkbaar is met deze tekst:
Building...
info: Aspire.Hosting.DistributedApplication[0]
Aspire version: 8.0.1+a6e341ebbf956bbcec0dda304109815fcbae70c9
info: Aspire.Hosting.Publishing.ManifestPublisher[0]
Published manifest to: C:\repos\eShop\aspire-manifest.json
U kunt ook een startprofiel gebruiken om de dotnet
opdracht uit te voeren. Een startprofiel is een groep instellingen waarmee een .NET-project wordt geconfigureerd wanneer het wordt uitgevoerd. Met de .NET Aspire Starter-sjabloon worden bijvoorbeeld deze startprofielen gemaakt:
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:17170;http://localhost:15281",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21147",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22239"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:15281",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19197",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20233"
}
}
}
Voeg een startprofiel toe om een manifestbestand te maken met JSON-code die vergelijkbaar is met deze tekst:
"profiles": {
"generate-manifest": {
"commandName": "Project",
"launchBrowser": false,
"dotnetRunMessages": true,
"commandLineArgs": "--publisher manifest --output-path aspire-manifest.json"
}
}
In Visual Studio kunt u vervolgens het profiel genereren-manifest kiezen wanneer u de foutopsporing start. Gebruik --launch-profile
de volgende optie op de opdrachtregel:
dotnet run --launch-profile generate-manifest
Indeling van het manifestbestand
Het manifest is een JSON-bestand met één element op het hoogste niveau met de naam resources
. Binnen dat object vindt u één object voor elke microservice en backing-service. Voor elk van deze objecten bevatten instellingen verbindingsreeks s, omgevingsvariabelen en namen van containerinstallatiekopieën.
Hier volgt een voorbeeldmanifest voor de .NET Aspire Starter-sjabloon zonder wijzigingen. De oplossing maakt gebruik van een Redis-cache:
{
"resources": {
"cache": {
"type": "container.v0",
"connectionString": "{cache.bindings.tcp.host}:{cache.bindings.tcp.port}",
"image": "docker.io/library/redis:7.2",
"bindings": {
"tcp": {
"scheme": "tcp",
"protocol": "tcp",
"transport": "tcp",
"targetPort": 6379
}
}
},
"apiservice": {
"type": "project.v0",
"path": "AspireStarter.ApiService/AspireStarter.ApiService.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http"
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http"
}
}
},
"webfrontend": {
"type": "project.v0",
"path": "AspireStarter.Web/AspireStarter.Web.csproj",
"env": {
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"ConnectionStrings__cache": "{cache.connectionString}",
"services__apiservice__http__0": "{apiservice.bindings.http.url}",
"services__apiservice__https__0": "{apiservice.bindings.https.url}"
},
"bindings": {
"http": {
"scheme": "http",
"protocol": "tcp",
"transport": "http",
"external": true
},
"https": {
"scheme": "https",
"protocol": "tcp",
"transport": "http",
"external": true
}
}
}
}
}
Verbindingsreeksen en bindingverwijzingen
In het manifestvoorbeeld zijn er drie resources:
-
webfrontend
: Deze resource is de microservice die een webinterface aan klanten presenteert. -
apiservice
: Deze resource is de REST API die dewebfrontend
aanroept. In de sjabloon is deze aanroep het verkrijgen van weergegevens. -
cache
: Deze resource is de Redis-cache, die wordt gebruikt om de prestaties van dewebfrontend
microservice te optimaliseren.
U ziet dat elk van de drie resources een bindings
sectie bevat met protocollen die u kunt gebruiken om verbinding te maken met die resource.
In het Program.cs-bestand van apiservice
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireStarter_ApiService>("apiservice");
builder.AddProject<Projects.AspireStarter_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(cache)
.WithReference(apiService);
In het manifestbestand worden deze afhankelijkheden uitgedrukt als omgevingsvariabelen:
"env": {
"ConnectionStrings__cache": "{cache.connectionString}",
"services__apiservice__http__0": "{apiservice.bindings.http.url}",
"services__apiservice__https__0": "{apiservice.bindings.https.url}"
}
De afhankelijkheden gebruiken tijdelijke aanduidingen voor tekenreeksen die verwijzen naar de structuur van het manifestbestand. De derde afhankelijkheid verwijst bijvoorbeeld naar de HTTPS-binding van de API-service:
Meer informatie
- .NET Aspire-manifestindeling voor opbouwfuncties voor implementatieprogramma's
- .NET Aspire en lanceringsprofielen