### UDDI（通用发现与发布规范）简介

导 读：UDDI 是微软新一代.NET 框架的核心技术之一(其他还包括 WEB SERVICE、SOAP、XML)，让我们来看看它到底是什么？
--------------------------------------------------------------------------------
Universal Discovery Description and Integration（UDDI，即通用发现与发布方法集）规范定义了一种发布和发现网络服务信息的方式。它是一套公开的实现规则，允许企业注册他们所提供的网络服务信息，以便其他的企业能够找到他们。“网络服务”一词指一个公司所实现的特定的商业功能，通常通过 Internet 连接为其他公司或软件程序使用这些服务提供途径。
网络服务正成为电子商务的编程重心。例如，一个公司使用另外一个公司的服务，通过 Internet 连接直接发送购买单。另一个例子是计算通过某种运输方式，运送一定大小或质量的包裹一定距离的费用。
初看起来网络服务发现过程好像是非常简单的。如果一个已知的商务伙伴有一个已知的电子商务网关，还需要发现什么呢？然而这是在默认所有信息都知道的情况下。当您想找出哪个商务伙伴具有某种服务，问题马上就变困难了。一种选择是打电话给各个商务伙伴，然后找到合适的人选。对于一个网络服务，雇佣高科技技术人员来满足任意发现的需要是难于完成的。
解决这个问题的另外一种方法是通过使用在每个公司网站上的网络服务描述文件。毕竟网络爬行者可以访问一个已注册的 URL，并且能够发现和索引网页上的文字。然而这种“robots.txt”方法，决定于网络爬行者定位每个网站及网站上服务描述文件的能力。这种分布式方法具有升级潜力，但是缺少一种机制来保证服务描述文件格式的一致性以及跟踪它们所发生的变化的方便性。
UDDI 所采用依赖于一个企业分布式注册方法，它们的服务描述文本是使用通用的 XML 格式。
UDDI 业务登记逻辑和 UDDI 业务登记数据库
UDDI 方案的核心部分是 UDDI 业务登记逻辑，即 UDDIBusinessRegistrations，一个 XML 格式的用来描述事物实体和它的事物服务的文件。从概念上看，一个 UDDI 业务登记逻辑所提供的信息包括三个部分：“白页”包括地址、协议和已有标识；“黄页”包括基于分类标准的工业类型；“绿页”是关于企业所包含的服务技术信息，包括网络服务说明参考和根据发现机制对各种文件和网址提供的标识支持。
使用 UDDI
UDDI 包括企业在网上往册的共享操作。在很大程度上，程序和程序员使用 UDDI 业务登记数据库即 UDDIBusinessRegistry 查找有关服务的信息，对于程序员，可以准备与广告宣传的网络服务相一致的系统，或者向其他调用的人描述他们的网络服务。UDDIBusinessRegistry 可以在企业层面上检查一个特定的合作伙伴是否拥有特定的网络服务接口，以发现在特定行业内拥有特定类型服务的公司，找到有关某个合作伙伴或预期的合作伙伴的信息，以便了解与该服务进行交互所需的技术细节。
从 XML 和 SOAP 中，可以往意到，集成和互用性问题已经在各层简化了。XML 提供了一个跨平台的方法来进行数据编码和格式化。SOAP 是以 XML 为基础的，它定义了一种对系统间的交换信息进行打包的简单方法。SOAP 对于 HTTP 的绑定是以这个打包协议为基础的，并且定义了在系统之间进行远程调用的方法，这种方法与个别公司选择的程序设计语言或操作系统无关。以前的方法包括复杂的分布式对象标准或技术桥接软件。最后，这些方法没有一种被证明是经济的。采用 XML 和 SOAP，这种跨语言、跨平台的方法简化了两个公司的系统彼此兼容的问题。
即使某个公司考虑到了 XML 和 SOAP，任何两个公司都可能在实施通信基础设施中，仍存在巨大的差异。正如任何一个行业权威人士将会告诉您的：“需要的是建立在为每一个计算平台普遍支持的标准之上的、完全终端到端（end-to-end）的解决方案。”显然，要实现这个目标有更多的工作要做。UDDI 规范吸取了 XML 和 SOAP 的教训，定义了一个上层结构，使得两个公司可以共享一个方法来查询彼此的特性，并对他们自己的特性进行描述。
UDDI 技术发现层
UDDI 规范描述了网络服务的概念。以及一种简单的定义描述任何种类的网络服务的架构的编程接口。这个规范有几个相关文件和一个 XML 模式组成，这个 XML 模式定义了用于注册和发现网络服务的基于 SOAP 的程序设计协议。这些规范由来自几个领先的公司的技术人员和管理人员用几个月的时间确定的。同时，这些公司承担了首先实施 UDDI 服务，并将这些服务作为共享所有注册信息的可公开访问的、多站点合作运行的任务。
注册（BusinessRegistry）规范之间的关系，这种方式提供了对有关网络服务信息的“一次注册，处处发布”的访问方式。
利用 UDDI 发现服务，企业可以单独地注册有关他们公开的以便其他企业使用的网络服务的信息。这些信息可以通过网站或使用采用在 UDDIAPI 规范中描述的编程服务接口的工具，添加到 UDDI 企业注册中。UDDI 企业注册是一个逻辑上集中、物理上分布式的、拥有多个根节点的服务，它可以定期彼此复制数据。一旦某个企业利用一个企业注册服务示例进行注册，数据自动与其他 UDDI 根节点共享，并且可以为任何需要了解某个特定企业所提供的网络服务的人自由使用。
请注意 UDDI 并未构成一个功能齐全的发现服务是很重要的。UDDI 服务旨在使得能够采用技术发现服务。利用 UDDI 定义的工具，某个程序或程序员可以找到有关某个合作伙伴提供的服务的信息，可以了解某个合作伙伴是否拥有与内部技术相兼容的服务，并且可以按照连接找到适合某个网络服务的规范，这样某个集成层可以按照与合作伙伴服务兼容的方式构建。企业还可以直接通过 UDDI，或者通过使用 UDDI 作为其增值服务数据源的在线商场和搜索引擎找到潜在的合作伙伴。这样可以发现技术兼容性，以便软件公司可以使用网络上的 UDDI 注册，在软件安装和配置时，自动对某些特定的技术连接进行配置。
到这里，我们有条件也有必要做一个总结来理顺.NET 核心技术间的逻辑关系，从而理解它们如何围绕 Web 服务相互作用。
.NET 技术使用 HTTP/TCP 等标准的网络协议完成底层的传输，以 XML 作为数据表示的基础，通过 SOAP 说明了用 XML 在系统间交换信息的方法，通过 WSDL（同样基于 XML）等服务描述语言来描述和记录 Web 服务所产生和接收的消息，通过 UDDI 来登记和寻找服务。
未来的工作
在 UDDI 方面工作的小组正在计划对 OpenDraft 规范中的功能性进行扩展，使其能够解决更多问题，而不仅仅是技术发现问题。将来的特性将提供查找产品和服务、定义网络服务实施规范的能力，以及提供管理分层的商务组织、团体和贸易集团的能力。推动目标是为网络服务互用性提供一个公共规范。