Webdiensterweiterungsdatei

In diesem Abschnitt wird die Webdiensterweiterungsdatei beschrieben.

Die WSX-Datei (WCF-Diensterweiterung) ist unsere Erweiterungsdatei, die es der Anwendung ermöglicht, lokale Verhaltensweisen zu bearbeiten, die sich nicht auf die Darstellung von Wire Data auswirken. Es sollte erweiterbar sein, dass wir in Zukunft neue Features hinzufügen können, ohne die Interoperabilität zu brechen.

Die Gesamtstruktur von WSX würde die Struktur der XSD- oder WSDL-Datei imitieren, bei der es sich um eine XML-Datei handelt, die dieselbe Struktur wie die Haupteingabedatei verwaltet. Zusätzliche Attribute für das gleiche benannte Token in der Hauptdatei geben die Attribute an, die die Anwendung über das Standardverhalten steuern möchte.

In M3 werden wir möglicherweise nichts unternehmen. In V1 sehen wir, dass die folgenden Attribute unterstützt werden:

Verwendung Gibt das Count-Argument/Parameterfeld an.

Dies ist ein Elementattribut, gilt aber nur für den Arraytyp. Das IsCountOf-Attribut gibt das Arrayelement an. Das Count-Feld bzw. der Parameter wird nicht im Netzwerk angezeigt.

<xs:schema xmlns:tns="http://Example.org" elementFormDefault="qualified" 
targetNamespace="http://Example.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <element name="FooInParam">
  <complexType> 
   <!-- MyArray field is presented in WSDL file as an element -->
    <element name="MyArrayCount" IsCountOf="MyArray"></element>
   </complexType>
  </element>
 </xs:schema>

Angeben des Lese-/Schreibrückrufs für den benutzerdefinierten Typ

Diese Attribute erzwingen, wsutil.exe WS _ CUSTOM TYPE für _ den angegebenen Typ zu generieren. _Benutzerdefiniertes Readcallback-Attribut gibt die Read-Rückrufroutine an, und custom _ writecallback gibt die Rückrufroutine für das Schreiben an.

<xs:schema xmlns:tns="http://Example.org" elementFormDefault="qualified" 
targetNamespace="http://Example.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <element name="mytype" custom_readcallback="myreadcallback" custom_writecallback="mywritecallback"> 
 </element>
</xs:schema>

Wir können über eine entsprechende WSX-Datei verfügen, um das lokale Verhalten zu beschreiben:

<xs:schema xmlns:tns="http://Example.org" elementFormDefault="qualified" 
targetNamespace="http://Example.org" xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <element name="FooInParam" DataValidationRoutine="MyArrayValidation">
  <complexType> 
   <element name="MyLocalArrayCount" IsCountOf="MyArray"></element> 
  </complexType>
 </element>
</xs:schema>

WsUtil.exe generiert den folgenden Prototyp für die -Struktur:

typedef struct FooInParam
{
  ULONG MyLocalArrayCount;
  int * MyArray;
};