Udostępnij za pośrednictwem


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

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Utwórz katalog C:\LOGS na potrzeby rejestrowania komunikatów. Nadaj użytkownikowi uprawnienia do zapisu usługi sieciowej dla tego katalogu.

  3. 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).

  4. 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.