使用 WCF LOB 配接器 SDK 描述 WSDL PortType 檔架構
WCF LOB 配接器 SDK 產生的 WSDL 包含每個 portType 的其他描述性資訊。 本主題說明此額外資訊的架構。
檔 XML 架構
作業檔是使用 portType 的注釋來實作,以新增代表作業之配接器檔的節點。 此節點包含進一步描述作業和參數的子節點。 此架構的定義如下。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="adapterOperationDocumentation">
<xs:complexType>
<xs:sequence>
<xs:element name="summary" type="xs:string" />
<xs:element maxOccurs="unbounded" name="param">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="returns" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
針對指定的作業產生 WSDL 時,會使用上述架構,以人類可讀的格式提供其他描述性資訊。 例如,會針對 Echo 配接器的 EchoString 作業傳回下列 portType 資訊。
<wsdl:portType name="EchoService">
<wsdl:operation name="EchoString">
<wsdl:documentation>
<doc:adapterOperationDocumentation>
<doc:summary>String EchoString( string aName)\</doc:summary>
<doc:param name="aName">This string will be echoed back to the user.\</doc:param>
<doc:returns>String value containing the value of aName \</doc:returns>
</doc:adapterOperationDocumentation>
</wsdl:documentation>
<wsdl:input wsaw:Action="Echo/EchoString" message="ns2:EchoService_EchoString_InputMessage" />
<wsdl:output wsaw:Action="Echo/EchoString/response" message="ns2:EchoService_EchoString_OutputMessage" />
</wsdl:operation>
</wsdl:portType>
針對作業,會從 Microsoft.ServiceModel.Channels.Common.ParameterizedOperationMetadata
取得檔元素的值。 上述範例是產生為下列範例的結果。
ParameterizedOperationMetadata om = new ParameterizedOperationMetadata(operationId, operationId);
// set this if you want this operation to belong to this interface name
// in the generated proxy, the interface name will be EchoService
// and the client implementation name will be EchoServiceClient.
om.OperationGroup = "EchoService";
// set the operation namespace to be same as service namespace
om.OperationNamespace = EchoAdapter.SERVICENAMESPACE;
switch (operationId)
{
case "Echo/EchoString":
om.DisplayName = "EchoString";
om.OriginalName = "targetSystemEchoString";
om.Description = "String EchoString( string aName)";
OperationParameter parm1 = new OperationParameter("aName", OperationParameterDirection.In, QualifiedType.StringType, false);
parm1.Description = "This string will be echoed back to the user.";
OperationResult result = new OperationResult(new SimpleQualifiedType(XmlTypeCode.String), false);
result.Description = "String value containing the value of aName";
om.Parameters.Add(parm1);
om.OperationResult = result;
return om;