Vorgehensweise: Verwenden eines Dienstmonikers mit Metadatenaustausch-Verträgen
Nach dem Entwickeln neuer WCF-Dienste können Sie entscheiden, ob das Aufrufen dieser Dienste aus einem Skript oder einer Visual Basic 6.0-Anwendung möglich sein soll. Eine mögliche Methode ist das Generieren einer WCF-Clientassembly, das Registrieren der Assembly bei COM, das Installieren der Assembly im GAC und anschließend das Verweisen der COM-Typen aus dem Visual Basic-Code. Wenn Sie die Anwendung verteilen, müssen Sie auch die WCF-Clientassembly verteilen. Der Benutzer muss dann die WCF-Clientassembly bei COM registrieren und im GAC platzieren. WCF-COM-Interop ermöglicht Ihnen die gleichen Dienstaufrufe ohne eine WCF-Clientassembly. Mithilfe des WCF-Monikers können Sie einen beliebigen WCF-Dienst aus jeder COM-kompatiblen Sprache (Visual Basic, VBScript, Visual Basic for Applications (VBA) usw.) aufrufen, indem Sie einen Metadatenaustausch (MEX)-Endpunkt-URI angeben, den der Dienstmoniker zum Extrahieren von Typinformationen über den Dienst verwendet. In diesem Thema wird beschrieben, wie das Beispiel für „Erste Schritte mit WCF“ unter Verwendung eines WCF-Monikers aufgerufen wird, der einen MEX-Endpunkt angibt.
Hinweis
Die von der WCF-Clientassembly definierten Typen werden nie tatsächlich instanziiert. Die Assembly wird nur für Metadaten verwendet.
Verwenden des Dienstmonikers mit einer MEX-Adresse
Erstellen Sie das Beispiel „Erste Schritte“, und verwenden Sie einen Browser, um zur URL (
http://localhost/ServiceModelSamples/Service.svc
) zu navigieren, damit Sie sicherstellen können, dass der Dienst funktioniert.Erstellen Sie ein Visual Basic-Skript oder eine Visual Basic-Anwendung, die den folgenden Code enthält:
monString = "service:mexaddress=http://localhost/ServiceModelSamples/Service.svc/MEX" monString = monString + ", address=http://localhost/ServiceModelSamples/Service.svc" monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples" monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples" Set calc = GetObject(monString) MsgBox calc.Add(3, 4)
Führen Sie die Visual Basic-Anwendung oder das Skript aus.
Hinweis
Der Dienst, den Sie aufrufen, muss einen MEX-Endpunkt für den Moniker verfügbar machen, damit dieser die Metadaten aus dem Dienst lesen kann. Weitere Informationen finden Sie unter Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei.
Hinweis
Wenn der Moniker nicht wohlgeformt oder der Dienst nicht verfügbar ist, gibt der Aufruf von
GetObject
einen Fehler zurück, der auf eine „Ungültige Syntax“ hinweist. Wenn Sie diese Fehlermeldung erhalten, stellen Sie sicher, dass der verwendete Moniker korrekt und der Dienst verfügbar ist.