Udostępnij przez


Ustawianie właściwości użycia i stylu

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 Document. Te ustawienia można określić na poziomie kontraktu usługi lub na poziomie kontraktu operacji.

Uwaga / Notatka

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. Literalny oznacza, że komunikat jest dosłownym przykładem schematu w WSDL, jak pokazano w poniższym przykładzie Dokument/Dosłowny.

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

Program WS-I Basic Profile 1.0 uniemożliwia korzystanie z usługi Encoded i należy używać go 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 tworzenia 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 zauważyć różnicę między ustawieniami Use a Style, zmodyfikuj je w usłudze, ponownie wygeneruj klienta, uruchom przykład, a następnie sprawdź plik c:\logs\message.logs korzystając z 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 należy przejrzeć http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0, aby zobaczyć definicje komunikatów.

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Upewnij się, że wykonano procedurę instalacji One-Time 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 Kompilowanie przykładów Windows Communication Foundation.

  4. Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w Uruchamianie przykładów programu Windows Communication Foundation.