Ustawianie właściwości Use i Style
W przykładzie UseAndStyle pokazano, jak używać właściwości Use i Style w obiekcie XmlSerializerFormatAttribute i DataContractFormatAttribute. Te właściwości wpływają na sposób formatowania komunikatów. Domyślnie treść komunikatu jest formatowana przy użyciu stylu ustawionego na Documentwartość . Te ustawienia można określić na poziomie kontraktu usługi lub na poziomie kontraktu operacji.
Uwaga
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Właściwość Style style określa sposób formatowania metadanych WSDL dla usługi. Możliwe wartości to Document, i Rpc. RPC oznacza, że reprezentacja WSDL komunikatów wymienianych dla operacji zawiera parametry tak, jakby było to zdalne wywołanie procedury. Poniżej przedstawiono przykład.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
Ustawienie stylu Document oznacza, że reprezentacja WSDL zawiera jeden element reprezentujący dokument wymieniany dla operacji, jak pokazano w poniższym przykładzie.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
Właściwość Use określa format komunikatu. Możliwe wartości to Literal i Encoded; wartość domyślna to Literal. Literał oznacza, że komunikat jest wystąpieniem literału schematu w języku WSDL, jak pokazano w poniższym przykładzie dokumentu/literału.
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
Kodowane oznacza, że schematy w języku WSDL są specyfikacjami abstrakcyjnymi zakodowanymi zgodnie z regułami znajdującymi się w sekcji SOAP 1.1 5. Poniżej przedstawiono przykład RPC/Encoded.
<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>
Profil podstawowy WS-I 1.0 uniemożliwia korzystanie z niego Encoded i należy go używać tylko wtedy, gdy jest to wymagane przez starsze usługi. Format komunikatu Encoded
jest dostępny tylko w przypadku używania narzędzia XmlSerializer.
Aby umożliwić wyświetlanie wysyłanych i odbieranych komunikatów, ten przykład jest oparty na śledzeniu i rejestrowaniu komunikatów. Konfiguracja usługi i kod źródłowy zostały zmodyfikowane w celu włączenia i korzystania z śledzenia i rejestrowania komunikatów. Ponadto element został skonfigurowany bez zabezpieczeń, WSHttpBinding więc zarejestrowane komunikaty można wyświetlać w formacie niezaszyfrowanym. Wynikowe dzienniki śledzenia (System.ServiceModel.e2e i Message.log) powinny być wyświetlane przy użyciu narzędzia Podgląd śledzenia usługi (SvcTraceViewer.exe). Ślady są skonfigurowane do utworzenia w folderze C:\LOGS. Utwórz folder przed uruchomieniem przykładu. Aby wyświetlić zawartość wiadomości w narzędziu Trace Viewer, wybierz pozycję Komunikaty w okienkach po lewej i prawej stronie narzędzia.
Poniższy kod przedstawia kontrakt usługi z właściwością Use ustawioną na OperationFormatUse , a format treści komunikatu został zmieniony z domyślnego OperationFormatStyle na Document.
[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);
}
Aby zobaczyć różnicę między różnymi Use ustawieniami i Style , zmodyfikuj je w usłudze, ponownie wygeneruj klienta, uruchom przykład i sprawdź plik c:\logs\message.logs za pomocą narzędzia Podgląd śledzenia usługi. Zwróć również uwagę na wpływ na metadane, wyświetlając element http://localhost/ServiceModelSamples/service.svc?wsdl
. Metadane usług są zwykle podzielone na wiele stron. Główna strona wsdl zawiera powiązania WSDL, ale widok http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0
do obserwowania definicji komunikatów.
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Utwórz katalog C:\LOGS na potrzeby rejestrowania komunikatów. Nadaj użytkownikowi uprawnienia do zapisu usługi sieciowej dla tego katalogu.
Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).
Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.