Gewusst wie: Verwenden des Windows Communication Foundation-Dienstmonikers ohne RegistrierungHow to: Use the Windows Communication Foundation Service Moniker without Registration

Um eine Verbindung mit herstellen und mit einem Windows Communication Foundation (WCF)-Dienst kommunizieren, benötigen eine WCF-Clientanwendung die Details der Adresse des Diensts, der Bindungskonfiguration und die den Dienstvertrag.To connect to and communicate with a Windows Communication Foundation (WCF) service, a WCF client application must have the details of the service address, the binding configuration, and the service contract.

Der WCF-Dienstmoniker ruft in der Regel den erforderlichen Vertrag über vorherige Registrierung der erforderlichen Attributtypen ab, aber es gibt möglicherweise Fälle, in denen dies nicht möglich ist.The WCF service moniker typically obtains the required contract through prior registration of the required attribute types, but there might be cases where this is not feasible. Anstelle der Registrierung kann der Moniker die Definition des Vertrags in Form eines Web Services Definition Language (WSDL)-Dokuments abrufen. Dies geschieht durch Verwendung des wsdl-Parameters, durch Metadatenaustausch oder durch Verwendung des mexAddress-Parameters.In place of registration, the moniker can obtain the definition of the contract in the form of a Web Services Definition Language (WSDL) document, through the use of the wsdl parameter or through Metadata Exchange, through the use of the mexAddress parameter.

Dadurch wird beispielsweise die Verteilung eines Excel-Arbeitsblatts, in dem einige Zellenwerte anhand von Webdienstinteraktionen berechnet werden, ermöglicht.This enables scenarios such as the distribution of an Excel spreadsheet where some of the cell values are calculated through Web service interactions. In diesem Szenario kann die Dienstvertragassembly möglicherweise nicht auf allen Clients registriert werden, von denen das Dokument ggf. geöffnet wird.In this scenario, it might not be feasible to register the service contract assembly on all clients that might open the document. Der wsdl-Parameter oder der mexAddress-Parameter aktiviert eine in sich geschlossene Projektmappe.The wsdl parameter or the mexAddress parameter enables a self-contained solution.

Hinweis

Gegenseitige Authentifizierung muss verwendet werden, um Schutz vor Anforderungs- und Antwortmanipulation oder Spoofing zu bieten.Mutual authentication must be used to protect against request and response tampering or spoofing. Insbesondere benötigen Clients die Gewährleistung, dass es sich beim antwortenden Endpunkt des Metadatenaustauschs um die gewünschte vertrauenswürdige Partei handelt.Specifically, it is important for clients to be assured that the Metadata Exchange endpoint that is responding is the intended trusted party.

BeispielExample

In diesem Beispiel wird die Verwendung des Dienstmonikers mit einem MEX-Vertrag veranschaulicht.This example shows the use of the service moniker with a MEX contract. Ein Dienst mit dem folgenden Vertrag wird mit wsHttpBinding verfügbar gemacht.A service with the following contract is exposed with a 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);  
}  

Zum Zweck der Erstellung eines WCF-Clients für den Remotedienst folgende beispielmonikerzeichenfolge können verwendet werden.To construct a WCF client for the remote service the following example moniker string can be used.

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/  

Während der Ausführung der Clientanwendung führt der Client WS-MetadataExchange mit der bereitgestellten mexAddress aus.During the execution of the client application, the client performs a WS-MetadataExchange with the provided mexAddress. Dabei werden unter Umständen Adresse, Bindung und Vertragsdetails für eine Reihe von Diensten zurückgegeben.This might return the address, binding and contract details for a number of services. Der address-Parameter, der contract-Parameter, der contractNamespace-Parameter, der binding-Parameter und der bindingNamespace-Parameter werden zum Identifizieren des gewünschten Diensts verwendet.The address, contract, contractNamespace, binding and bindingNamespace parameters are used to identify the intended service. Nach dem Abgleich dieser Parameter erstellt der Moniker einen WCF-Client mit der erforderlichen Vertragsdefinition und kann dann aufgerufen werden mithilfe des WCF-Clients, wie mit dem typisierten Vertrag.Once those parameters have been matched, the moniker constructs a WCF client with the appropriate contract definition and calls can then be made using the WCF client, as with the typed contract.

Hinweis

Ist der Moniker nicht ordnungsgemäß formatiert oder der Dienst nicht verfügbar, wird nach dem GetObject-Aufruf ein Syntaxfehler zurückgegeben.If the moniker is malformed or if the service is unavailable, the call to GetObject returns an error saying "Invalid Syntax". Vergewissern Sie sich bei Auftreten dieses Fehlers, dass der verwendete Moniker korrekt und der Dienst verfügbar ist.If you receive this error, make sure the moniker you are using is correct and the service is available.

Siehe auchSee Also

Vorgehensweise: Registrieren und Konfigurieren eines DienstmonikersHow to: Register and Configure a Service Moniker