Wie füge ich ein Element zum WS-Vorgang in Consumer-End für 1 Provider hinzu, wenn es andere Provider gibt?

8

Ich habe eine WSDL und den Consumer / Client erstellt, der die Operation AddCar mit Daten für Modell und Farbe implementiert. Nun möchte ein WS-Produzent / Server auch Daten für die Länge haben. Ich nehme an, dass andere Hersteller Schwierigkeiten haben, sich aufgrund von Implementierungs-Outsourcing an diese Änderung anzupassen. Meine Optionen umfassen:

  1. Machen Sie eine neue Operation AddCarWithLength
  2. Erstellen Sie 2 Versionen von WSDL und Consumer-Code mit derselben Operation
  3. Aktualisieren Sie einfach die WSDL mit der optionalen -Länge, und fügen Sie die Operationsdaten nur für den Produzenten ein, der sie haben möchte.
  4. Aktualisieren Sie einfach die WSDL mit 0-N name-vaue-Paarelementen und fügen Sie die Operationsdaten nur für den Produzenten ein, der sie möchte.
  5. Fordern Sie die Kunden auf, das Unternehmen, das den WS-Produzenten implementiert hat, zu aktualisieren.

Optionen:

  1. kommt nicht in Frage
  2. Ich habe C # -Klassen in consumer / client generiert, so dass es zwei Codesets geben würde. ich müsste immer noch wissen (vielleicht mit config parameter oder smthn) welche version producer / server
  3. benutzt
  4. Bedeutet, dass ich nur wissen muss, mit welchem ​​Produzenten / Server ich rede.
  5. Wie 3, würde aber zukünftige Erweiterbarkeit ermöglichen
  6. Kann problematisch sein

Frage: Was ist der richtige / beste Weg, dies zu tun, wenn die Forderung an alle Hersteller, aktualisiert zu werden, unrealistisch sein kann?

    
char m 11.08.2016, 11:58
quelle

1 Antwort

0

WSDL sind für die wertvollen Definitionen bekannt. Zu Beginn sollte der Service immer ein klares Bild von Nutzung und Zukunft haben. Wie auch immer, jetzt bin ich damit einverstanden, Ihrem bestehenden WCF-Dienst ein Attribut (Datenelement - Länge) hinzuzufügen. Mein Vorschlag wäre,

  1. Analysieren und fügen Sie eine benutzerdefinierte Klasse von Ihnen hinzu, benennen Sie sie als Datenvertrag , fügen Sie sie Ihrem WCF-Vorgang hinzu und legen Sie sie als neuen Schnittstellen- / Vorgangsvertrag offen.

z. Mit in Klasse Auto, haben Sie ein Datenelement als Eigenschaften. Mit in Eigenschaften definieren Sie alle Ihre Analyseergebniselemente wie Länge, Breite, Farbe, Gewicht usw. Fügen Sie auch Dictionary<string,string> CustomAttributes; hinzu, damit Sie es in Zukunft verwenden können.

  1. Ähnlich wie oben, aber wenn Sie nicht viel Zeit haben. ohne irgendeine Analyse fügen Sie einfach ein Dictionary<string,string> Parameters; hinzu und legen Sie einen neuen Vertrag offen und verwenden Sie das.
Vincent 11.08.2016 12:28
quelle