Udostępnij za pośrednictwem


Eksportowanie niestandardowych metadanych na potrzeby rozszerzenia programu WCF

W programie Windows Communication Foundation (WCF) eksportowanie metadanych to proces opisywania punktów końcowych usługi i projekcji ich w równoległą, ustandaryzowaną reprezentację, która umożliwia klientom zrozumienie sposobu korzystania z usługi. Niestandardowe metadane składają się z elementów XML, których eksporterzy metadanych dostarczony przez system nie mogą eksportować. Zazwyczaj obejmuje to niestandardowe elementy WSDL dla zachowań zdefiniowanych przez użytkownika oraz powiązania elementów i asercji zasad dotyczących możliwości i wymagań powiązań i kontraktów.

W tej sekcji opisano eksportowanie niestandardowych asercji WSDL lub zasad i nie koncentruje się na samym procesie eksportowania. Aby uzyskać więcej informacji na temat używania typów, które eksportują i importować metadane niezależnie od tego, czy metadane są niestandardowe, czy skonstruowane przez system, zobacz Eksportowanie i importowanie metadanych.

Omówienie

Gdy metadane są publikowane przy użyciu System.ServiceModel.Description.ServiceMetadataBehaviorelementu , są badane, System.ServiceModel.Description.ServiceDescription a XSD i WSDL — w tym asercji zasad — są generowane dla wszystkich kontraktów i powiązań, które WCF mogą obsługiwać przy użyciu atrybutów i powiązań dostarczonych przez system. Jednak atrybuty zachowania niestandardowego lub elementy powiązania wymagają obsługi, zanim będą mogły zostać prawidłowo wyeksportowane.

W tej sekcji opisano:

  1. Jak zaimplementować interfejs i używać System.ServiceModel.Description.IWsdlExportExtension go, który uwidacznia dane generowania WSDL przed opublikowaniem WSDL.

  2. Sposób implementowania i używania interfejsu System.ServiceModel.Description.IPolicyExportExtension , który uwidacznia dane zasad przed wyeksportowaniem asercji zasad w danych WSDL.

Aby uzyskać więcej informacji na temat importowania niestandardowych asercji WSDL i zasad, zobacz Importowanie niestandardowych metadanych dla rozszerzenia WCF.

Eksportowanie niestandardowych elementów WSDL

Zaimplementuj IWsdlExportExtension zachowanie operacji, zachowanie kontraktu, zachowanie punktu końcowego lub element powiązania (IOperationBehaviorIContractBehavior, , IEndpointBehaviorlub System.ServiceModel.Channels.BindingElement odpowiednio) i wstaw zachowania lub elementy powiązania do opisu usługi, którą próbujesz wyeksportować. (Aby uzyskać więcej informacji na temat wstawiania zachowań, zobacz Konfigurowanie i rozszerzanie środowiska uruchomieniowego przy użyciu zachowań). Element jest wywoływany IWsdlExportExtension dla każdego punktu końcowego, a każdy punkt końcowy eksportuje kontrakt jako pierwszy, jeśli nie został jeszcze wyeksportowany. Możesz uczestniczyć w każdym procesie eksportowania, w zależności od potrzeb:

Metoda jest wywoływana ExportContract we wszystkich IWsdlExportExtension implementacjach w System.ServiceModel.Description.ContractDescription ramach eksportowanego wystąpienia. Metoda jest wywoływana ExportEndpoint we wszystkich IWsdlExportExtension implementacjach z System.ServiceModel.Description.ServiceEndpoint eksportowanym wystąpieniem.

Aby uzyskać więcej informacji, zobacz Jak wyeksportować niestandardowy plik WSDL i przykładową niestandardową publikację WSDL.

Eksportowanie asercji zasad niestandardowych

Zaimplementuj IPolicyExportExtension element on a BindingElement i dodaj element powiązania do powiązania, aby napisać niestandardowe asercji zasad na temat powiązań pomocy technicznej i możliwości kontraktów w języku WSDL. Element IPolicyExportExtension jest wywoływany raz podczas eksportowania zaimplementowanego elementu powiązania w powiązaniu i przekazuje element PolicyConversionContext do ExportPolicy metody . Metody w wystąpieniu PolicyConversionContext umożliwiają dodanie do asercji zasad dołączonych do powiązania WSDL w temacie komunikatu, operacji lub punktu końcowego.

Aby uzyskać więcej informacji, zobacz How to: Export Custom Policy Assertions (Instrukcje: eksportowanie asercji zasad niestandardowych).

Zobacz też