Windows Communication Foundation (WCF)为托管代码开发人员提供了用于创建连接的应用程序的丰富环境。 但是,如果对基于非托管 COM 的代码进行大量投资,并且不想迁移,则仍然可以使用 WCF 服务名字对象将 WCF Web 服务直接集成到现有代码中。 服务标识符可用于各种基于 COM 的开发环境,例如 Office VBA、Visual Basic 6.0 或 Visual C++ 6.0。
注释
服务标记使用 WCF 信道进行所有通信。 该通道的安全和标识机制不同于标准 COM 和 DCOM 代理中使用的机制。 此外,由于服务标识使用了 WCF 通信信道,因此所有调用的默认超时时间为一分钟。
服务标记与 GetObject
函数一起使用,为非托管开发人员提供强类型的、特定于 COM 的方法,用于调用 WCF Web 服务。 这需要 WCF Web 服务协定的本地 COM 可见定义和要使用的绑定。 与其他 WCF 客户端一样,服务标识符必须创建与服务的类型化通道,但在第一次方法调用时,这种通道构建对 COM 程序员是透明的。
与其他 WCF 客户端类似,使用 moniker 时,应用程序会指定与服务通信的地址、绑定和合约。 可以通过以下方式之一指定合同:
类型化契约 – 契约在客户端计算机上注册为 COM 可见类型。
WSDL 协定 – 协定以 WSDL 文档的形式提供。
MEX 协定 - 在运行时从元数据交换 (MEX) 终结点检索协定。
服务标记支持的参数
下表显示了服务标识符支持的参数。
参数 | DESCRIPTION |
---|---|
address |
服务的 URL 位置。 |
binding |
应用程序配置中的绑定节名。 |
bindingConfiguration |
命名绑定节中的命名绑定实例。 |
contract |
接口标识符(IID),表示服务协定或协定名称(来自 MEX)。 |
wsdl |
提供替代形式的协定定义的 WSDL 文档。 |
spnIdentity |
用于与服务通信的服务器主体名称 (SPN) 标识。 |
upnIdentity |
用于与服务通信的用户主体名称 (UPN) 标识。 |
dnsIdentity |
用于与服务通信的 DNS 标识。 |
mexAddress |
服务的元数据交换 (MEX) 终结点的 URL 位置。 |
mexBinding |
应用程序配置中用于与 MEX 终结点连接的绑定节名。 |
mexBindingConfiguration |
命名绑定节中用于与 MEX 终结点连接的命名绑定实例。 |
bindingNamespace |
检索的 MEX 中绑定节名的命名空间。 |
contractNamespace |
检索的 MEX 中协定的命名空间。 |
mexSpnIdentity |
用于与 MEX 终结点通信的服务器主体名称 (SPN) 标识。 |
mexUpnIdentity |
用于与 MEX 终结点通信的用户主体名称 (UPN) 标识。 |
mexDnsIdentity |
用于与 MEX 终结点通信的 DNS 标识。 |
serializer |
指定“xml”或“datacontract”序列化程序的用法。 |
注释
即使与完全基于 COM 的客户端一起使用,服务标识符也需要在客户端计算机上安装 WCF 和 .NET Framework 2.0。 使用服务标记的客户端应用程序加载 .NET Framework 运行时的适当版本也很关键。 在 Office 应用程序中使用名字对象时,可能需要配置文件以确保加载正确的框架版本。 例如,使用 Excel 时,应将以下文本放置在与 Excel.exe 文件相同的目录中名为 Excel.exe.config 的文件中:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns=
http://schemas.microsoft.com/.NetConfiguration/v2.0
>
<startup>
<requiredRuntime version="v2.0.50727" />
</startup>
</configuration>