Практическое руководство. Использование моникера службы с контрактами обмена метаданными
После разработки некоторых новых служб WCF вы можете решить, что вы хотите вызвать эти службы из скрипта или приложения Visual Basic 6.0. Один из способов — создать клиентную сборку WCF, зарегистрировать сборку с помощью COM, установить сборку в GAC, а затем ссылаться на типы COM из кода Visual Basic. При распространении приложения также потребуется распространить сборку клиента WCF. Затем пользователь должен будет зарегистрировать клиентскую сборку WCF с помощью COM и разместить ее в глобальном кэше сборок. Com Interop WCF также позволяет выполнять те же вызовы служб без использования клиентской сборки WCF. Moniker WCF позволяет вызывать любую службу WCF из любого языка, совместимого с COM (Visual Basic, VBScript, Visual Basic для приложений (VBA) и т. д.), указав URI конечной точки обмена метаданными (Mex), который моникер службы использует для извлечения сведений о типе службы. В этом разделе описывается, как вызвать пример WCF с помощью моникера WCF, указывающего конечную точку Mex.
Примечание.
Типы, определенные клиентской сборкой WCF, никогда не создаются. Сборка используется только для метаданных.
Использование моникера службы с адресом обмена метаданными (Mex)
Создайте пример "Начало работы" и используйте браузер, чтобы перейти по ЕГО URL-адресу (
http://localhost/ServiceModelSamples/Service.svc
), чтобы убедиться, что служба работает.Создайте скрипт Visual Basic или приложение Visual Basic, содержащее следующий код:
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)
Запустите приложение или скрипт Visual Basic.
Примечание.
Вызываемая служба должна экспонировать конечную точку обмена метаданными (Mex) в моникер, чтобы прочитать метаданные из службы. Дополнительные сведения см. в разделе "Практическое руководство. Публикация метаданных для службы с помощью файла конфигурации".
Примечание.
Если моникер неправильно сформирован или если служба недоступна, вызов
GetObject
возвращает ошибку с сообщением "Недопустимый синтаксис". Если вы получите эту ошибку, убедитесь, что используется моникер, который вы используете, и служба доступна.