Termin anfragen Muster

Es gibt eine Reihe von Möglichkeiten, dieses Muster über HTTP zu implementieren, und nicht alle Upstreamdienste haben die gleiche Semantik. Beispielsweise geben die meisten Dienste keine HTTP 202-Antwort von einer GET-Methode zurück, wenn ein Remoteprozess noch nicht abgeschlossen ist. Nach reiner REST-Semantik sollten sie HTTP 404 (Not Found) zurückgeben. Diese Antwort ist sinnvoll, wenn Sie bedenken, dass das Ergebnis des Anrufs noch nicht vorhanden ist. Nicht alle Lösungen implementieren dieses Muster auf die gleiche Weise, und einige Dienste enthalten zusätzliche oder alternative Header. Azure Resource Manager verwendet beispielsweise eine geänderte Variante dieses Musters. Weitere Informationen finden Sie unter Azure Resource Manager Async Operations. In einigen Szenarien möchten Sie Clients möglicherweise eine Möglichkeit bieten, eine lang andauernde Anforderung abzubrechen. In diesem Fall muss der Backend-Dienst eine Form der Stornierungsanweisung unterstützen.

Bisher haben Sie einen wiederkehrenden Termin erstellt, der regelmäßig am Montag jeder Woche (oder einem anderen Wiederholungsmuster, wie Sie angegeben haben) stattfindet. Siehe Screenshot: Legacy-Clients unterstützen dieses Muster möglicherweise nicht. In diesem Fall müssen Sie möglicherweise eine Fassade über der asynchronen API platzieren, um die asynchrone Verarbeitung vor dem ursprünglichen Client auszublenden. Azure Logic Apps unterstützt dieses Muster z. B. nativ als Integrationsschicht zwischen einer asynchronen API und einem Client, der synchrone Aufrufe ausführt. Weitere Informationen finden Sie unter Ausführen lang andauernder Aufgaben mit dem Webhook-Aktionsmuster. Die API reagiert so schnell wie möglich synchron. Es gibt einen HTTP 202 (Accepted)-Statuscode zurück und bestätigt, dass die Anforderung zur Verarbeitung empfangen wurde. Die API sollte sowohl die Anforderung als auch die auszuführende Aktion überprüfen, bevor der Prozess mit langer Ausführung gestartet wird. Wenn die Anforderung ungültig ist, antworten Sie sofort mit einem Fehlercode wie HTTP 400 (Bad Request). Die folgende Tabelle zeigt die Unterschiede zwischen Webex- und Microsoft Outlook-Wiederholungsmustern.

Der folgende Code zeigt Auszüge aus einer Anwendung, die Azure Functions zum Implementieren dieses Musters verwendet. Die Lösung hat drei Funktionen: Die Funktion AsyncOperationStatusChecker implementiert den Statusendpunkt. Diese Funktion überprüft zunächst, ob die Anforderung abgeschlossen wurde Einige Architekturen lösen dieses Problem, indem sie einen Nachrichtenbroker verwenden, um die Anforderungs- und Antwortphasen zu trennen. Diese Trennung wird häufig durch die Verwendung des Queue-Based Load Leveling-Musters erreicht. Diese Trennung kann es ermöglichen, dass der Clientprozess und die Back-End-API unabhängig skaliert werden. Diese Trennung bringt jedoch auch zusätzliche Komplexität mit sich, wenn der Client eine Erfolgsbenachrichtigung benötigt, da dieser Schritt asynchron werden muss. Request-response oder Request-Reply ist eine der grundlegenden Methoden, mit denen Computer miteinander kommunizieren, wobei der erste Computer eine Anforderung für einige Daten sendet und der zweite auf die Anforderung antwortet. In der Regel gibt es eine Reihe solcher Austauschvorgänge, bis die vollständige Nachricht gesendet wird. Das Durchsuchen einer Webseite ist ein Beispiel für die Kommunikation zwischen Anforderung und Antwort.

Die Anforderungsantwort kann als Telefonanruf angesehen werden, bei dem jemand angerufen wird und den Anruf entgegennimmt. In einigen Szenarien kann die arbeit durch backend jedoch in der Reihenfolge von Sekunden lang andauernd ausgeführt werden oder ein Hintergrundprozess sein, der in Minuten oder sogar Stunden ausgeführt wird. In diesem Fall ist es nicht möglich, zu warten, bis die Arbeit abgeschlossen ist, bevor Sie auf die Anforderung antworten. Diese Situation ist ein potenzielles Problem für jedes synchrone Anforderungsantwortmuster. Der Einfachheit halber wird dieses Muster in der Regel auf rein synchrone Weise implementiert, wie bei Webdienstaufrufen über HTTP, bei dem eine Verbindung offen gehalten wird und wartet, bis die Antwort übermittelt wird oder der Timeoutzeitraum abgelaufen ist.