WSDL
Servicevertrag mit Operationen, Nachrichten, Bindings und Endpoint.
WSDL-basierte Services, XML-Schemas, Routing, Transformation, Orchestrierung, Fehlerkanal und Vertragsstabilitaet.
SOAP- und ESB-Landschaften entstanden oft, um Punkt-zu-Punkt-Kopplungen zu reduzieren. In der Praxis enthalten sie aber nicht nur Routing, sondern auch Mapping, Validierung, Anreicherung, Orchestrierung, Fehlerkanal und manchmal versteckte Fachentscheidungen.
WSDL und XSD sind mehr als technische Dateien. Sie beschreiben, welche Daten ein Unternehmen offiziell zwischen Systemen austauscht. Ein neues REST-API kann den Altvertrag nicht ersetzen, wenn die fachliche Semantik der XML-Felder unklar bleibt.
Modernisierung bedeutet hier: Verträge verstehen, kanonische Modelle kritisch pruefen, Consumer identifizieren, Versionierung sauber planen und ESB-Logik schrittweise in klar testbare Adapter oder Prozessdienste ueberfuehren.
Servicevertrag mit Operationen, Nachrichten, Bindings und Endpoint.
Schema fuer Request/Response, Typen, Pflichtfelder und Wertebereiche.
Standardisierte Fehlerantwort mit technischem oder fachlichem Fehlerinhalt.
ESB-Schritt fuer Routing, Mapping, Validierung, Protokollwechsel oder Enrichment.
Die Beispiele sind bewusst nicht minimalistisch. Sie zeigen typische Artefakte, die man in echten Legacy-Analysen findet: Schnittstellenverträge, Containerkonfiguration, SQL/PL-SQL, Jobdefinitionen, Queue-Regeln oder Adaptercode.
<wsdl:definitions name="BillingService" targetNamespace="http://example.com/billing/v1">
<wsdl:message name="CreateInvoiceRequest">
<wsdl:part name="payload" element="tns:createInvoiceRequest"/>
</wsdl:message>
<wsdl:portType name="BillingPortType">
<wsdl:operation name="CreateInvoice">
<wsdl:input message="tns:CreateInvoiceRequest"/>
<wsdl:output message="tns:CreateInvoiceResponse"/>
<wsdl:fault name="BusinessFault" message="tns:BusinessFault"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
<xsl:template match="partnerInvoice">
<bill:createInvoiceRequest>
<bill:customerNumber><xsl:value-of select="customer/id"/></bill:customerNumber>
<bill:invoiceDate><xsl:value-of select="header/date"/></bill:invoiceDate>
<bill:sourceSystem>PARTNER-PORTAL</bill:sourceSystem>
</bill:createInvoiceRequest>
</xsl:template>
public class SoapBillingGateway implements BillingPort {
private final BillingServiceSoap soap;
public InvoiceCreationResult createInvoice(CreateInvoiceCommand command) {
try {
CreateInvoiceResponse response = soap.createInvoice(map(command));
return InvoiceCreationResult.accepted(response.getInvoiceNumber());
} catch (BusinessFault_Exception ex) {
return InvoiceCreationResult.rejected(ex.getFaultInfo().getReasonCode());
} catch (WebServiceException ex) {
throw new IntegrationTimeoutException("Billing SOAP unavailable", ex);
}
}
}
| Aspekt | Beschreibung |
|---|---|
| Fachliches Risiko | Unklare Verantwortung fuer Servicevertrag fuehrt zu widerspruechlichen Entscheidungen zwischen Alt- und Neusystem. |
| Technisches Risiko | WSDL und angrenzende Komponenten werden isoliert betrachtet; Laufzeitkopplung bleibt verborgen. |
| Betriebsrisiko | Fehlerkanal, Monitoring, Restart oder manuelle Klaerung sind nicht ausreichend dokumentiert. |
| Migrationsrisiko | Neue Architektur uebernimmt Daten oder Schnittstellen, ohne fachliche Invarianten und historische Sonderfaelle abzusichern. |
| Pattern | Einsatz in diesem System |
|---|---|
| Strangler Fig Pattern | Neue Funktionalitaet vor das Altsystem setzen und Altanteile schrittweise herausloesen. |
| Anti-Corruption Layer | Altbegriffe, technische Codes und Datenformate vom neuen Domänenmodell trennen. |
| Facade | Komplexe Legacy-Operationen hinter klaren fachlichen Use-Case-Methoden kapseln. |
| Adapter | Protokolle und Formate wie SOAP, MQ, Copybook, SQL oder File in Ports uebersetzen. |
| Golden Master Test | Bestehendes Verhalten mit Referenzdaten erfassen und gegen neue Implementierung vergleichen. |
Nimm eine SOAP-Operation und erstelle eine Vertragstabelle: Operation, Request-Felder, Response-Felder, Pflichtlogik, Fault-Typen, bekannte Consumer, Beispiel-XML, Versionierungsrisiko und moderner Zieladapter.