Support Vertrag Muster

Design by Contract (DbC), auch bekannt als Vertragsprogrammierung, Programmierung durch Vertrags- und Design-by-Contract-Programmierung, ist ein Ansatz für die Entwicklung von Software. Die folgende Tabelle fasst die Merkmale der drei in diesem Artikel beschriebenen Vertragstypen zusammen: Die Verwendung von Schematron im obigen Beispiel führt zu einigen interessanten Beobachtungen über Verträge zwischen Anbietern und Verbrauchern, mit Auswirkungen über die Dokumentvalidierung hinaus. In diesem Abschnitt zeichnen und verallgemeinern wir einige dieser Erkenntnisse und drücken sie in Form eines Musters aus, das wir Consumer-Driven Contract nennen. Das Microservices-Muster eignet sich besser für kleinere, gut partitionierte webbasierte Systeme als für unternehmensweite Großsysteme. Das Fehlen eines Mediators (Messaging Middleware) ist einer der Faktoren, die es für große komplexe Geschäftsanwendungsumgebungen schlecht geeignet machen. Andere Beispiele für Anwendungen, die für das Microservices-Architekturmuster gut geeignet sind, sind Anwendungen mit wenigen gemeinsam genutzten Komponenten und Anwendungen, die in sehr kleine diskrete Vorgänge unterteilt werden können. Der abgeleitete Charakter verbraucherorientierter Anbieterverträge verleiht der Beziehung zwischen Dienstleistungserbringer und Verbraucher einen heteronomen Aspekt. Das heißt, die Anbieter unterliegen einer Verpflichtung, die von außerhalb ihrer Grenzen entsteht. Dies hat keinerlei Auswirkungen auf den grundsätzlich autonomen Charakter ihrer Umsetzungen; es macht einfach deutlich, dass Dienstleistungen für den Erfolg davon abhängen, dass sie verbraucht werden. Wie entscheiden wir, ob wir ein Vertragselement in unseren Anbietervertrag aufnehmen? Wir tun dies, indem wir uns fragen, ob einer unserer Verbraucher vernünftigerweise eine oder mehrere Erwartungen äußern könnte, dass die durch das Element gekapselte Geschäftsfunktion während der gesamten Lebensdauer des Dienstes weiterhin erfüllt ist. Wir haben bereits gesehen, wie Verbraucher unseres Beispieldienstes Interesse an Teilen des vom Dienst exportierten Dokumentschemas zum Ausdruck bringen können und wie sie behaupten können, dass ihre Erwartungen in Bezug auf dieses Vertragselement weiterhin erfüllt werden.

Somit ist unser Dokumentenschema Teil unseres Providervertrags. Das Consumer-Driven Contract-Muster empfiehlt den Aufbau von Service-Communities, die verbraucher- und verbraucherorientierte Verträge nutzen. Das Muster legt jedoch weder die Form oder Struktur fest, die Verbraucher- und Verbraucherverträge annehmen sollten, noch bestimmt es, wie verbrauchererwartungen an den Anbieter übermittelt und während der Laufzeit des Anbieters geltend gemacht werden. Die Entkopplung des Vertrags ist der heilige Gral der Abstraktion. Stellen Sie sich vor, Sie können mit einem Dienst mit unterschiedlichen Daten in einem Nachrichtenformat kommunizieren, das sich von dem unterscheidet, was der Dienst erwartet – das ist die Essenz der Vertragsentkopplung. Die Dinge werden tendenziell etwas komplizierter, wenn die von einem Dienstverbraucher gesendeten Daten von den Daten abweichen, die vom entsprechenden Dienst erwartet werden. Diese Impedanzübereinstimmung in den tatsächlichen Vertragsdaten wird durch die Nachrichtenverbesserungsfunktion behoben. Während die Nachrichtentransformation über das Format der Anforderung besorgt ist, ist die Nachrichtenerweiterung über die Anforderungsdaten besorgt.

Diese Funktion ermöglicht es einer Komponente (in der Regel eine Middlewarekomponente), Anforderungsdaten hinzuzufügen oder zu ändern, sodass die vom Dienstverbraucher gesendeten Daten mit den vom Dienst erwarteten Daten übereinstimmen (und umgekehrt). Zunächst ist zu beachten, dass Dokumentschemas nur ein Teil dessen sind, was ein Dienstanbieter den Verbrauchern anbieten muss, damit sie seine Funktionalität nutzen können. Wir nennen die Summe dieser externen Verwertungspunkte den Anbietervertrag. Eines ihrer Ziele besteht darin, den Bedarf an Datentransformationen zu reduzieren, da zwei Dienste miteinander interagieren, was erreicht werden kann, wenn die Serviceverträge standardisierte Datenmodelle verwenden, z. B. XML-Schemas, wenn die Dienste als Webdienste implementiert wurden. Dies trägt auch dazu bei, die Interoperabilität von Diensten zu erschweren. Ein weiteres wichtiges Ziel dieses Entwurfsmusters ist die Verwendung einer standardisierten Art, Servicefunktionen auszudrücken, damit ihr Zweck und ihre Fähigkeit zur Entwurfszeit leicht verstanden werden können.

[8] Außerdem wird die Versionsnummer des Servicevertrags an die Modulversionsnummer gebunden.