當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
Web服務(wù):WS-Inspection 1.0
Web服務(wù):WS-Inspection 1.0
作者(按字母順序排列):
Keith
Ballinger,Microsoft
Peter Brittenham,IBM
Ashok
Malhotra,Microsoft
William A. Nagy,IBM
Stefan Pharies,Microsoft
2001 年 11 月
Copyright?001 International Business
Machines Corporation, Microsoft
摘要
WS-Inspection 規(guī)范提供了用來幫助探察某個站點以獲得可用服務(wù)的
XML 格式,以及提供了一組關(guān)于怎樣使與探察相關(guān)的信息可用于消費的規(guī)則。WS-Inspection
文檔提供了一種方法,來聚集對預(yù)先存在的服務(wù)描述文檔的引用,這些文檔已經(jīng)用多種格式創(chuàng)建好了。然后這些探察文檔就可以在服務(wù)的提供點探察服務(wù),也可以通過可放在內(nèi)容媒體(如
HTML 中)的引用來獲得服務(wù)。
現(xiàn)狀
這篇草案代表了 IBM 和 Microsoft
內(nèi)部對當(dāng)前關(guān)于定位和探察服務(wù)的思想。它鞏固了 ADS 和 DISCO(該領(lǐng)域早一些的建議)中建立的觀念。
1. 介紹
我們建議規(guī)范在不同級別和從不同角度描述 Web 服務(wù)。所建議的“Web 服務(wù)描 述語言”(WSDL)[1] 的目標(biāo)是在功能級描述服務(wù)。通用描述、發(fā)現(xiàn)和集成(Universal Description, Discovery, and Integration(UDDI))[2] 模式旨在從一種更以商務(wù)為中心的角度來描述。所建議的這些標(biāo)準(zhǔn)還沒有賦予這樣一種能力,即在服務(wù)的提供點能夠用一種既容易創(chuàng)建又容易使用的方式將這些不同的信息源綁在一起。WS-Inspection 規(guī)范通過定義一種 XML 語法達(dá)到這種要求,這種語法使聚集對不同類型服務(wù)描述文檔的引用更方便,然后為這種語法的實例提供定義完好的使用模式。這樣做,WS-Inspection 規(guī)范文檔提供了一種方法,通過這種方法來探察站點以獲取服務(wù)來源。
資源庫已經(jīng)存在,關(guān)于 Web 服務(wù)的描述信息在此集中在一起。WS-Inspection 規(guī)范提供了可用來引用和使用這些現(xiàn)有的資源庫的機(jī)制,這樣如果副本不需要,就沒有必要復(fù)制其中包含的信息。
1.1 設(shè)計目標(biāo)
WS-Inspection
規(guī)范的兩個主要設(shè)計目標(biāo)是簡單性和可擴(kuò)展性。WS-Inspection 文檔本質(zhì)上是指向描述服務(wù)文檔指針的集合。結(jié)果,編寫和維護(hù) WS-Inspection
文檔相當(dāng)容易。因為一個 WS-Inspection 文檔可能指向各種服務(wù)描述文檔格式,所以可以創(chuàng)建這樣的 WS-Inspection 文檔,這些
WS-Inspection 文檔允許文檔消費者從可用的描述中精心挑選,并且允許只訪問那些他們能理解的文檔。當(dāng)新的描述格式出現(xiàn),能夠?qū)⑿碌囊锰砑拥浆F(xiàn)有的
WS-Inspection 文檔,而不需要對基本的 WS-Inspection 模式進(jìn)行修改。
1.2 WS-Inspection
文檔示例
以下是用于單個服務(wù)(提供股票報價信息)的簡單的 WS-Inspection 文檔示例。該服務(wù)有一個相應(yīng)的 HTTP
可訪問 WSDL 文檔,它描述了服務(wù)的接口。
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote.wsdl"
/>
</service>
</inspection>
下一個示例展示了用于提供金融工具的兩個服務(wù)的 WS-Inspection 文檔。提供股票報價的第一個服務(wù)有兩個可用的描述;一個用 HTTP 可訪問 WSDL 文檔,另一個用 UDDI 目錄。提供計算器的第二個服務(wù)只由一個匿名的 FTP 可訪問 WSDL 文檔形式描述。WS-Inspection 文檔還包含到另一個 WS-Inspection 文檔的鏈接。
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/">
<service>
<abstract>A
stock quote service with two descriptions</abstract>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote.wsdl"/>
<description
referencedNamespace="urn:uddi-org:api">
<wsiluddi:serviceDescription location="http://www.example.com/uddi/inquiryapi">
<wsiluddi:serviceKey>4FA28580-5C39-11D5-9FCF-BB3200333F79</wsiluddi:serviceKey>
</wsiluddi:serviceDescription>
</description>
</service>
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="ftp://anotherexample.com/tools/calculator.wsdl"/>
</service>
<link
referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
location="http://example.com/moreservices.wsil"/>
</inspection>
第 2 節(jié)中提供了這兩個示例中用到的元素的詳細(xì)描述。
注意:對于這些示例,假設(shè)每一個引用的 WSDL 文檔只包含一個 WSDL service 元素。請參閱第 3 節(jié)以獲取更多的信息。
1.3 表意約定
該文檔中的關(guān)鍵詞“必須”、“一定不能”、“要求的”、“將”、“將不”、“應(yīng)該”、“不應(yīng)該”、“推薦的”、“可以”以及“可選的”,解釋如 RFC-2119 [3] 中所述。
貫穿全文使用以下名稱空間前綴:
該規(guī)范使用非正規(guī)的句法描述 WS-Inspection 文檔的 XML
語法。
句法以 XML 實例出現(xiàn),但值表示數(shù)據(jù)類型而不是實際的值。
附加在元素和屬性后的字符如下:“?”(0 或 1
個)、“*”(0 或多個)、“+”(1 或多個)。
以“...叀保ū熱?< element...?> 或 <
element...?gt;)結(jié)尾的元素名稱表示省略了與上下文無關(guān)的元素/屬性。
文檔中以粗體表示的語法以前沒有介紹過,或者是示例中特別感興趣的地方。
<-- extensibility element
--> 是用于來自“其它”名稱空間的占位符(比如 XSD 中的 ##other)。
XML
名稱空間前綴(上面定義的)用來表示正被定義的元素的名稱空間。
以 <?xml
開始的示例包含充足的信息,它們遵循該規(guī)范;其它示例是片斷,并且為了與規(guī)范一致需要指定附加的信息。
2.0
探察文檔定義
這一節(jié)描述 WS-Inspection 語言的核心元素。WSDL 和 UDDI 的綁定擴(kuò)展在第 3 和第 4
節(jié)中討論。
2.1 WS-Inspection 文 檔結(jié)構(gòu)
WS-Inspection
文檔的根包含一個 inspection
元素,并且引用個別服務(wù)描述或鏈接到服務(wù)描述集合,這些服務(wù)描述或服務(wù)描述集合的鏈接作為其子孫元素。WS-Inspection
文檔的語法如下:
<wsil:inspection>
<wsil:abstract xml:lang=""?
... /> *
<wsil:service> *
<wsil:abstract xml:lang=""? ... /> *
<wsil:name
xml:lang=""? ... /> *
<wsil:description
referencedNamespace="uri" location="uri"?>
*
<wsil:abstract xml:lang=""? ... />
*
<-- extensibility element -->
?
</wsil:description>
</wsil:service>
<wsil:link referencedNamespace="uri"
location="uri"?/> *
<wsil:abstract
xml:lang=""? ... /> *
<-- extensibility element
--> ?
</wsil:link>
</wsil:inspection>
有一個附加的約束,即 inspection 元素“必須”包含至少一個 service 子元素或 link 子元素,并且“可以”包含兩者的組合。包含以上約束的語法的更準(zhǔn)確的定義可以在“附錄 2”中找到。示例中的每一個元素在下面相應(yīng)的節(jié)中描述。
2.1.1 語言可擴(kuò)展性和綁定
在 WS-Inspection
規(guī)范中,術(shù)語綁定是指將特定的描述格式/檢索相關(guān)的信息與更抽象的 WS-Inspection
實體相關(guān)聯(lián)的過程。例如,什么類型的信息可以在被引用的特定類型文檔中,或者在檢索這類文檔有關(guān)的的信息中找到?描述這個問題的線索需要使用特定于描述格式的綁定。WS-Inspection
規(guī)范使元素能在 description 和 link 元素中代表一種特定的技術(shù)(這里指可擴(kuò)展性元素)??蓴U(kuò)展性元素“必須”使用 XML 名稱空間,與基本
WS-Inspection 語言有所不同。
可擴(kuò)展性元素允許調(diào)用處理服務(wù)描述,而不必修改基本的 WS-Inspection 規(guī)范。本文檔建議定義這種描述格式的規(guī)范也定義引用它們所需的任何必需的 WS-Inspection 擴(kuò)展。
請參閱第 3 和第 4 節(jié)獲取定義為基本 WS-Inspection 規(guī)范的部分的可擴(kuò)展性元素的示例。
2.1.2 文檔
WS-Inspection 規(guī)范使用可選的 abstract
元素作為可以放置小文本描述的容器。該元素的內(nèi)容旨在供人消費。允許有子元素的任何基本 WS-Inspection 語言元素允許使用 abstract
元素。
可選的 xml:lang 屬性(在 [5] 中定義)可以在一個元素中指定,它指出 abstract 元素是用哪一種語言編寫的。具有相同 xml:lang 屬性值的多個 abstract 元素“可以”作為同級元素出現(xiàn)。
2.2 服務(wù)
service 元素作為服務(wù)引用描述集合間的描述者。一個
inspection 元素中可以包含多個 service 元素。每一個 service 元素“可以”有一個或多個 abstract 元素以及一個或多個 name
元素,并且“必須”至少有一個 description 元素,但“可以”有多個。
2.2.1 服務(wù)的文本描述
一個或多個 abstract 元素可以用在一個
service 元素中,用來提供可放置關(guān)于該 service 的小文本描述的位置。該 abstract
的內(nèi)容用來供人消費,并且只用來提供一小段關(guān)于服務(wù)的有用信息。至于接收 WS-Inspection
文檔,工具可以使用這個字段來詢問用戶:他們是否想得到更多的關(guān)于該服務(wù)的信息,而不要求預(yù)先得到任何引用的描述。取代更完整的服務(wù)描述語言不是該元素的目的。
通過使用指向完善的描述文檔的 description 元素“可以”添加更復(fù)雜的文檔集。
2.2.2 服務(wù)名稱
name 元素可以用來將一個名稱與特殊的服務(wù)相關(guān)聯(lián)。同
abstract 元素一樣,name 元素只用來供人消費,并且不保證是唯一的。
可選的 xml:lang 屬性可以在元素中指定,指出 name 元素是用哪一種語言編寫的。具有相同 xml:lang 屬性值的多個 name 元素“可以”作為同級元素出現(xiàn)。
2.2.3 服務(wù)描述引用
探察中最有用的部分是 description
元素中包含的信息。這些元素可以用來提供指向各種形式的服務(wù)描述文檔的指針,允許消費者只處理他們覺得有用的內(nèi)容。 referencedNamespace
屬性標(biāo)識引用文檔所屬的名稱空間。例如,指向 WSDL 文檔的 description 元素中的 referencedNamespace
屬性的值將是“http://schemas.xmlsoap.org/wsdl/”。WS-Inspection 文檔的消費者可以使用
referencedNamespace 屬性來確定它是不是他們要檢索的引用的描述文檔的值。
可選的 location 屬性“可以”用來提供實際的對描述的引用。location 屬性的值“必須”是有效的 URL,并且使用這個 URL 中指定方案的主要訪問機(jī)制,“必須”可以從 URL 檢索到描述(例如,對于一個 HTTP URL,在所提供的 URL 通過執(zhí)行 HTTP GET,必須可檢索到文檔)。如果使用主要的訪問機(jī)制不能檢索到文檔,或者為了進(jìn)行檢索需要更多的信息,那么“必須”使用可擴(kuò)展性機(jī)制指定該信息。
一個可擴(kuò)展性元素“可以”出現(xiàn)在 description 元素下,提供檢索或處理服務(wù)描述所需的任何附加信息,或者提供關(guān)于描述文檔內(nèi)容的線索(可以證明對于消費者決定是不是應(yīng)該檢索那個特殊服務(wù)描述是很有用的)。用到的可擴(kuò)展性元素“必須”是受支持的綁定,如果存在一個可擴(kuò)展元素,由父 description 元素的 referencedNamespace 屬性指定文檔名稱空間。如果綁定的定義包含在這個規(guī)范中且作為規(guī)范的部分,或者如果綁定通過所綁定描述機(jī)制規(guī)范的控制體達(dá)成一致,那么綁定是“受支持的”。如果一個特殊的描述機(jī)制沒有受支持的綁定,那么不保證互操作性。
雖然應(yīng)該做每一種嘗試來確保 WS-Inspection 文檔中包含的信息是準(zhǔn)確的,但文檔的消費者“一定不能”假定所提供的信息正好與所引用文檔的信息匹配。雖然綁定可以用來提供關(guān)于引用文檔的線索,但它們“一定不能”用作最終的服務(wù)描述信息源。
WS-Inspection 文檔的作者必須做每一種嘗試來確保文檔中包含的信息是準(zhǔn)確的,但是文檔的消費者“一定不能”假定所提供的信息正好與所引用的文檔的信息匹配。必須通過檢索和處理所引用的文檔作出最終決定。
2.3 到其它探察文檔和相關(guān)集合信息源的鏈接
link 元素允許
WS-Inspection 文檔引用附加的服務(wù)描述集合,比如其它 WS-Inspection 文檔或 UDDI 資源庫。
例如,使用如下形式的 link 元素,可以創(chuàng)建 WS-Inspection 文檔分層:
<wsil:link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
location="uri of WS-Inspection document">
因為許多服務(wù)描述只在其它信息注冊中心(如 UDDI)中發(fā)布,link 元素能使服務(wù)提供者免于必須用大量 service 元素(它們只包含同一個 description 元素)創(chuàng)建探察文檔,所有的 link 元素都指向信息注冊中心中的同一位置。通過使用如下形式的 link 元素,服務(wù)提供者能夠給消費者指明 WS-Inspection 鏈接,他們應(yīng)該在所指明的位置查找附加的服務(wù)描述集合:
<wsil:link referencedNamespace="uri"
location="uri"?>
<-- extensibility element
-->
</wsil:link>
這使提供者能夠引用預(yù)先存在的信息,同時仍然允許通過 WS-Inspection 探察過程發(fā)現(xiàn)它。
link 元素“必須”只用來引用定義完好的服務(wù)描述集合,比如 WS-Inspection 文檔和 UDDI businessEntitie。
link 元素中的 referencedNamespace 屬性標(biāo)識鏈接的集合源的名稱空間。使用 URL 中指定方案的主要訪問機(jī)制,如果源可從這個 URL 檢索到,可選的 location 屬性“可以”用來提供實際的到源的鏈接。如果使用主要的訪問機(jī)制不能檢索集合,那么“必須”使用可擴(kuò)展性機(jī)制指定該信息。
一個可擴(kuò)展性元素“可以”出現(xiàn)在 link 元素下,提供檢索已鏈接的集合所需的任何附加信息。可擴(kuò)展性元素“必須”是受支持的綁定,綁定由父 link 元素的 referencedNamespace 屬性指定文檔名稱空間。請參閱第 2.2.3 節(jié)被支持綁定的定義。
WS-Inspection 規(guī)范沒有為處理 link 元素指定模式:消費者“可以”使用他們所希望的鏈接,而服務(wù)提供者“一定不能”假定它們能完全可用。此外,WS-Inspection 規(guī)范沒有將任何限制強(qiáng)加于由引用創(chuàng)建的結(jié)構(gòu),這樣就由 WS-Inspection 文檔的處理器來確保周期的引用不會無限制地進(jìn)行下去。
下面的示例展示了包含兩個到其它 WS-Inspection 文檔鏈接的 WS-Inspection 文檔:
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
location="http://example.com/financial/services.wsil"/>
<link referencedNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
location="http://example.com/purchasing/poservices.wsil"/>
</inspection>
3.0 WSDL 綁定
WS-Inspection 規(guī)范包含 WSDL 1.1
綁定,并且提供了以下的功能:
出現(xiàn)在引用的 WSDL 文檔中的 WSDL 綁定的類型的指示
如果幾個服務(wù)存在于同一文檔中,正在引用哪一個
WSDL 服務(wù)的規(guī)范
特殊的引用的 WSDL 文檔是不是正提供端點信息的指示
請注意如果引用的 WSDL 文檔有一個或沒有
service 元素,使用 WSDL 綁定是“可選的”。 在這些情況中,“可以”只用 description 元素引用 WSDL 文檔。如果引用的 WSDL
文檔有多個的 service 元素,那么 WSDL 綁定“必須”用來表示正在引用哪一個 service 元素。
WS-Inspection 規(guī)范允許引用任何 WSDL 文檔,而不用考慮文檔的內(nèi)容??梢砸脝蝹€服務(wù)的 WSDL 描述的任何部分(這個描述包含在可檢索單元中,比如單個文件)。唯一強(qiáng)制的約束是同一 WS-Inspection 服務(wù)的兩個引用的 WSDL 文檔“不可以”包含相沖突的信息。這種機(jī)制“一定不能”用作 WSDL import 元素的替代品;它們不是等同的。
因為 WSDL 是一種描述格式,它沒有為其文檔指定檢索機(jī)制,這種綁定只能應(yīng)用于 WS-Inspection description 元素。
3.1 WSDL 綁定怎樣擴(kuò)展 WS-Inspection 規(guī)范
WSDL
綁定使用以下的擴(kuò)展元素擴(kuò)展 WS-Inspection 規(guī)范:
<inspection xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/ ...>
<service ...>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="uri">
<wsilwsdl:reference
endpointPresent="boolean"?>
<wsilwsdl:referencedService>qname</wsilwsdl:referencedService>
?
<wsilwsdl:implementedBinding>qname</wsilwsdl:implementedBinding>
*
</wsilwsdl:reference>
</description>
</service>
</inspection>
在下一節(jié)中描述了包含附加限制的 WSDL 擴(kuò)展的解釋。
3.2 wsilwsdl:reference
WS-Inspection
WSDL 綁定元素 reference 作為其余綁定信息的容器元素。reference 元素“可以”有 endpointPresent 屬性、單個
referencedService 子元素和/或一個或多個 implementedBinding 子元素,但“必須”至少有三個中的一個。
endpointPresent 屬性“可以”用來表示引用的文檔是不是包含端點信息。如果這個屬性有一個布爾值為 true(或 1),那么引用的 WSDL 文檔“必須”包含 service 元素。如果該屬性有一個布爾值為 false(或 0),那么引用的 WSDL 文檔“一定不能”包含 service 元素。只查詢服務(wù)端點信息的 WS-Inspection 消費者可以選擇探察該屬性來確定能不能檢索到引用的 WSDL 文檔。
下面的示例展示了用于股票報價服務(wù)(在第 1.2 節(jié)中出現(xiàn))的 WS-Inspection 文檔。在該例中,假設(shè)描述服務(wù)的文檔被分成三個文件,用“main”文件導(dǎo)入其它兩個。
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/">
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote/main.wsdl">
</description>
<description referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote/bindings.wsdl">
<wsilwsdl:reference
endpointPresent="false"/>
</description>
</service>
</inspection>
請注意三個 WSDL 文件中只有兩個創(chuàng)建了引用。正如前面所陳述的,WS-Inspection 規(guī)范沒有將任何限制強(qiáng)加在引用的 WSDL 信息上。
3.2.1 wsilwsdl:referencedService
雖然
WSDL 允許在單個文檔中描述多個服務(wù),但是 WS-Inspection 引用對應(yīng)于每個服務(wù)。 如果引用的 WSDL 文檔包含多個的 WSDL service
元素,那么 WS-Inspection WSDL 綁定的 referencedService 元素“必須”用來指定正在引用哪一個服務(wù)。由
referencedService 元素指定的 QName“必須”是與引用的 WSDL 文檔中的服務(wù)相對應(yīng)的有效的 QName。
下面的示例展示了股票報價和計算器服務(wù)(在第 1.2 節(jié)中出現(xiàn))的 WS-Inspection 文檔。在該例中,假設(shè) WSDL 文檔包含對多個金融服務(wù)的描述。
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/">
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/finance.wsdl">
<wsilwsdl:reference>
<wsilwsdl:referencedService xmlns:ns1="http://example.com/finance.wsdl">
ns1:StockQuoteService<wsilwsdl:referencedService>
</wsilwsdl:reference>
</description>
</service>
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/finance.wsdl">
<wsilwsdl:reference>
<wsilwsdl:referencedService xmlns:ns1="http://example.com/finance.wsdl">
ns1:CalculatorService<wsilwsdl:referencedService>
</wsilwsdl:reference>
</description>
</service>
</inspection>
3.2.2 wsilwsdl:implementedBinding
implementedBinding 元素“可以”用來表示出現(xiàn)在引用的 WSDL 文檔的綁定的類型。reference 元素“可以”有多個
implementedBinding 元素作為子元素。由 implementedBinding 元素指定的 QName“必須”是與引用 WSDL
文檔中綁定相對應(yīng)的有效的 QName。
下面的示例展示了股票報價和計算器服務(wù)(在第 1.2 中出現(xiàn))的 WS-Inspection 文檔。第一個服務(wù)有對 WSDL 描述的引用,它實現(xiàn)兩個綁定:http://example.com/stockquote.wsdl/StockQuoteSoapBinding 和 http://example.com/stockquote.wsdl/StockSymbolLookupSoapBinding。第二個服務(wù)也有對 WSDL 描述的引用,但它不提供關(guān)于該文檔中所包含綁定的任何附加信息。
<?xml version="1.0"?>
<inspection xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/">
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/stockquote.wsdl">
<wsilwsdl:reference>
<wsilwsdl:implementedBinding xmlns:ns1="http://example.com/stockquote.wsdl">
ns1:StockQuoteSoapBinding</wsilwsdl:implementedBinding>
<wsilwsdl:implementedBinding xmlns:ns1="http://example.com/stockquote.wsdl">
ns1:StockSymbolLookupSoapBinding</wsilwsdl:implementedBinding>
</wsilwsdl:reference>
</description>
</service>
<service>
<description
referencedNamespace="http://schemas.xmlsoap.org/wsdl/"
location="http://example.com/tools/calculator.wsdl"/>
</service>
</inspection>
4.0 UDDI 綁定
許多服務(wù)描述將存儲在 UDDI 注冊中心,因此
WS-Inspection 規(guī)范為對該信息的引用提供一組使用模式。這通過使用一組 UDDI 可擴(kuò)展性元素來完成,這些可擴(kuò)展性元素提供對來自版本 1 和版本 2
UDDI 規(guī)范的 UDDI businessEntity 或 businessService
條目的引用。兩個版本的這種綁定是同樣的,除了用來代表它們的模式不同之外。引用版本 1 UDDI 文檔的 link 或 description 元素中的
referencedNamespace 屬性值為“urn:uddi-org:api”,而引用版本 2
文檔時值為“urn:uddi-org:api_v2”。
4.1 UDDI 綁定怎樣擴(kuò)展 WS-Inspection 規(guī)范
UDDI
綁定使用如下的擴(kuò)展元素擴(kuò)展 WS-Inspection 規(guī)范:
<inspection
(xmlns:wsiluddi://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/
| xmlns:wsiluddi://schemas.xmlsoap.org/ws/2001/10/inspection/uddiv2/) ...
>
<link ... >
<wsiluddi:businessDescription
location="uri"?>
<wsiluddi:discoveryURL
useType="nmtoken"> ?
<wsiluddi:businessKey> ?
</wsiluddi:businessDescription>
</link>
<service ... >
<description ... >
<wsiluddi:serviceDescription
location="uri"?>
<wsiluddi:discoveryURL useType="nmtoken">
?
<wsiluddi:serviceKey>
?
</wsiluddi:serviceDescription>
</description>
</service>
</inspection>
在下面幾節(jié)中描述了這些 UDDI 擴(kuò)展的解釋。
4.2 wsiluddi:businessDescription
選擇在
UDDI 中注冊其服務(wù)描述的用戶可以創(chuàng)建 WS-Inspection 引用,它引導(dǎo)消費者使用 UDDI 來發(fā)現(xiàn)服務(wù)描述信息。WS-Inspection link
元素,與 UDDI 可擴(kuò)展性元素一起,描述了應(yīng)該檢索哪一個記錄。對于 UDDI,link 元素將只包含 referencedNamespace 屬性。當(dāng)
link 元素包含 UDDI businessDescription 元素時,它不使用 location 屬性。下面的示例說明了這種用法:
<?xml version="1.0"?>
<inspection
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/"
xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<link
referencedNamespace="urn:uddi-org:api">
<wsiluddi:businessDescription location="http://www.example.com/uddi/inquiryapi">
<wsiluddi:businessKey>3C9CADD0-5C39-11D5-9FCF-BB3200333F79</wsiluddi:businessKey>
<wsiluddi:discoveryURL
useType="businessEntity">
http://www.example.com/uddi?3C9CADD0-5C39-11D5-9FCF-BB3200333F79
</wsiluddi:discoveryURL>
</wsiluddi:businessDescription>
</link>
</inspection>
當(dāng)使用 UDDI 擴(kuò)展元素時,link 元素必須包含對 UDDI 名稱空間的引用。這表示由該元素包含的擴(kuò)展性元素用來引用 UDDI businessEntity。使用 businessDescription 元素指定 WS-Inspection 擴(kuò)展。link 元素必須包含 UDDI businessKey 元素、UDDI discoveryURL 元素,或者二者兼有。
businessKey 元素的值連同 UDDI get_businessDetail 消息一起被使用。要使用 businessKey,businessDescription 元素必須包含 location 屬性。該屬性的值是 UDDI 注冊中心查詢接口的 URL,它用來以 get_businessDetail 消息向注冊中心發(fā)出 HTTP POST。 對該消息的響應(yīng)是與業(yè)務(wù)關(guān)鍵字相關(guān)的 UDDI businessEntity 記錄。
如果提供了 discoveryURL 元素,可以通過 HTTP GET(根據(jù)該元素的值指定的 URL 發(fā)出)檢索 UDDI businessEntity 記錄。如果 businessKey 元素和 discoveryURL 元素都提供了,那么 WS-Inspection 文檔的消費者可以選擇用哪一種方法檢索記錄。
4.3 wsiluddi:serviceDescription
也可以通過
WS-Inspection 文檔對存在于 UDDI 中的單個服務(wù)描述的引用進(jìn)行引用。通過使用 description
元素以及添加的可擴(kuò)展性元素,可以檢索到正確的記錄。下面的示例說明了這種用法:
<?xml version="1.0"?>
<inspection
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/"
xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">
<service>
<name>UDDI
Service Description</name>
<description
referencedNamespace="urn:uddi-org:api">
<wsiluddi:serviceDescription location="http://www.example.com/uddi/inquiryapi">
<wsiluddi:serviceKey>4FA28580-5C39-11D5-9FCF-BB3200333F79</wsiluddi:serviceKey>
<wsiluddi:discoveryURL
useType="businessEntity">
http://www.example.com/uddi?3C9CADD0-5C39-11D5-9FCF-BB3200333F79
</wsiluddi:discoveryURL>
</wsiluddi:serviceDescription>
</description>
</service>
</description>
WS-Inspection description 元素使用 serviceDescription 擴(kuò)展元素包含對單個 UDDI 服務(wù)描述的引用。UDDI serviceKey 元素必須作為 serviceDescription 元素的子元素出現(xiàn)。用 serviceKey 元素的值連同 UDDI get_serviceDetail 消息來檢索 UDDI 服務(wù)描述。
UDDI discoveryURL 元素也可以作為 serviceDescription 元素的子元素出現(xiàn)。如果提供了 discoveryURL 元素,它可以用來通過 HTTP GET 檢索 UDDI businessEntity。使用指定的 serviceKey 從 UDDI businessEntity 中抽取單個服務(wù)描述。
5.0 開發(fā)附加綁定
正如第 2.2.3 節(jié)所說明的,在大多數(shù)普通的
WS-Inspection 文檔中可以使用簡單的 description
元素引用大多數(shù)描述文檔,而不需要提供任何附加信息。但是,如前面提到的,有一些例子,比如用 UDDI,如果要檢索所需要的信息,只通過 description
元素或 link 元素不能提供足夠的信息。也有一些例子,比如用許多 WSDL
文檔,能夠提供關(guān)于所引用文檔的附加信息是很有用的。雖然這個規(guī)范為兩個最流行的服務(wù)描述機(jī)制(第 3.0 節(jié)中的 WSDL 和第 4.0 節(jié)中的
UDDI)創(chuàng)建了綁定,但是它對于所有其它預(yù)先存在的描述機(jī)制來說,這樣做是行不通的。因此什么時候需要開發(fā)新的綁定,以及什么時候就其格式和用法達(dá)成協(xié)議將留給有關(guān)團(tuán)體來決定。以下是一些有助于這些新的綁定設(shè)計的指導(dǎo)方針:
每一個綁定“可以”有一個根元素用來擴(kuò)展 description 元素,一個根元素用來擴(kuò)展 link
元素,但是每一種“一定不能”多于一個根元素。綁定“可以”使用相同的根元素來進(jìn)行兩種擴(kuò)展。
綁定“必須”限制關(guān)于公開的所引用描述的信息量。取代描述文檔不是 WS-Inspection 文檔的目的。
綁定“可以”在合適的地方使用描述語言的元素,而綁定正是為該描述語言創(chuàng)建的,但是“應(yīng)該”限制其相關(guān)的語義被修改的程度。
6.0 探察文檔發(fā)布
至于推廣服務(wù)的這個問題,WS-Inspection
語法只提供了部分解決方案。為定位和訪問已創(chuàng)建的探察提供一致的方法要求有第二個組件。如果不能容易地定位 WS-Inspection 文檔,那么這些
WS-Inspection 文檔幾乎不能提供什么增值。為此,WS-Inspection
規(guī)范為探察文檔提供了兩種使用方法,描述了它們應(yīng)該放在什么地方,以及怎樣找到它們。在下面的兩小節(jié)中定義了這兩種使用模式。
6.1 固定名稱的探察文檔
當(dāng) WS-Inspection
文檔可用時,必須能容易地定位它。如果得到一個 URL,它不直接和 WS-Inspection
文檔對應(yīng),并且可能不直接和任何一種類型的文檔對應(yīng),那么使用已提供的并且仍然能夠檢索到任何與探察相關(guān)的文檔(在該位置可以得到)的 URL 是所希望的。為此,名為
inspection.wsil 的 WS-Inspection 文檔“可以”放在最通用的入口,該入口指向部署在定位的服務(wù)器上的 Web
站點和應(yīng)用程序。
例如,example.com 公司將在其 Web 服務(wù)器的根部創(chuàng)建 inspection.wsil 文件(可以通過 http://example.com/inspection.wsil 得到)。如果他們通過 http://example.com/financial 和 http://example.com/shipping 提供服務(wù),那么他們也可以將 inspection.wsil 文件放在這些 URI 下,可以從這里訪問。有可能根級的 inspection.wsil 文件可以只包含指向其它 WS-Inspection 文件的指針。
inspection.wsil 文檔沒有必要一定要是靜態(tài)文檔;它們“可以”根據(jù)請求動態(tài)地生成。
通過提供命名一致的 WS-Inspection 文件,可以容易地修改應(yīng)用程序,來探察站點以獲取可用的服務(wù)。
6.2
鏈接的探察文檔
除了協(xié)助那些積極探察站點的用戶,WS-Inspection
規(guī)范還考慮到提供一種機(jī)制,這種機(jī)制通過其它內(nèi)容類型(比如 HTML
頁面)告知用戶與服務(wù)探察相關(guān)的文檔。正是這種引用探察文檔所采用的機(jī)制獨立于內(nèi)容類型,而在下面這一節(jié)中描述了 HTML 綁定。
6.2.1 在 HTML 內(nèi)鏈接到探察文檔
在 HTML 頁面中,通過使用
META 標(biāo)記(其 name 屬性值為 serviceInspection),可以鏈接到 WS-Inspection 文檔。標(biāo)記中相應(yīng)的 content
屬性必須是表示 WS-Inspection 文檔位置的有效 URI。典型的情況下,應(yīng)該在高度可見的頁面中包含該標(biāo)記,如服務(wù)器的根文檔。有可能通過在同一 HTML
頁面內(nèi)包含幾個 META 標(biāo)記引用多個 WS-Inspection 文檔。content 屬性中指定的位置上的文檔“必須”是 WS-Inspection
文檔;它不能是另一個 HTML 文檔。
下面的示例展示了有三個對 WS-Inspection 文檔引用的 HTML 代碼段:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<META name="serviceInspection"
content="localservices.wsil">
<META
name="serviceInspection" content="http://www.example.com/calculators.wsil">
<META name="serviceInspection"
content="ftp://www.anotherexample.com/translators.wsil">
</HEAD>
<BODY>
...
</BODY>
</HTML>
7.0 參考文獻(xiàn)
[1] Web 服務(wù)描述語言(Web Services
Description
Language(WSDL))1.1“http://www.w3.org/TR/2001/NOTE-wsdl-20010315”。
[2]
通用描述、發(fā)現(xiàn)和集成(Universal Description, Discovery, and
Integration(UDDI))2.0“http://www.uddi.org”。
[3] S. Bradner 的“Key words
for use in RFCs to Indicate Requirement Levels”,RFC 2119, Harvard
University,1997 年 3 月。
[4] T. Berners-Lee、R. Fielding、L. Masinter
所著的“Uniform Resource Identifiers(URI):Generic Syntax”,RFC 2396,MIT/LCS,U.C.
Irvine,Xerox Corporation,1998 年 8 月。
[5] 可擴(kuò)展標(biāo)記語言(Extensible Markup
Language(XML))1.0“http://www.w3.org/TR/2001/NOTE-wsdl-20010315”。
A 1 URI
的注釋
這一節(jié)沒有直接對該規(guī)范進(jìn)行講述,但是提供了在實現(xiàn)規(guī)范時可能有用的背景資料。
A 1.1 XML 名稱空間和模式位置
將 XML 模式的
targetNamespace 或者 XML 實例中的 xmln 屬性的值等同于相應(yīng)模式的位置,這是普遍的誤解。事實上“名稱空間”是 URI,并且 URI
可以是位置。因此您能夠根據(jù)該位置來檢索模式。但是這并不是意味著那是與名稱空間相關(guān)聯(lián)的唯一模式。可以有多個與一個特殊名稱空間相關(guān)聯(lián)的模式,并且由 XML
處理器確定在特殊的處理環(huán)境中使用哪一個模式。
A 1.2 相對 URI
貫穿該文檔,您可以看到在 WS-Inspection
文檔中使用了全限定 URI。使用全限定 URI 僅僅為了說明引用的概念。使用相對 URI 是完全允許的,并且在許多情況下得到保證。獲取關(guān)于處理相對
URI
的信息,請參閱 http://www.normos.org/ietf/rfc/rfc2396.txt。
A 2 完整的 WS-Inspection 語法
<wsil:inspection>
<wsil:abstract xml:lang=""?
... /> *
[ <wsil:service>
<wsil:abstract xml:lang=""? ... /> *
<wsil:name xml:lang=""? ... /> *
<wsil:description referencedNamespace="uri" location="uri"?>
*
<wsil:abstract xml:lang=""? ...
/> *
<-- extensibility element
--> ?
</wsil:description>
</wsil:service>
|
<wsil:link
referencedNamespace="uri" location="uri"?/>
<wsil:abstract xml:lang=""? ... /> *
<--
extensibility element --> ?
</wsil:link> ]
+
</wsil:inspection>
A3 模式
A 3.1 WS-Inspection 模式
<?xml version="1.0" encoding="UTF-8"?>
<schema
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:wsil="http://schemas.xmlsoap.org/ws/2001/10/inspection/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<complexType
name="typeOfAbstract">
<simpleContent>
<extension
base="xsd:string">
<attribute ref="xml:lang"
use="optional"/>
</extension>
</simpleContent>
</complexType>
<complexType name="itemWithAbstracts"
abstract="true">
<sequence>
<element name="abstract"
type="wsil:typeOfAbstract" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="nameType">
<simpleContent>
<extension
base="xsd:string">
<attribute ref="xml:lang"
use="optional"/>
</extension>
</simpleContent>
</complexType>
<complexType
name="referenceType">
<complexContent>
<extension
base="wsil:itemWithAbstracts">
<attribute name="referencedNamespace" type="anyURI"
use="required"/>
<attribute
name="location" type="anyURI"
use="optional"/>
</extension>
</complexContent>
</complexType>
<complexType
name="descriptionType">
<complexContent>
<extension
base="wsil:referenceType">
<sequence>
<any namespace="##other" minOccurs="0"
processContents="lax"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="linkType">
<complexContent>
<extension
base="wsil:referenceType">
<sequence>
<any namespace="##other" minOccurs="0"
processContents="lax"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType
name="serviceType">
<complexContent>
<extension
base="wsil:itemWithAbstracts">
<sequence>
<element name="name" type="wsil:nameType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="description" type="wsil:descriptionType" minOccurs="1"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="inspection">
<complexType>
<complexContent>
<extension
base="wsil:itemWithAbstracts">
<sequence minOccurs='1'
maxOccurs='unbounded'>
<choice>
<element name="service"
type="wsil:serviceType"/>
<element name="link"
type="wsil:linkType"/>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
</schema>
A 3.2 WSDL 綁定模式
<?xml version="1.0" encoding="UTF-8"?>
<schema
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/"
xmlns:wsilwsdl="http://schemas.xmlsoap.org/ws/2001/10/inspection/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<complexType
name="reference">
<sequence>
<element
name="referencedService" type="xsd:QName"
minOccurs="0"/>
<element
name="implementedBinding" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"
/>
</sequence>
<attribute name="endpointPresent" type="xsd:boolean"
use="optional"/>
</complexType>
<element name="reference" type="wsilwsdl:reference" />
</schema>
A 3.3 UDDI v1 綁定模式
<?xml version="1.0" encoding="UTF-8"?>
<schema
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/"
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddi/"
xmlns:uddi="urn:uddi-org:api"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:uddi-org:api" schemaLocation="http://www.uddi.org/schema/2001/uddi_v1.xsd"/>
<complexType
name="descriptionType">
<sequence>
<element
name="discoveryURL" type="uddi:DiscoveryUrl"
minOccurs="0"/>
</sequence>
<attribute name="location" type="anyURI" use="optional"/>
</complexType>
<!-- This element is to be used as a child of a
WS-Inspection link -->
<element
name="businessDescription">
<complexType>
<complexContent>
<extension
base="wsiluddi:descriptionType">
<sequence>
<element name="businessKey" type="xsd:string"
minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
<!-- This element is to be used as a child of a
WS-Inspection description -->
<element
name="serviceDescription">
<complexType>
<complexContent>
<extension
base="wsiluddi:descriptionType">
<sequence>
<element name="serviceKey"
type="xsd:string"/>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
</schema>
A 3.4 UDDI v2 綁定模式
<?xml version="1.0" encoding="UTF-8"?>
<schema
targetNamespace="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddiv2/"
xmlns:wsiluddi="http://schemas.xmlsoap.org/ws/2001/10/inspection/uddiv2/"
xmlns:uddi="urn:uddi-org:api_v2"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:uddi-org:api_v2" schemaLocation="http://www.uddi.org/schema/2001/uddi_v2.xsd"/>
<complexType
name="descriptionType">
<sequence>
<element
name="discoveryURL" type="uddi:discoveryURL"
minOccurs="0"/>
</sequence>
<attribute name="location" type="anyURI" use="optional"/>
</complexType>
<!-- This element is to be used as a child of a
WS-Inspection link -->
<element
name="businessDescription">
<complexType>
<complexContent>
<extension
base="wsiluddi:descriptionType">
<sequence>
<element name="businessKey" type="uddi:businessKey"
minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
<!-- This element is to be used as a child of a
WS-Inspection description -->
<element
name="serviceDescription">
<complexType>
<complexContent>
<extension
base="wsiluddi:descriptionType">
<sequence>
<element name="serviceKey"
type="uddi:serviceKey"/>
</sequence>
</extension>
</complexContent>
</complexType>
</element>
</schema>
- 1SOAP技術(shù)與B2B應(yīng)用集成--SOAP消息中的類型/值的編序方法和示例
- 2在長時間操作過程中更新顯示
- 3石家莊OA信息化新典范--深入訪談中華汽車石家莊OA信息化推動團(tuán)隊
- 4微軟在宣布.Net計劃進(jìn)入第二階段時預(yù)測——Web服務(wù)掀起下一次IT泛普
- 5中小企業(yè)如何化解經(jīng)濟(jì)危機(jī)
- 6SOAP技術(shù)與B2B應(yīng)用集成--SOAP的型系統(tǒng)和數(shù)據(jù)編碼規(guī)則
- 7關(guān)于模型的簡單介紹!
- 8BEA實現(xiàn)安全的在線交易的web服務(wù)
- 9Web服務(wù)的(革)創(chuàng)新,第1部分
- 10全球性學(xué)習(xí)型組織的十一個特征
- 11泛普OA軟件支持在線直接發(fā)送消息、傳送文件、音頻會話等
- 12鄂爾多斯投資控股集團(tuán)智能協(xié)同OA移動辦公系統(tǒng)介紹
- 13ITToolBox e-Business(by AMT整理)
- 14石家莊OA信息化的基本XML和RDF技術(shù)(三):語義知識
- 15石家莊OA信息化創(chuàng)造競爭優(yōu)勢
- 16第五項修煉簡要目錄
- 17Web服務(wù)內(nèi)幕,第4部分:介紹Web服務(wù)流語言
- 18出版社行業(yè)如何做好信息化建設(shè)的思考
- 19Licensing
- 20Web服務(wù)的(革)創(chuàng)新,第4部分
- 21泛普軟件石家莊OA信息化系統(tǒng)建設(shè)原則
- 22[原創(chuàng)]淺談KM的知識源采集和技術(shù)實現(xiàn)
- 23鼓勵創(chuàng)新的文化的十個規(guī)則
- 24比ERP更懂管理的管理系統(tǒng)
- 25Web服務(wù):構(gòu)建融合的價值網(wǎng)
- 26石家莊OA信息化——信息化的奢侈品?<br><div align=right>——夏敬華專訪&l
- 27TIBCO Web Service為OSS/BSS搭建強(qiáng)大平臺
- 28石家莊泛普OA軟件管理門戶登錄
- 29Sun拒入“WS-I” 不想跟微軟IBM玩游戲
- 30協(xié)同辦公系統(tǒng)整合了多層次的安全控制方案
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114