Die Zeile builder.AddAzureStorage("storage").RunAsEmulator() im AppHost und die Zeile builder.AddAzureBlobServiceClient("blobs") in
Kladde.Web gehören zusammen, auch wenn sie in zwei Projekten stehen. Die erste beschreibt, was es gibt: ein Speicherkonto, lokal als Azurite.
Die zweite beschreibt, wie eine App es benutzt: einen BlobServiceClient mit Health Check und Telemetrie. Aspire nennt beides eine
Integration, einmal für das Hosting und einmal für den Client.
Diese Lektion nimmt die Integrationen auseinander, die die Kladde seit Modul 3.5 und 3.6 benutzt, zeigt, was sie lokal und was sie beim Veröffentlichen tun, und baut eine eigene für den TED-Stub, damit lokale Läufe und die Tests der nächsten Lektionen nie das echte TED fragen.
Zwei Hälften einer Integration
| Hosting-Integration | Client-Integration | |
|---|---|---|
| Paket | Aspire.Hosting.… |
Aspire.… ohne Hosting |
| steht in | Kladde.AppHost |
der App, die den Dienst benutzt |
| beschreibt | eine Ressource im Modell, lokal als Container oder Emulator, beim Veröffentlichen als Bicep | den Client der App: Registrierung, Health Check, Telemetrie, Konfiguration |
| Beispiel | AddAzureStorage, AddAzureServiceBus, AddAzureSqlServer |
AddAzureBlobServiceClient, AddAzureServiceBusClient, AddSqlServerDbContext |
Verbunden sind die beiden Hälften nur über einen Namen. WithReference(blobs) im AppHost setzt in der App die Umgebungsvariable
ConnectionStrings__blobs; AddAzureBlobServiceClient("blobs") in der App liest ConnectionStrings:blobs. Heißen beide gleich, passt es. Ein
Tippfehler fällt erst beim Start auf, mit einer Ausnahme, die sagt, dass weder eine Verbindungszeichenfolge noch eine Adresse angegeben ist. Die
Kladde hält die Namen deshalb seit Lektion 3.5.2 als Konstanten in Kladde.Contracts (Messaging.Connection), die AppHost und Apps beide kennen.
Die beiden Hälften hängen nicht voneinander ab. Eine App kann eine Client-Integration auch ohne Aspire benutzen, mit einer Verbindungszeichenfolge
aus appsettings.json, und ein AppHost kann eine Ressource beschreiben, deren App sich den Client selbst baut. Die Kladde nimmt beide Hälften, weil
sie zusammen mehr können als jede für sich.