Die Kladde spricht seit Lektion 4.12.2 direkt mit Service Bus, über das Azure-SDK und die Outbox. Es gibt einen zweiten Weg, den Azure Container Apps eingebaut anbietet: Dapr, die Distributed Application Runtime. Dapr legt neben jede App einen zweiten Prozess, den Sidecar, und die App spricht nur noch mit ihm: „veröffentliche dieses Ereignis“, „rufe diesen Dienst auf“, „speichere diesen Zustand“. Welcher Broker, welcher Speicher und welches Protokoll dahinterstehen, steht in Komponenten, nicht im Code. Diese Lektion zeigt, was das bringt, was es kostet und wo Container Apps Grenzen zieht. Am Ende entscheiden Sie in einem ADR, ob die Kladde Dapr nimmt.
Was Dapr bietet
Dapr bündelt wiederkehrende Aufgaben verteilter Systeme in Bausteinen (building blocks). Die App ruft sie über HTTP oder gRPC beim Sidecar auf; in Container Apps lauscht der Sidecar auf Port 3500 für HTTP und 50001 für gRPC.
| Baustein | Was er tut | Gegenstück in der Kladde bisher |
|---|---|---|
| Dienstaufruf (service invocation) | ruft eine andere App über ihre Dapr-App-Id auf, mit Wiederholungen und automatischem mTLS zwischen den Sidecars | HttpClient mit Service Discovery und Standard-Resilienz (4.12.1, 4.12.2) |
| Pub/Sub | veröffentlicht und abonniert Ereignisse über einen Broker, etwa Service Bus | ServiceBusSender und Empfänger mit Inbox (4.6.2, 4.6.3) |
| Zustand (state management) | speichert Schlüssel und Werte, auch transaktional | Grain-Zustand, EF Core |
| Bindungen (bindings) | löst die App durch äußere Ereignisse aus oder schreibt an äußere Systeme | Hintergrunddienste, Azure Functions |
| Geheimnisse (secrets) | liest Geheimnisse aus einem Speicher wie Key Vault | AddAzureKeyVault, verwaltete Identität |
| Konfiguration | liest und abonniert Einstellungen | Konfiguration von .NET |
| Akteure (actors) | zustandsbehaftete Objekte, eines nach dem anderen | Orleans-Grains (Modul 4.5) |
Das Versprechen ist Austauschbarkeit: Die App sagt „Pub/Sub tenders-pubsub“, und ob dahinter Service Bus, Event Hubs oder Kafka steht,
entscheidet eine Komponente. Wer viele Programmiersprachen in einem System hat oder zwischen Clouds wechseln will, gewinnt damit viel. Wer
eine Sprache und eine Cloud hat, gewinnt weniger, und dazu kommt gleich mehr.