Bindet eine benutzerdefinierte WSDL an einen vorhandenen WCF-Dienst

8

Ich habe einen Web-Service mit WCF erstellt. Ich kann nicht herausfinden, wie die Beschränkungen und die Einschränkungen in der WSDL / XSD durch den Datenvertrag festgelegt werden.

Was passiert, wenn ich das XSD2-Schema mit den Einschränkungen verbessere und dann dieses benutzerdefinierte Schema an den vorhandenen Service anbinde? Wenn ja, wie kann ich dafür sorgen, dass der Dienst die verbesserte WSDL verfügbar macht? Gibt es sonst eine andere Möglichkeit, die Metadaten für einen WCF-Dienst festzulegen?

    
Alberto De Caro 19.06.2012, 10:44
quelle

3 Antworten

1

Dies scheint ein häufiges Problem zu sein. Die Servicemetadaten beschreiben den Datenvertrag. Das heißt, die Struktur der ausgetauschten Daten ohne Validierungsinformationen.

Ich habe dieses Problem gelöst, indem ich eine Validierungsschicht oben auf der Serviceebene implementiert habe. Es geht wie folgt:

Zusätzlich zu einer WSDL vereinbaren der Autor und der Verbraucher des Dienstes auch eine verfeinerte XSD, die neben der bloßen Struktur der Datenverträge auch alle Validierungsdetails beschreibt.

Jede Partei (xml) serialisiert und validiert die Datenverträge gegen die verfeinerte XSD.

Beispiel "Pseudocode" für eine Service-Methode, die die Anfrage gegen eine XSD validiert.

%Vor%

Der Service-Consumer kann auch eine ähnliche Logik implementieren, um die Anfragedaten zu validieren, bevor sie an den Server gesendet werden.

    
xtrem 23.06.2012, 05:45
quelle
3

Bitte verwechseln Sie XSD und WSDL nicht - das sind ganz andere Dinge

Nach Ihrer Frage - versuchen Sie RiaServices . Es erlaubt Ihnen, solchen Code wie

zu schreiben %Vor%

Wie ich weiß, ist der einzige Weg, um Ihre WSDL mit Einschränkungen und Einschränkungen zu verbessern, Ihre DataContract-Klassen mit restricted-Attributen zu markieren (fixe mich, wenn es nicht wahr ist)

    
Andriy Zak 19.06.2012 11:29
quelle
1

Sie haben grundsätzlich zwei Möglichkeiten, einen Webservice zu erstellen:

  1. Code zuerst. Sie erstellen eine Klasse und markieren sie als Datenvertragsklasse plus einige weitere Attribute. Wenn Sie dies kompilieren, wird die WSDL Ihres Web Service von Ihrer Klasse generiert. Dies ist eine schnelle Methode und bietet Ihnen oft genug Kontrolle über die WSDL.

  2. Schema zuerst. Sie erstellen die WSDL manuell und verwenden ein Tool (z. B. WSCF.Blue oder), um die Datenkontraktklasse aus Ihrer WSDL zu generieren. Dadurch haben Sie vollständige Kontrolle über Ihr WSDL-Schema, aber meiner Erfahrung nach ist es mehr Arbeit, die WSDL als eine Datenvertragsklasse zu erstellen.

GTG 25.06.2012 16:36
quelle

Tags und Links