理解UDDI(3):
bindingTemplate与Web服务调用
(本文最初由 IBM developerWorks 中国网站发表,其网址是http://www.ibm.com/developerWorks/cn/)
(本文是我在developerWorks专栏发表的bindingTemplate与Web服务调用
,需要浏览未缩减版原文,请访问http://www.ibm.com/developerWorks/cn/)
Web服务的技术描述是通过单独包含的bindingTemplate结构的实例来实现的。这些结构提供对决定技术入口点的支持,或者可选地支持远端主机宿主的服务,同时还提供一个轻量级的工具用于描述指定服务实现的唯一技术特征。技术和应用相关的参数和配置文件也同时被支持。
由于UDDI的主要作用是用来描述和发现Web服务信息,所以bindingTemplate被用来描述最令人感兴趣的技术信息。
每一个bindingTemplate结构都有一个单一的businessService逻辑父结构,并且该businessService也有一个单一的businessEntity逻辑父结构。
结构规范:
<element name = "bindingTemplate">
<complexType>
<sequence>
<element ref = "description" minOccurs = "0"
maxOccurs = "unbounded"/>
<choice>
<element ref = "accessPoint" minOccurs = "0"/>
<element ref = "hostingRedirector" minOccurs = "0"/>
</choice>
<element ref = "tModelInstanceDetails"/>
</sequence>
<attribute ref = "bindingKey" use = "required"/>
<attribute ref = "serviceKey"/>
</complexType>
</element>
下层子结构说明:
字段名
描述
数据类型
长度
bindingKey
给定的bindingTemplate的唯一的键值。当保存一个新的bindingTemplate结构时,应当传入一个值为空的bindingKey值。上述操作将促使UDDI注册中心生成一个新的UUID值。为更新一个已经存在的bindingTemplate结构,应当传入与该绑定信息相对应的UUID值。如果数据是通过一个查询操作得到,bindingKey值可以不为空。
UUID
41
serviceKey
当bindingTemplate数据包含在一个已经完整表达信息的同时已经包含一个serviceKey值的businessService父结构时,这个属性是可选的。如果bindingTemplate数据被生成为XML文档,同时这个文档中没有包含一个具有serviceKey的businessService父结构,那么必须在bindingTemplate中提供父结构的serviceKey值。这种行为支持了以任何核心元素作为起点而进行浏览的行为,在这种情况下这样的数据描述能够轻松地处理核心元素给定的父/子关系。
UUID
41
description
可选的可重复元素。对技术服务入口点的具备国家语言代码修饰的零个或多个文本描述。
string
255
accessPoint
必要的由属性修饰的数据元素。本元素是用来描述为调用服务所需的合适入口点地址的文本字段。它可以是URL、e-mail地址,或者是一个电话号码。在对于该Web 服务的技术要求有所了解之前,不应当对该文本栏中出现的信息有任何的理解假设。
string w/attributes
255
hostingRedirector
如果没有提供accessPoint元素,那么本元素是必须的。这个字段是一个可重定向到另一个bindingTemplate的引用。如果你查询一个bindingTemplate并且在其中找到一个hostingRedirector的值,你就应该获取这个重定向的bindingTemplate,并且将该bindingTemplate取代原先那个包含hostingRedirector的bindingTemplate。
empty w/attributes
tModelInstanceDetails
本结构是一个tModelInstanceInfo的列表。这些信息的全体形成了一个可区别的技术指纹,可用于标识兼容的服务(具有相同技术指纹的可认为是兼容服务)。
structure
accessPoint和hostingRedirector子元素应当必须出现一种,并且仅能出现一种。
名为tModelInstanceDetails 的结构的内容可以在bindingTemplate结构中被发现同时是作为技术指纹服务于服务描述的。这一技术指纹是一系列对可唯一标识的规范和/或概念的引用。为了实现一个与某个tModel兼容的新的服务,该tModel所对应的规范是必须被正确理解的。而为了注册一个服务并声明它是与某个规范相兼容的,那么应当在该服务下的bindingTemplate实例中的tModelInstanceDetails下包含一个对该规范的tModel的引用,引用的键值是tModelKey。