Festlegen der Use-Eigenschaft und der Style-Eigenschaft
In diesem Beispiel wird die Verwendung der Use-Eigenschaft und der Style-Eigenschaft in XmlSerializerFormatAttribute und DataContractFormatAttribute veranschaulicht. Diese Eigenschaften beeinflussen die Formatierung von Nachrichten. Standardmäßig wird der Nachrichtentext mit dem auf Document festgelegten Format formatiert. Diese Einstellungen können entweder auf der Dienstvertragsebene oder der Vorgangsvertragsebene angegeben werden.
Hinweis: |
---|
Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas. |
Die Style-Stileigenschaft 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 wurden, Parameter entsprechend einem Remoteprozeduraufruf enthält. Beachten Sie folgendes Beispiel:
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
Das Format auf Document festzulegen, bedeutet, dass die WSDL-Darstellung ein einzelnes Element enthält, das das gegen einen Vorgang ausgetauschte Dokument darstellt. Dies ist im folgenden Beispiel veranschaulicht.
<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 die Nachricht eine Literalinstanz des Schemas in der WSDL ist, wie im folgenden Dokument-/Literal-Beispiel dargestellt.
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
Encoded bedeutet, dass die Schemen in der WSDL abstrakte Spezifikationen sind, die gemäß den Regeln in SOAP 1.1, Abschnitt 5 codiert werden. Es folgt ein RPC/Encoded-Beispiel.
<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
<n1 xsi:type="xsd:double" >100</n1>
<n2 xsi:type="xsd:double" >15.99</n2>
</q1:Add>
WS-I Basic Profile 1.0 verbietet die Verwendung von Encoded. Sie sollten dies daher nur verwenden, wenn es aufgrund von älteren Diensten erforderlich ist. Das Encoded-Nachrichtenformat ist nur bei Verwendung von XmlSerializer verfügbar.
Damit Sie die gesendeten und empfangenen Nachrichten anzeigen können, basiert dieses Beispiel auf Ablaufverfolgung und Nachrichtenprotokollierung. Die Dienstkonfiguration und der Quellcode wurden geändert, um Ablaufverfolgung und Nachrichtenprotokollierung zu aktivieren und zu verwenden. Außerdem wurde WsHttpBinding ohne Sicherheit konfiguriert, sodass protokollierte Nachrichten in einem unverschlüsselten Format angezeigt werden können. Die resultierenden Ablaufverfolgungsprotokolle (System.ServiceModel.e2e und Message.log) sollten mit Service Trace Viewer-Tool (SvcTraceViewer.exe) angezeigt werden. Die Ablaufverfolgungen sind so konfiguriert, dass sie im Ordner C:\LOGS erstellt werden. Erstellen Sie den Ordner vor dem Ausführen des Beispiels. Wählen Sie zum Anzeigen der Nachrichteninhalte im Service Trace Viewer-Tool im linken und rechten Bereich Meldungen aus.
Im folgenden Code wird der Dienstvertrag veranschaulicht, wobei die Use-Eigenschaft auf Encoded festgelegt und das Format des Nachrichtentexts vom Standard (Document) in Rpc 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 unterschiedlichen Einstellungen für Use und Style zu verdeutlichen, ändern Sie sie im Dienst, generieren Sie den Client erneut, führen Sie das Beispiel aus, und betrachten Sie dann die Datei "c:\logs\message.logs" im Service Trace Viewer-Tool. Beachten Sie auch die Auswirkungen auf die Metadaten, indem Sie https://localhost/ServiceModelSamples/service.svc?wsdl anzeigen. Die Metadaten für Dienste sind normalerweise in mehrere Seiten untergeteilt. Die wsdl-Hauptseite enthält die WSDL-Bindungen, zeigen Sie jedoch https://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 an, um die Nachrichtendefinitionen zu betrachten.
So richten Sie das Beispiel ein, erstellen es und führen es aus
Stellen Sie sicher, dass Sie Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.
Erstellen Sie zum Protokollieren von Nachrichten das Verzeichnis C:\LOGS. Weisen Sie dem Benutzer Network Service die Schreibberechtigung für dieses Verzeichnis zu.
Zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder über Computer hinweg ausführen möchten, folgen Sie den unter Running the Windows Communication Foundation Samples aufgeführten Anweisungen.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Message\UseAndStyle
|