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

Soll eine Verbindung mit einem Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienst hergestellt und mit diesem kommuniziert werden, benötigt eine WCFWCF-Clientanwendung die genauen Daten der Dienstadresse, der Bindungskonfiguration und des Dienstvertrags.To connect to and communicate with a Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service, a WCFWCF client application must have the details of the service address, the binding configuration, and the service contract.

Der WCFWCF-Dienstmoniker ruft in der Regel den erforderlichen Vertrag über vorherige Registrierung der erforderlichen Attributtypen ab, doch in manchen Fällen ist dies nicht möglich.The WCFWCF 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);  
}  

Um einen WCFWCF-Client für den Remotedienst zu erstellen, kann die folgende Beispielmonikerzeichenfolge verwendet werden.To construct a WCFWCF 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 WCFWCF-Client mit der erforderlichen Vertragsdefinition. Anschließend können Aufrufe mithilfe des WCFWCF-Clients wie beim typisierten Vertrag ausgelöst werden.Once those parameters have been matched, the moniker constructs a WCFWCF client with the appropriate contract definition and calls can then be made using the WCFWCF 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