Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das UseAndStyle-Beispiel veranschaulicht die Verwendung der Use- und Style-Eigenschaften für die XmlSerializerFormatAttribute und die DataContractFormatAttribute. Diese Eigenschaften wirken sich darauf aus, wie Nachrichten formatiert werden. Der Nachrichtentext ist standardmäßig mit der Formatvorlage Document formatiert. Diese Einstellungen können entweder auf Dienstvertragsebene oder auf Betriebsvertragsebene angegeben werden.
Hinweis
Die Einrichtungsverfahren und Build-Anweisungen für dieses Beispiel befinden sich am Ende dieses Themas.
Die Style Style-Eigenschaft bestimmt, wie die WSDL-Metadaten für den Dienst formatiert werden. Mögliche Werte sind Document, und Rpc. RPC bedeutet, dass die WSDL-Darstellung von Nachrichten, die für einen Vorgang ausgetauscht werden, Parameter enthält, als ob es sich um einen Remoteprozeduraufruf handelt. Im Folgenden finden Sie ein Beispiel.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
Das Festlegen der Formatvorlage Document bedeutet, dass die WSDL-Darstellung ein einzelnes Element enthält, das das Dokument darstellt, das für einen Vorgang ausgetauscht wird, wie im folgenden Beispiel gezeigt.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
Die Use Eigenschaft bestimmt das Format der Nachricht. Mögliche Werte sind Literal und Encoded; der Standardwert ist Literal. Literal bedeutet, dass es sich bei der Nachricht um eine Literalinstanz des Schemas in der WSDL handelt, wie im folgenden Beispiel für Dokument/Literal dargestellt.
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
Codiert bedeutet, dass die Schemas in der WSDL abstrakte Spezifikationen sind, die gemäß den Regeln in SOAP 1.1 Abschnitt 5 codiert sind. Es folgt ein RPC/Encoded-Beispiel.
<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
<n1 xsi:type="xsd:double" xmlns="">100</n1>
<n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>
Die WS-I Basic Profile 1.0 verbietet die Verwendung von Encoded, und Sie sollten es nur verwenden, wenn es von älteren Diensten erforderlich ist. Das Encoded Nachrichtenformat ist nur bei Verwendung des XmlSerializers verfügbar.
Damit Sie die gesendeten und empfangenen Nachrichten anzeigen können, basiert dieses Beispiel auf der Ablaufverfolgung und Nachrichtenprotokollierung. Die Dienstkonfiguration und der Quellcode wurden geändert, um Ablaufverfolgung und Nachrichtenprotokollierung zu aktivieren und zu nutzen. Darüber hinaus wurde die WSHttpBinding ohne Sicherheitsmaßnahmen konfiguriert, sodass die protokollierten Nachrichten in einem unverschlüsselten Format angezeigt werden können. Die resultierenden Protokolldateien (System.ServiceModel.e2e und Message.log) sollten mithilfe des Dienstablaufverfolgungs-Viewers (SvcTraceViewer.exe) angezeigt werden. Die Ablaufverfolgungen sind so konfiguriert, dass sie im Ordner C:\LOGS erstellt werden. Erstellen Sie den Ordner, bevor Sie das Beispiel ausführen. Um den Nachrichteninhalt im Tool "Ablaufverfolgungsanzeige" anzuzeigen, wählen Sie "Nachrichten " sowohl im linken als auch im rechten Bereich des Tools aus.
Im folgenden Code wird der Dienstvertrag veranschaulicht, wobei die Use-Eigenschaft auf OperationFormatUse festgelegt und das Format des Nachrichtentexts vom Standard (OperationFormatStyle) in Document geändert wurde.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
Um den Unterschied zwischen den Einstellungen Use und Style anzuzeigen, ändern Sie diese im Dienst, generieren Sie den Client, führen Sie das Beispiel aus, und überprüfen Sie die Datei "c:\logs\message.logs" mit dem Tool Service Trace Viewer. Beachten Sie auch die Auswirkungen auf die Metadaten, indem Sie http://localhost/ServiceModelSamples/service.svc?wsdl anzeigen. Die Metadaten für Dienste werden in der Regel in mehrere Seiten unterteilt. Die Hauptseite „wsdl“ enthält die WSDL-Bindungen, aber zeigen Sie http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 an, um die Nachrichtendefinitionen zu beobachten.
So können Sie das Beispiel einrichten, erstellen und ausführen
Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.
Erstellen Sie ein C:\LOGS-Verzeichnis zum Protokollieren von Nachrichten. Erteilen Sie dem Benutzer Netzwerkdienst Schreibberechtigungen für dieses Verzeichnis.
Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.