发现: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 协作。您不必为了运行此示例而重新生成这些文件。

生成上面列出的文件

  1. 下载 UDDI 架构(可能为英文网页)上的文件并将其另存为 UddiTypes.xsd。

  2. 使用如下命令来生成 UddiTypes.cs。

    xsd.exe /classes UddiTypes.xsd
    
  3. 使用如下命令来生成 UddiInquireClient.cs。

    svcutil.exe /out:UddiInquireClient.cs http://uddi.org/wsdl/inquire_v2.wsdl
    
  4. 打开 UddiInquireClient.cs 并移除对如下接口的声明后面的所有类型声明(但是不包括对该接口的声明)。

          public interface Inquire {...}
    

    还应确保它是在第一个类型化消息声明之前(但是不包括这个声明)完成的。

         [System.Diagnostics.DebuggerStepThroughAttribute()]
         [System.CodeDom.Compiler.GeneratedCodeAttribute(       
                          "System.ServiceModel", "3.0.0.0")]
         [System.ServiceModel.MessageContractAttribute( IsWrapped=false )]
    
  5. 使用如下命令来生成 UddiPublishClient.cs。

    svcutil.exe /out:UddiPublishClient.cs http://uddi.org/wsdl/publish_v2.wsdl
    
  6. 打开 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>

设置、生成和运行示例

  1. 确保 Windows Server 2003 上安装了 UDDI 服务。转到**“添加或删除程序”“添加 Windows 组件”,并确保“UDDI 服务”**处于选中状态。如果未处于选中状态,请选中该复选框,并按照向导中的说明安装 UDDI 服务。

  2. 请确保已经执行了 Windows Communication Foundation 示例的一次性安装过程

  3. 若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  4. 如果 UDDI 客户端的用户没有对 UDDI 服务验证身份的正确凭据,则应在装有 UDDI 服务的计算机上创建本地用户,并更新 App.config 配置文件中的 <appSettings> 元素。

  5. 默认情况下,只允许本地管理员执行 UDDI 发布操作。请确保新创建的用户可以访问发布 UDDI 服务,方法是让该用户成为本地管理员,或者在 UDDI 服务控制台中更改发布者组名称的角色,使其包括该用户帐户。若要执行后面一种操作,请打开 UDDI 服务控制台,右击**“UDDI 服务”节点,选择“角色”**选项卡,并选择发布者的帐户。

  6. 若要用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.