发现:UDDI
此示例演示如何实现一个 Windows Communication Foundation (WCF) 客户端,该客户端用安装在本地计算机上的通用描述、发现和集成 (UDDI) v2 服务执行基本操作。UDDI 注册表是随 Windows Server 2003 发布的 UDDI 服务的一部分。
提示
本主题的末尾介绍了此示例的设置过程和生成说明。
此示例由一个客户端控制台程序 (.exe) 组成,该程序与安装在本地的 UDDI 注册表通信。此示例还与其他 UDDI 查询和发布服务实现通信。客户端活动显示在控制台窗口中。
示例源包括下列自动生成的文件:
- UddiTypes.cs(UDDI 类型)
- UddiInquireClient.cs(UDDI 查询客户端)
- UddiPublishClient.cs(UDDI 发布客户端)
- 您可以重新生成这些文件,使其能够与 Svcutil.exe 协作。您不必为了运行此示例而重新生成这些文件。
生成上面列出的文件
下载 UDDI 架构(可能为英文网页)上的文件并将其另存为 UddiTypes.xsd。
使用如下命令来生成 UddiTypes.cs。
xsd.exe /classes UddiTypes.xsd
使用如下命令来生成 UddiInquireClient.cs。
svcutil.exe /out:UddiInquireClient.cs http://uddi.org/wsdl/inquire_v2.wsdl
打开 UddiInquireClient.cs 并移除对如下接口的声明后面的所有类型声明(但是不包括对该接口的声明)。
public interface Inquire {...}
还应确保它是在第一个类型化消息声明之前(但是不包括这个声明)完成的。
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute( "System.ServiceModel", "3.0.0.0")] [System.ServiceModel.MessageContractAttribute( IsWrapped=false )]
使用如下命令来生成 UddiPublishClient.cs。
svcutil.exe /out:UddiPublishClient.cs http://uddi.org/wsdl/publish_v2.wsdl
打开 UddiPublishClient.cs 并移除以下声明之后到
public interface Publish {...}
第一个类型化消息声明之间的所有声明(但是不包括以上声明和第一个类型化消息声明)。
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute( "System.ServiceModel", "3.0.0.0")] [System.ServiceModel.MessageContractAttribute( IsWrapped=false )]
移除命名空间 Uddiorg.api 中的所有声明(这些声明已经在 UddiInquireClient.cs 中生成)。
客户端使用代理来实现检索 UDDI 注册表中的信息的操作:
public void Login(string username, string password)
用于登录发布服务。使用发布服务的 get_authToken() 操作。public businessInfo[] GetBusinessByName(string businessName)
在 UDDI 注册表中查询名称与所提供的字符串相匹配的服务。调用查询服务的 find_business() 操作。public string PublishBusiness(string businessName, string description)
在 UDDI 注册表中发布业务。使用发布服务的 save_business() 操作。public businessInfo[] GetMyBusinesses()
返回给定用户发布的所有业务。使用发布服务的 get_registeredInfo() 操作。public businessInfo GetMyBusinessByName(string businessName)
返回所发现的、具有给定名称且由指定用户发布的第一个业务。调用发布服务的 get_registeredInfo() 操作。public void DeleteMyBusinesses()
删除由给定用户发布的所有业务。使用发布服务的 delete_business() 操作。public void DeleteMyBusiness(string businessKey)
删除由该密钥标识且由给定用户发布的业务。使用发布服务的 registeredInfo() 和 delete_business() 操作。
客户端使用配置文件 (App.config) 为那些与它进行通信的查询和发布服务指定终结点和绑定。客户端终结点配置由一个配置名称、服务终结点的绝对地址、绑定和协定组成,如下面的配置所示。
<bindings>
<basicHttpBinding>
<binding name="Https">
<security mode="Transport">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint name="Inquire"
address="https://<machine with UDDI Services>/uddi/inquire.asmx"
binding="basicHttpBinding" bindingConfiguration="Https"
contract="Inquire" />
<endpoint name="Publish"
address="https://<machine with UDDI Services>/uddi/publish.asmx"
binding="basicHttpBinding" bindingConfiguration="Https"
contract="Publish" />
</client>
设置、生成和运行示例
确保 Windows Server 2003 上安装了 UDDI 服务。转到**“添加或删除程序”、“添加 Windows 组件”,并确保“UDDI 服务”**处于选中状态。如果未处于选中状态,请选中该复选框,并按照向导中的说明安装 UDDI 服务。
若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。
如果 UDDI 客户端的用户没有对 UDDI 服务验证身份的正确凭据,则应在装有 UDDI 服务的计算机上创建本地用户,并更新 App.config 配置文件中的 <appSettings> 元素。
默认情况下,只允许本地管理员执行 UDDI 发布操作。请确保新创建的用户可以访问发布 UDDI 服务,方法是让该用户成为本地管理员,或者在 UDDI 服务控制台中更改发布者组名称的角色,使其包括该用户帐户。若要执行后面一种操作,请打开 UDDI 服务控制台,右击**“UDDI 服务”节点,选择“角色”**选项卡,并选择发布者的帐户。
若要用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.