web|微软使用 UDDI 的 Web 服务描述和发现(第二部分)
Scott Seely
Microsoft Corporation
2001年10月17日
简介
在上一个专栏中,Karsten Januszewski 已经带我们访问了 Microsoft® UDDI 小组。Karsten 概要介绍了 UDDI 的概念、用途和使用方法。在本文中,我们将介绍如何使用 Microsoft UDDI 注册表注册“Cold Rooster 收藏服务”。鉴于我们以前从未使用 UDDI 进行过注册,现在就让我们从头讲起。
用 UDDI 进行注册
由于从未在 Microsoft UDDI 站点(英文)注册过 Cold Rooster,所以首要任务就是在该站点创建一个帐户。注册帐户要求使用 Passport 登录。登录后,您可以设置 UDDI 电子邮件联系地址,将它连接到您的 Passport 帐户或其他地址上。我选择的地址是 croostermicrosoft.com,因为在我的小组里不止我一个人在使用 UDDI。原来 Cold Rooster 咨询公司需要使用电子邮件时,我们已经创建了这个电子邮件帐户,这看来是个明智的选择。
注册屏幕还会提示输入其他联系信息,例如注册者的姓名、联系电话和通信地址。要完成注册,您需要接受“使用规定”协议。请参阅 Terms of Use(英文)。
在注册表中填好联系信息,并接受“使用规定”后,UDDI 站点将向您发送一封电子邮件,确认您的联系地址。单击邮件中的链接,就可以管理您的 UDDI 帐户了。管理工作涉及到向注册表中添加公司数据、发布 tModel 以及编辑注册详细信息。图 1 显示了管理页面。
图 1:UDDI 管理页面
在 UDDI 中添加公司
在 Microsoft UDDI 站点建立帐户后,下一步就是向 UDDI 注册表中添加 Cold Rooster 咨询公司。我们可以通过 Web 页面注册公司,也可以使用 .NET SDK 或 COM SDK 调用 UDDI API 来注册公司。我选择使用 UI,因为我想一次注册成功。如果将来要经常更改接口内容,就应使该过程自动化以减少错误发生率。将公司添加到注册表中,就可以使用户根据我们的公司和所提供的 Web 服务的类型来找到我们。要在 UDDI 注册表中添加 Cold Rooster 咨询公司,请单击管理页面(图 1)中的“Add a new business”链接。第一页将要求提供公司名称和说明。对于 Cold Rooster,我输入:
Name:Cold Rooster 咨询公司
Description:MSDN Architectural Samples 小组使用的虚拟公司
在 UDDI 注册表中添加公司后,现在可以添加其他信息了:
- Contacts:可以帮助客户解决各种业务问题的人。我们将 MSDN Architectural Samples 小组的不同成员添加到联系人列表中。
- Services:该公司要提供的 tModel(WSDL 文件)。我们在 UDDI 条目中添加了“帐户”、“登录”和“报表”三种 tModel。
- Identifiers:代表本公司的唯一的数据。例如,公司的注册序号。因为 Cold Rooster 没有上述数据,所以没有填写。
- Business classifications:标识公司所在的位置以及公司的业务。Cold Rooster 咨询公司位于美国的华盛顿州。
- Discovery URL:提供了可以查找公司详细信息的位置。
首先完成简单的项目,最后保存服务。
在 UDDI 中添加联系信息
这非常简单。就象填写其他地址表格一样,只要填写不同联系人的一般信息就可以了。潜在用户可以根据说明和使用注释来联系贵公司,以便申请使用 Web 服务的许可、获得支持或咨询与业务相关的其他事项。图 2 显示了我的联系信息表格的外观。
图 2:详细的联系信息页
对公司进行分类
大多数公司可根据其业务范围分类。对实体进行分类时,UDDI 分类有多种方法,包括:
- North American Industry Classification System (NAICS-1997)(北美行业分类系统)
- Universal Standard Products and Services Codes (UNSPSC-7.03)(通用标准产品和服务代码)
- ISO 3166 Geographic Taxonomy(ISO 3166 地理分类)
- Standard Industrial Classification (SIC-1987)(标准行业分类)
- GeoWeb Geographic Classification(GeoWeb 地理分类)
- UDDI Types Taxonomy(UDDI 类型分类)
- 除了 UDDI 类型外,Cold Rooster 在所有分类中都进行了注册。之所以未在 UDDI 类型分类中注册公司,是因为它是专用于对 tModel 和服务信息进行分类的。
- 要了解需要注册的内容,就必须知道 Cold Rooster 的业务范围和地理位置。Cold Rooster 咨询公司位于美国华盛顿州的雷德蒙德。它提供基于工程的辅助性的计算机咨询服务。而且,它擅长基于 Windows 和 Internet 的开发。知道了这些,我们需要分别按照六种分类方案为该公司正确分类。表 1 显示了按照每种分类方案对该公司进行分类的情况。 分类方案分类NAICS
- 541511: Custom Computer Programming Services
- 541512: Computer Systems Design Services
- 81.11.16.07.00: Programming for C or C++
- 81.11.16.03.00: Programming for HTML
- 81.11.16.01.00: Programming for Microsoft® Visual Basic®
- 81.11.16.12.00: Programming or Proprietary Languages(也包括 C#)
- 81.11.21.06.00: Application Service Providers(提供 Web 服务)
- 81.11.21.03.00: World Wide Web (WWW) site design services
- US-WA (Washington, USA, World)
- 7371: Computer programming services
- 7372: Information retrieval services
- 518816 (Redmond, Washington, USA, North America, World)
表 1:UDDI 分类示例
公司分类完毕。下一步是添加三个 tModel。
添加 tModel
如果您没有读过上周的文章,那么请注意,tModel 就是一个类型模型。对于 Web 服务来说,tModel 通常就是 WSDL 文件的同义词。它们使用同样的方法定义 Web 服务所使用的类型以及消息和操作定义。给定一个 tModel,就可以知道何种 Web 服务操作是由实现该 tModel 的实体实现的,以及如何访问这些操作。将 WSDL 文件注册为 tModel,是因为这些 tModel 最终可能有多个实现。
服务器端的收藏 Web 服务包括三项 Web 服务:登录、帐户和报表。“登录”Web 服务允许被授权者登录并得到一个标记。使用该标记,被授权者可以访问“帐户”和“报表”Web 服务中的其他方法。要添加 WSDL 文件,需要将其部署在一个可以通过公共 Internet 访问的服务器上。这里也需要使用 UDDI 分类。
要添加 tModel,请在管理页面(图 1)上单击“Add a new tModel”。接着需要添加一些 tModel 的基本信息:名称、说明以及 WSDL 文档所在的位置。完成后,将 tModel 分类为 WSDL 文档,并将信息发布到 UDDI 注册表中。这真是轻而易举。图 3 显示了“登录”tModel 要填写的详细信息。
图 3:“登录”tModel 的详细信息
在下一个屏幕上,可以添加服务分类和公司标识。这里的数据和在公司信息中输入的数据相同。作为服务分类,我们只使用了 UDDI 分类。可以通过单击一系列链接来指定这些信息:
- 用于 tModel 的类型
- Web 服务的规范
- WSDL 中说明的 Web 服务的规范
- 我在注册 Cold Rooster 收藏服务时,对于 Logon.WSDL、Account.WSDL 和 Report.WSDL 就采用了这些步骤。完成 UDDI 注册后,注册表中的这些信息才可用。
定义服务
tModel 注册完毕后,仍然需要添加服务以声明存在这些服务。要添加服务,请回到管理页面,这次您会看到您的公司已列在“Add a new business”(图 1)中。选择您的公司并滚动到“Services”。在此处单击“Add a Service”。在第一页填写服务的详细信息。对于“登录”Web 服务,我填写的内容如下:
- Name:登录
- Description:验证被授权者并提供访问标记
完成后,再次将服务分类为“WSDL 中说明的 Web 服务规范”。接着将该服务绑定到已注册的“登录”tModel。在以下所示的“Define a new binding”字段中,我填写的内容如下:
- Access point:https://Coldrooster.com/SSF/Logon.asp
- URL type:http
- Description:Cold Rooster 咨询公司登录 Web 服务的端点
要完成这一步,必须将服务与“收藏 Web 服务:登录 tModel”联系起来。在“Specification Signatures”下,选择“Add specification signature”。要按名称查看模型,请输入“收藏 Web 服务”。这将调用收藏服务所保存的全部三个 tModel。选择“收藏 Web 服务:登录”并按下“Continue”。一个 Web 页将显示出来,您需要在上面编辑关于端点的详细信息。我填写的内容如下:
- Edit specification signature; Description:收藏 Web 服务的 Cold Rooster 实现:登录 tModel
- Instance details; Parameters:http://msdn.microsoft.com/library/?url=/library/en-us/dncold/html/ssfapiref.asp?frame=true
- Instance details; Description:API 引用文档
- Overview document; Document location:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncold/html/ssf1sec.asp
- Overview document; Description:服务器端收藏安全信息
填写完毕后,再次单击“Continue”。接着,在返回到主公司数据视图并向 UDDI 注册表发布全部信息前,可以查看输入的所有关于登录服务的信息。对“帐户”和“报表”Web 服务重复这一过程。
查找数据
根据 GeoWeb 分类,今天(2001 年 10 月 8 日)只有一家公司列在雷德蒙德中:Cold Rooster 咨询公司。使用 ISO 3166 分类再搜索一次。这次找到了九家公司。其他分类将产生其他的统计结果。对于其他的分类方案,其结果通常需要占用好几页。
现在数据是可以发现的,因此对存储收藏 URL 的 Web 服务感兴趣的人,在理论上可以找到并使用 Cold Rooster 解决方案。对于使用 Microsoft® Visual Studio® .NET 的用户,使用 UDDI 查找 Web 服务并将其添加到自己的工程中将更加简单。
第一次遇到“Add Web Reference”对话框(“Project”|“Add Web Reference”)时,会显示一个对话框,允许您通过 Microsoft UDDI 服务器来查找 Web 引用(也称为 WSDL 文件)。用于 Visual Studio 的端点是 http://uddi.microsoft.com/visualstudio/。当告诉该端点查找所有以“cold”开头的公司时,它只找到了我注册的三个 Web 服务:帐户、登录和报表。可以在此处(英文)查看此次查询的结果。要将 Web 引用添加到“登录”Web 服务中,只要单击“Logon”以扩展该节点,然后单击“Favorites Web Service: Logon”查看 WSDL。在这里,单击“Add Reference”,就可以登录到收藏 Web 服务了。
如果到现在您还没有获得收藏服务授权,请到 Favorites Service Admin Console(英文)申请一个。在 15-30 分钟内您将收到一个密码。要使用 Visual Basic 连接到“登录”Web 服务,则代码编写非常简单:
Sub Main() Dim svc As New com.coldrooster.www.Logon() System.Console.WriteLine(svc.Logon("许可证持有者", "密码")) System.Console.WriteLine("按 Enter 键退出") System.Console.ReadLine() svc.Dispose()End Sub
代码将显示 GUID 标记,供用户访问收藏 Web 服务中可用的其他方法。编写其他方法的代码也同样简单。
总结
通过使用 UDDI 注册公司、自定义 tModel 和 Web 服务,您可以帮助世界各地的开发人员找到您的 Web 服务。UDDI 注册表允许您发布的不只是 Web 服务端点和公司数据。使用 UDDI 的用户也可以使用该界面查找 Web 服务文档和示例。Microsoft UDDI 注册表是免费使用的。我们鼓励用户使用此注册表注册您的 Web 服务和公司。请花一些时间来熟悉 http://uddi.microsoft.com(英文)。您可能试图查找 Cold Rooster 咨询公司的信息,并浏览它以查看所有可用的信息。最后一点,现在可是使用 Visual Studio .NET 来连接收藏服务并进行实际操作的绝佳时机。
下一次,将由客座专栏作家 Allen Wagner 主持。Allen 将讨论处理大型 SOAP 消息的技术。
At Your Service
Scott Seely 是 MSDN Architectural Samples 小组的成员。除了那里的工作以外,他还通过 Prentice Hall 出版了两本书:《SOAP: Cross Platform Web Service development Using XML》(SOAP:使用 XML 进行跨平台 Web 服务的开发)和《Windows Shell Programming》(Windows Shell 编程)。他还编写和维护一个小型的基于 C++ 的 SOAP 库(位于 http://www.scottseely.com/soap.htm)。该库根据 LGPL 协议对外发布。