Udostępnij za pośrednictwem


Instrukcje: używanie monikera programu Windows Communication Foundation bez rejestracji

Aby nawiązać połączenie z usługą Windows Communication Foundation (WCF) i komunikować się z nią, aplikacja kliencka WCF musi mieć szczegółowe informacje o adresie usługi, konfiguracji powiązania i kontrakcie usługi.

Moniker usługi WCF zwykle uzyskuje wymaganą umowę przez wcześniejszą rejestrację wymaganych typów atrybutów, ale mogą wystąpić przypadki, w których nie jest to możliwe. Zamiast rejestracji moniker może uzyskać definicję kontraktu w postaci dokumentu WSDL (Web Services Definition Language) za pomocą wsdl parametru lub za pośrednictwem wymiany metadanych za pomocą parametru mexAddress .

Umożliwia to scenariusze, takie jak rozkład arkusza kalkulacyjnego programu Excel, w którym niektóre wartości komórek są obliczane za pośrednictwem interakcji z usługą sieci Web. W tym scenariuszu może nie być możliwe zarejestrowanie zestawu kontraktu usługi na wszystkich klientach, którzy mogą otworzyć dokument. Parametr wsdl lub mexAddress parametr umożliwia samodzielne rozwiązanie.

Uwaga

Wzajemne uwierzytelnianie musi być używane do ochrony przed naruszeniami żądań i odpowiedzi lub fałszowaniem. W szczególności ważne jest, aby klienci mogli mieć pewność, że punkt końcowy wymiany metadanych, który odpowiada, jest przeznaczoną zaufaną stroną.

Przykład

W tym przykładzie pokazano użycie nazwy usługi z kontraktem MEX. Usługa z następującym kontraktem jest uwidoczniona wsHttpBinding.

using System.ServiceModel;  
  
// ...
  
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Demo")]  
public interface IAffiliate  
{  
    [OperationContract]  
    bool NewAffiliate(string ID, string company, string fullname, string accountsCode);  
    [OperationContract]  
    bool RemoveAffiliate(string ID);  
    [OperationContract]  
    double RevenueCheckMonthly(ref string ID);  
    [OperationContract]  
    double RevenueCheckTotal(ref string ID);  
}  

Aby utworzyć klienta WCF dla usługi zdalnej, można użyć następującego przykładowego ciągu moniker.

service4:mexAddress="http://servername/Affiliates/service.svc/mex",  
address="http://servername/Affiliates/service.svc",  
contract=IAffiliate, contractNamespace=http://Microsoft.ServiceModel.Demo,  
binding=WSHttpBinding_IAffiliate, bindingNamespace=http://tempuri.org/  

Podczas wykonywania aplikacji klienckiej klient wykonuje WS-MetadataExchange element z podanym mexAddresselementem . Może to zwrócić adres, powiązanie i szczegóły kontraktu dla wielu usług. Parametry address, contract, contractNamespacebinding i bindingNamespace służą do identyfikowania zamierzonej usługi. Po dopasowaniu tych parametrów moniker konstruuje klienta WCF z odpowiednią definicją kontraktu, a następnie można wykonać wywołania przy użyciu klienta WCF, tak jak w przypadku kontraktu typizowanego.

Uwaga

Jeśli moniker jest źle sformułowany lub jeśli usługa jest niedostępna, wywołanie GetObject metody zwraca błąd z informacją "Nieprawidłowa składnia". Jeśli wystąpi ten błąd, upewnij się, że używany pseudonim jest poprawny i usługa jest dostępna.

Zobacz też