Skip to content

Anfrage nachfassen Muster

In Aspect Oriented Programming, das zusätzliche Funktionen in Klassen hinzufügen kann, erfolgt dies zur Kompilierungszeit. Bei dynamischen Sprachen kann es etwas flexibler sein, indem die Methoden zur Laufzeit erweitert werden. Ein Muster, das dafür in Sprachen verwendet wird, die einen funktionaleren Ansatz ermöglichen, ist der so genannte Fortsetzungs-Passing-Stil: Aufgrund der dynamischen Natur der Kette sollte der Client bereit sein, die folgenden Szenarien zu behandeln: Wenn ein Benutzer den Mauszeiger auf ein Element zeigt und die F1-Taste drückt, erkennt die Anwendung die Komponente unter dem Zeiger und sendet sie eine Hilfeanforderung. Die Anforderung sprudelt durch alle Container des Elements, bis sie das Element erreicht, das in der Lage ist, die Hilfeinformationen anzuzeigen. In einigen Situationen hat ein Akteur eine Antwort auf eine bestimmte Anforderungsnachricht, aber Sie sind nicht an der Antwort interessiert. In diesem Fall können Sie system.ignoreRefsystem.ignoreRef() übergeben und die Anforderungsantwort in ein Feuer-und-Vergessen verwandeln. In diesem Beitrag möchte ich eine Kombination aus Design und Architekturmustern auf hoher Ebene betrachten, von denen ich glaube, dass sie dazu beitragen können, Web-APIs zu erstellen, die flexibler, wartungsfähiger und in jeder Programmiersprache leichter zu verstehen sind. Einer nach dem anderen erstellt konkrete Handlerunterklassen und implementiert deren Handhabungsmethoden. Jeder Handler sollte beim Empfangen einer Anforderung zwei Entscheidungen treffen: Der Handler deklariert die Schnittstelle, die für alle betonierten Handler üblich ist. Es enthält in der Regel nur eine einzige Methode für die Behandlung von Anforderungen, aber manchmal kann es auch eine andere Methode zum Festlegen des nächsten Handlers in der Kette haben.

Der folgende Code zeigt Auszüge aus einer Anwendung, die Azure Functions zum Implementieren dieses Musters verwendet. Die Lösung hat drei Funktionen: Es gibt jedoch einen etwas anderen Ansatz (und es ist ein bisschen kanonischer), bei dem ein Handler beim Empfang einer Anfrage entscheidet, ob er ihn verarbeiten kann. Wenn dies möglich ist, wird die Anforderung nicht weiter. Es ist also entweder nur ein Handler, der die Anforderung verarbeitet, oder keiner überhaupt. Dieser Ansatz ist sehr häufig, wenn es um Ereignisse in Stapeln von Elementen innerhalb einer grafischen Benutzeroberfläche geht. Designmuster sind Bewährtes, die uns helfen können, Software zu erstellen, die besser beherrschbar, flexibler und einfacher zu verstehen ist, egal welche Programmiersprache oder welcher Framework. In diesem Beitrag haben wir uns mehrere Entwurfs- und Architekturmuster angesehen, die beim Erstellen von Web-APIs helfen können: Nicht alle Lösungen werden dieses Muster auf die gleiche Weise implementieren, und einige Dienste enthalten zusätzliche oder alternative Header.