如何:将服务名字对象与元数据交换协定一起使用

在开发了一些新的 WCF 服务后,你也许会决定希望能够从脚本或 Visual Basic 6.0 应用程序中调用这些服务。 为此,你可以先生成一个 WCF 客户端程序集,然后使用 COM 注册该程序集,再将该程序集安装在 GAC 中,然后从你的 Visual Basic 代码中引用 COM 类型。 在分发应用程序时,你必须同时分发 WCF 客户端程序集。 然后,用户必须使用 COM 注册 WCF 客户端程序集,并且将该程序集放置在 GAC 中。 WCF COM 互操作使你在不依赖 WCF 客户端程序集的情况下,也能完成相同的服务调用。 WCF 名字对象使你能够从任何与 COM 兼容的语言(Visual Basic、VBScript、Visual Basic for Applications (VBA) 等)中调用任何 WCF 服务,方法是指定服务名字对象用于提取有关该服务的类型信息的元数据交换 (Mex) 终结点 URI。 本主题介绍如何使用指定 Mex 终结点的 WCF 名字对象调用 WCF 入门示例。

注意

实际上,从不实例化由 WCF 客户端程序集定义的类型。 该程序集只用于元数据。

使用带有 Mex 地址的服务标记

  1. 生成入门示例,并使用一个浏览器浏览到其 URL (http://localhost/ServiceModelSamples/Service.svc) 以确保服务正常工作。

  2. 生成 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)  
    
  3. 运行 Visual Basic 应用程序或脚本。

    注意

    您所调用的服务必须公开标记的 Mex 终结点,以便能够从服务中读取元数据。 有关详细信息,请参阅如何:使用配置文件发布服务的元数据

    注意

    如果名字对象格式不正确,或者服务不可用,则对 GetObject 的调用将返回错误,指明“语法无效”。如果收到此错误,请确保使用正确的名字对象且服务可用。

另请参阅