Sdílet prostřednictvím


Postupy: Použití monikeru služby Windows Communication Foundation bez registrace

Pro připojení ke službě Windows Communication Foundation (WCF) a komunikaci s ní musí klientská aplikace WCF obsahovat podrobnosti o adrese služby, konfiguraci vazby a kontraktu služby.

Moniker služby WCF obvykle získává požadovanou smlouvu prostřednictvím předchozí registrace požadovaných typů atributů, ale mohou existovat případy, kdy to není možné. Místo registrace může moniker získat definici smlouvy ve formě dokumentu WSDL (Web Services Definition Language) prostřednictvím použití parametru wsdl nebo prostřednictvím serveru Metadata Exchange prostřednictvím použití parametru mexAddress .

To umožňuje scénáře, jako je například distribuce excelové tabulky, kde se některé hodnoty buněk počítají prostřednictvím interakcí webové služby. V tomto scénáři nemusí být možné zaregistrovat sestavení kontraktů služeb na všech klientech, kteří mohou dokument otevřít. Parametr wsdl nebo mexAddress parametr umožňuje samostatné řešení.

Poznámka:

Vzájemné ověřování musí být použito k ochraně před neoprávněnou manipulací nebo falšováním požadavků a odpovědí. Konkrétně je důležité, aby klienti měli jistotu, že koncový bod Exchange metadat, který reaguje, je zamýšlenou důvěryhodnou stranou.

Příklad

Tento příklad ukazuje použití monikeru služby se smlouvou MEX. Služba s následujícím kontraktem je vystavena 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);  
}  

K vytvoření klienta WCF pro vzdálenou službu lze použít následující příklad řetězec 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/  

Během provádění klientské aplikace provede klient WS-MetadataExchange s poskytnutou mexAddress. To může vrátit adresu, vazbu a podrobnosti smlouvy pro řadu služeb. Funkce address, contractcontractNamespacebinding a bindingNamespace parametry slouží k identifikaci zamýšlené služby. Jakmile jsou tyto parametry spárovány, moniker vytvoří klienta WCF s příslušnou definicí kontraktu a volání lze pak provést pomocí klienta WCF, stejně jako u zadaného kontraktu.

Poznámka:

Pokud je moniker poškozený nebo pokud je služba nedostupná, volání vrátí GetObject chybu s informacemi o neplatné syntaxi. Pokud se zobrazí tato chyba, ujistěte se, že je název, který používáte, správný a že je služba dostupná.

Viz také