Select Page

In einigen Fällen kann es je nach der zum Erstellen des Dienstes verwendeten Technologie möglich sein, zwei verschiedene Protokolle zu unterstützen, um den Dienst für verschiedene Arten von Dienstverbrauchern zugänglich zu machen (Dual Protocols-Entwurfsmuster[6]). Mit WCF kann beispielsweise derselbe Dienst für die gleichzeitige Verwendung von HTTP- und TCP/IP-Protokollen konfiguriert werden. Unsere DefaultBasketFactory implementiert das oben definierte Protokoll und verfügt über öffentliche Und-Factory-Methoden und private Methoden. Eine Factorymethode kann und sollte die anderen Factorymethoden in der Klasse verwenden, um niedrigere Abhängigkeiten zu erstellen. MQTT stellt sicher, dass Absender und Empfänger von Nachrichten vollständig entkoppelt sind. Der Abonnent (Empfänger), der eine Nachricht vom Broker erhält, befindet sich in einem separaten Nachrichtenfluss vom Herausgeber (Absender), der die Nachricht an den Broker sendet. Es gibt viele Anwendungsfälle, die eine Bestätigung des Nachrichteneingangs vom beabsichtigten Empfänger erfordern. Ein klassisches Beispiel ist das Öffnen der Tür Ihres Smart Home. Der Absender des Befehls “offene Tür” (in der Regel eine mobile App) möchte nicht nur wissen, wann und ob die Nachricht empfangen wurde, sondern auch das Ergebnis des Befehls. Diese so genannten “Business ACKs” sind der Hauptgrund, warum MQTT-Benutzer daran interessiert waren, das Anforderungs-Antwort-Muster in die MQTT 5-Spezifikation einzuführen. MQTT-Benutzer benötigten die Möglichkeit, End-to-End-Bestätigungen zwischen dem Absender und dem Empfänger einer Anwendungsnachricht bereitzustellen. Ähnlich wie bei anderen Funktionen in der neuen Protokollspezifikation wurde dieses Muster bereits von MQTTv3-Benutzern verwendet. Die Einführung von Antwortthemen, Korrelationsdaten und Antwortinformationen als Protokollfelder ermöglicht eine wesentlich erweiterbare, dynamischere und transparentere Anwendungsentwicklung mit dem Anforderungs-Antwort-Muster.

Dies liegt daran, dass wir bei der Annahme oder Anpassung an das Protokoll den Konkreten Typ angeben müssen, und das haben wir getan, indem wir typalias T = Detail gesagt haben, so dass unsere Funktion bereits zum Kompilieren den zu erwartenden Betontyp kennt, und deshalb löst sie eine Ausnahme aus, wenn wir versuchen, ExtendendDetail anstelle von Detail zu verwenden. Indem wir die Fabrik zu einem Protokoll machen, können wir mehrere Implementierungen davon haben, zum Beispiel eine spezielle Fabrik für die Testfälle. Wir denken über Sicherheit auf schritt und Schritt des Weges, von Protokoll- und Software-Design bis hin zur schnellen Bereitstellung von Bugfixes möglich. Wir beginnen mit der Definition eines Resolver-Protokolls für das Service Locator Pattern. Es ist ein einfaches Protokoll mit nur einer Methode zum Erstellen einer Instanz, die dem übergebenen ServiceType-Typ entspricht. Um ein Kommunikationsprotokoll zu standardisieren, müssen die Funktionen des Protokolls mit den Anforderungen an die Dienstinteraktion verglichen werden, einschließlich Sicherheit, Effizienz und Transaktionsunterstützung. Im Falle von Webdiensten, z. B. wenn eine Dienstzusammensetzung explizite Transaktionsunterstützung erfordert, wäre SOAP über HTTP eine bessere Wahl als die Verwendung von RESTful-Diensten. 🍻 Fügen wir die Implementierung von ExtendedCell hinzu, die demselben Protokoll entspricht, aber einen anderen Konkreten Typ verwendet. Mit dem gerouteten Remoteprozeduraufrufmuster kann jede Komponente eine Prozedur registrieren, die von jeder anderen Komponente aufrufen kann.

Um die Schattentyplöschung zu implementieren, müssen wir ein weiteres Protokoll hinzufügen und das Row-Protokoll wie folgt umgestalten: Wie Anforderungs- und Antwortdokumente erstellt werden müssen, damit die jeweiligen Komponenten sie akzeptieren und auswerten können, wird durch zwei DTDs definiert (DTD = Document Type Definition). Eine DTD ist ein Protokoll, das die Hierarchie und die Teile eines XML-Dokuments angibt. Basierend auf den Lösungen, die wir bisher gesehen haben, werden wir eine allgemeinere und flexiblere Lösung unter Verwendung des so genannten Service Locator-Designmusters entwickeln.