Практическое руководство. Использование моникера службы с контрактами обмена метаданнымиHow to: Use a Service Moniker with Metadata Exchange Contracts

После разработки некоторых новых служб WCF вы можете решить, что они могут вызывать эти службы из сценария или приложения Visual Basic 6,0.After developing some new WCF services, you may decide that you want to be able to call these services from a script or a Visual Basic 6.0 application. Одним из способов является создание клиентской сборки WCF, регистрация сборки в COM, установка сборки в GAC, а также ссылки на типы COM из кода Visual Basic.One method would be to generate a WCF client assembly, register the assembly with COM, install the assembly in the GAC, and then reference the COM types from your Visual Basic code. При распространении приложения потребуется также распространять клиентскую сборку WCF.When you distribute the application, you will have to distribute the WCF Client assembly as well. Затем пользователь должен будет зарегистрировать клиентскую сборку WCF с помощью COM и разместить ее в глобальном кэше сборок.The user will then have to register the WCF client assembly with COM and place it in the GAC. COM-взаимодействие WCF также позволяет выполнять одни и те же вызовы служб, не полагаясь на клиентскую сборку WCF.WCF COM Interop also allows you to make the same service calls without relying on a WCF client assembly. Моникер WCF позволяет вызывать любую службу WCF из любого совместимого с COM языка (Visual Basic, VBScript, Visual Basic для приложений (VBA) и т. д.), указывая URI конечной точки обмена метаданными (MEX), который используется моникером службы для извлечения сведений о типе службы.The WCF moniker allows you to call any WCF service from any COM-compatible language (Visual Basic, VBScript, Visual Basic for Applications (VBA), and so on) by specifying a metadata exchange (Mex) endpoint URI that the service moniker uses to extract type information about the service. В этом разделе описывается, как вызвать пример начало работы WCF с помощью моникера WCF, который указывает конечную точку обмена метаданными.This topic describes how to call the Getting Started WCF sample using a WCF moniker that specifies a Mex endpoint.

Примечание

Типы, определенные клиентской сборкой WCF, никогда не создаются.The types defined by the WCF client assembly are never actually instantiated. Сборка используется только для метаданных.The assembly is used only for metadata.

Использование моникера службы с адресом обмена метаданными (Mex)Using the service moniker with a Mex address

  1. Создайте пример начало работы и используйте Internet Explorer, чтобы перейти к своему URL-адресу ( http://localhost/ServiceModelSamples/Service.svc ), чтобы убедиться, что служба работает.Build the Getting Started sample and use Internet Explorer to browse to its URL (http://localhost/ServiceModelSamples/Service.svc) to ensure that the service is working.

  2. Создайте скрипт Visual Basic или приложение Visual Basic, содержащее следующий код:Create a Visual Basic script or Visual Basic application that contains the following code:

    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)  
    
  3. Запустите приложение или скрипт Visual Basic.Run the Visual Basic application or script.

    Примечание

    Вызываемая служба должна экспонировать конечную точку обмена метаданными (Mex) в моникер, чтобы прочитать метаданные из службы.The service you are calling must expose a Mex endpoint for the moniker to be able to read the metadata from the service. Дополнительные сведения см. в разделе инструкции. Публикация метаданных для службы с помощью файла конфигурации.For more information, see How to: Publish Metadata for a Service Using a Configuration File.

    Примечание

    Если моникер сформирован неправильно или служба недоступна, при вызове GetObject будет возвращена ошибка "Синтаксическая ошибка".If the moniker is malformed or if the service is unavailable, the call to GetObject will return an error saying "Invalid Syntax." При получении этой ошибки убедитесь, что используется правильный моникер, а служба доступна.If you receive this error, make sure the moniker you are using is correct and the service is available.

См. такжеSee also