商业服务信息:businessService元素
businessService 结构将一系列有关商业流程或分类目录的Web 服务的描述组合到一起。businessService和下面要提到的bindingTemplate一起构成了"绿页"信息。其中,一个可能的商业流程的例子是一组相关的Web 服务信息,包括采购服务、运输服务和其它的高层商业流程。这些服务都将是提供这些商业流程服务的商业实体所需要注册的Web服务。
这些businessService的信息集合可以再次加以分类,使Web应用服务的描述可以按不同的行业、产品、服务类型或是地域划分来进行。分类的方法的机制与businessEntity是类似的。
下面是businessService结构的XML Schema定义:
<element name = "businessService">
<type content = "elementOnly">
<group order = "seq">
<element ref = "name"/>
<element ref = "description" minOccurs = "0" maxOccurs = "*"/>
<element ref = "bindingTemplates"/>
<element ref = "categoryBag" minOccurs = "0" maxOccurs = "1"/>
</group>
<attribute name = "serviceKey" minOccurs = "1" type = "string"/>
<attribute name = "businessKey" type = "string"/>
</type>
</element>
其中,serviceKey和businessKey两个直接属性分别表示businessService的主键和businessService的父类容器businessEntity的主键标识。一般的,serviceKey是在注册后由UDDI注册中心自动赋予,并在businessService整个生命周期中有效。而businessKey的值仅当businessService的父类容器发生变化时才会被修改。
name、description分别表示该服务的名、描述等信息。categoryBag的作用与businessEntity中是类似的。
bindingTemplates是一个bindingTemplate的容器,它表示了这个businessService所包含的所有技术绑定信息。在bindingTemplates中的每个bindingTemplate条目都是本Web服务的一条技术描述信息。这个结构表达了businessService和bindingTemplate的父子包含关系。
技术绑定信息:bindingTemplate元素
对于每一个businessService,存在一个或多个Web 服务的技术描述bindingTemplate。这些技术描述包括应用程序连接远程Web 服务并与之通讯所必须的信息。这些信息包括Web应用服务的地址、应用服务宿主和调用服务前必须调用的附加应用服务等。另外,通过附加的特性还可以实现一些复杂的路由选择,诸如负载平衡等。
下面是bindingTemplate结构的XML Schema定义:
<element name = "bindingTemplate">
<type content = "elementOnly">
<group order = "seq">
<element ref = "description" minOccurs = "0" maxOccurs = "*"/>
<group order = "choice">
<element ref = "accessPoint" minOccurs = "0" maxOccurs = "1"/>
<element ref = "hostingRedirector" minOccurs = "0" maxOccurs = "1"/>
</group>
<element ref = "tModelInstanceDetails"/>
</group>
<attribute name = "bindingKey" minOccurs = "1" type = "string"/>
<attribute name = "serviceKey" type = "string"/>
</type>
</element>
其中,bindingKey和serviceKey两个直接属性分别表示bindingTemplate的主键和bindingTemplate的父类容器businessService的主键标识。一般的,bindingKey是在注册后由UDDI注册中心自动赋予,并在bindingTemplate整个生命周期中有效。而serviceKey的值仅当bindingTemplate的父类容器发生变化时才会被修改。
tModelInstanceDetails包含了这个bindingTemplate所定位的调用入口的调用规范的描述,这些描述都以tModel的形式出现。事实上,tModel并不是bindingTemplate的子元素,这里应该理解成引用关系。
accessPoint定义了由这个bindingTemplate描述的服务调用入口的访问地址,用户可以通过这个地址访问具体的服务。而hostingRedirector则是因为accessPoint无法满足需求而提供的替代机制,同时hostingRedirector机制也是一种及为有效的满足当前电子交易市场、ISP等中间机构存在的情况下的强有力的描述托管机制。
两种不能被bindingTemplate中accessPoint信息直接支持的特殊需求是:
Web服务在技术上由第三方提供主机: 一个商业实体可以选择这样一种方式来发布一种服务,该服务逻辑上属于本企业,但实际上该服务是在远程的或者第三方的主机上运行的。应用服务提供商和网络交易市场运营商是这种情况的典型代表。在这种情况下,实际上是第三方实际控制绑定信息的运行时态的取值。
用户指定的对绑定位置的访问控制: 在其他情况中,比如情景相关的重定向是基于调用者的标识的,或者甚至是每天的路由,此时,提供更动态的对远程服务的实际联络信息的方式是非常必需的,相比起缓存accessPoint数据以支持调用的方式更为必要。关于对bindingTemplate信息的缓存机制请参阅本文后面的相关小节。
由于这些原因,bindingTemplate结构包括一个备用的数据元素,被称为hostingRedirector。hostingRedirector元素的存在和accessPoint信息是互斥的。这样使我们得以知道到底应该如何获取包含所需要使用的accessPoint数据的实际bindingTemplate信息,使用hostingRedirector或accessPoint。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
API设计:如何正确开发应用程序接口
在交互组件化软件的世界里,没有比让组件之间以及组件与移动设备和浏览器之间进行连接的应用程序接口(API)更重要的东西了。
-
REST vs. SOAP:如何挑选最好的Web服务
在应用没有任何服务器端的组件情况下,有没有可能直接通过我的应用数据库直接使用这些Web服务?
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。
-
REST和SOAP 谁使移动应用最受益?
你应该听说过REST,如果在移动应用开发中使用REST,而不是使用SOAP,最大好处是什么?