by Timothy Appnel
10/16/2002
matrix-JavaMEN
web服务检视语言(WSIL)是一种XML文档的格式,以简便并可扩展的样式来简化Web服务描述的发现和聚合。它与统一描述、集成和发现(UDDI)规范在作用域上类似,但WSIL是一种补充,不仅仅是对于服务发现的竞争和典范。
自从它发布后,UDDI因执行而被广为批评,并且对它适当的质疑接二连三的出现在Web服务体系发展舞台上。WSIL是由IBM组织和微软工程师创造的,并在2001年11月发布。它因其基于文档的方式而显的很有意义,它更轻量级和直接,并更好地在现有地Web体系中起杠杆的作用。这种方式使得规范上升的更加显著。
在本文中,我将介绍WSIL的核心规范,包括WSIL如何对检视文档定位,另外我将粗略的讲述一下用服务描述(比如WSDL)来扩展规范,并会指出规范中存在的一些问题。首先,我们看一下UDDI和WSIL在服务发现上的一些区别:
WSIL and UDDI: Same Space, Different Models. WSIL和UDDI作用于服务的出版和发现上,但是它们的模型不一样。在本部分里,我们将详细介绍它们的区别。
UDDI用中央模型来实现服务发现,该模型是一个或多个包含多重业务实体及所提供服务的仓库,你可以把UDDI比作是你电话簿里的黄页,在此你可以组织多重业务并能列表提供的货物和服务描述及如何与它们联系。本规范通过简单对象访问协议(SOAP)提供了高水准的功能,需要明确一种基础构造以扎实地往高处发展,并且根据需要来利用。
WSIL以一种分散的方式来实现服务发现,服务描述信息可以用一种简单可扩展的XML文档格式来分布到任何位置。与UDDI相比,它并不关系到业务实体信息,也不需要明确一种特殊的服务描述格式。WSIL运作在假定你已经熟悉服务供应者的前提下,并依靠其他的一些服务描述机制,比如Web服务描述语言(WSDL)。
WSIL文档采用现存一些简单、规范的Web结构来定位。一般来说,WSIL就像一张名片,它可以表现明确的实体、服务及联系信息,并且可以有特色地被用来传送。WSIL的一些简单的功能和特性留给了开发者来处理实现。如果一篇文档内容很多或者是文档集结构很杂,WSIL开始停滞并且对查询及管理操作难以处理。最后,在WSIL工具包发展的同时它的发展效果将会降低,类似于Apache软件基金会下的Axis项目。功能简单的XML文档格式也可以很轻松的创建一些新颖有创造性的程序。
正如你所见,UDDI和WSIL都是关于Web服务发现的机制,但它们的模型完全两样,可以根据你的条件来选择用那一种。在一般情况下,两者兼而用之效果会更好。下面你会看到,WSIL可以用在UDDI仓库而且在里面有服务描述。
WSIL模型比UDDI更宁静。在许多方面,WSIL就像支持Web服务的RDF站点摘要(RSS)。RSS是一种采用指示器来发布可以组合内容的文件格式,WSIL是一种采用引用来发布可以被发现和绑定的Web服务的文件格式。
wsil Basics:
WSIL规范被设计以支持一些简单、轻量级及可扩展的服务发现,而且,WSIL可以使得信息能被创建、发布以及维护。WSIL核心原理包含六种标记。在本部分里,我将在测试前先带大家回顾一下WSIL文档结构的文法。使用XML名空间,WSIL可以被扩展以支持一些服务描述和集合关于发现进程所需的信息。
示例1:一个简单的WSIL文件例子。
<?xml version="1.0" encoding="UTF-8"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<abstract>Acme Industries Public Web Services</abstract>
<service>
<name>Store Finder Service</name>
<abstract>A service to perform a geographical search of Acme
store locations.</abstract>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.org/services/storefinder.wsdl"></description>
</service>
<link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
location="http://example.org/services/ecommerce.wsil" >
<abstract>Acme Industries Public e-Commerce Services</abstract>
</link>
</inspection>
所有的WSIL文档以inspection做为根节点,该标记包含文档名空间声明及其他一些服务信息和引用标记。由于这只是个简单的文档,所以只定义了WSIL名空间。
抽象标记是一种随意的标记,可以插入到允许子标记含有信息以描述父标记的标记集里。在这里我们提供了一个简短的文本描述,以后我们也将用该抽象标记来为服务提供些文档,并且提供一些其他文档的连接。如果描述是用一种规范的语言写的,我可以随意定义一个xml:lang属性,如同XML1.0规范里所述的。
在本例中,我定义了一个指向单一服务描述的引用,也就是一个WSDL文件,以服务标记集开头。名称类似于抽象标记,可以允许作者定义一个服务描述名称,比如:存储发现服务。该名称仅用于文档而且可以不唯一,正如抽象标记一样,它也可以定义一个xml.lang属性。
描述标记集是服务的核心模块,它包含了发现特殊的服务描述的所有信息。在本例子里,我们仅仅引用一个定义了服务描述的WSDL文件,而不需要保留消费者额外的信息。描述标记用一个referencedNameSpace属性来指定服务描述名空间,该名空间引用可以决定合适的引用及是否在引用末端保留服务描述。描述也可以用一个自定义的location属性来定义一个服务描述的直接引用。该机制对我们这个简单的引用已经足够了,但是WSIL的扩展性可以很好的在描述标记集里插入附加信息以给客户保存服务信息。服务区能提供多重描述标记以支持客户的不同服务描述的选择。例如:一个服务可以定义对一个WSIL、UDDI和Html文档的引用。
除了对服务描述的引用,WSIL提供对其他服务指示器集合的连接,比如其他的WSIL文件或UDDI仓库。这个可以通过link标记集加以简化,就如服务区里的描述标记,link标记集以相同的方式来实现referenceNamespace和location. 同样的,它包含扩展WSIL的元素以的客户连接到此集合上,在我们的例子中,我们连接到另一个WSIL文档,大概带有Acme产业商业性服务的服务描述。进入讨论组讨论。
(出处:http://www.knowsky.com)