<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-128  評論-55  文章-5  trackbacks-0
     

    1.1     WSRF協(xié)議族

    2002-2003年提出的OGSI的概念是開放網(wǎng)格體系結(jié)構(gòu) (OGSA : Open Grid Service Architecture[34]) 的基本組件,它是一項(xiàng)基于新興的Web service標(biāo)準(zhǔn)的網(wǎng)格軟件基礎(chǔ)結(jié)構(gòu)標(biāo)準(zhǔn)化工作,用于為 OGSA 軟件組件提供最大的互操作性。其根本的出發(fā)點(diǎn)是通過將關(guān)鍵的網(wǎng)格技術(shù)與Web Services技術(shù)集成起來,形成一個分布式系統(tǒng)框架,通過一種Grid service來實(shí)現(xiàn)兩者的結(jié)合。

    為了更好的將Grid service的設(shè)想與現(xiàn)有的Web Services技術(shù)體系結(jié)構(gòu)融合起來,有必要對OGSI協(xié)議做必要的改進(jìn)。WSRF就是針對這一目標(biāo)而給出的對OGSI的重構(gòu)和發(fā)展。根據(jù)OGSI的幾點(diǎn)不足,把OGSI分成幾個相互獨(dú)立的協(xié)議,同時使用一些新的Web服務(wù)協(xié)議來對OGSI的功能進(jìn)行分解和擴(kuò)充,它的出現(xiàn)就是為了取代OGSI而成為OGSA的重要組成部分。

    WSRF是對OGSI的重構(gòu)和擴(kuò)展,它目標(biāo)在于使用新的Web服務(wù)標(biāo)準(zhǔn),特別是WS-Addressing,同時基于早期的實(shí)現(xiàn)和應(yīng)用經(jīng)驗(yàn)擴(kuò)展OGSI

    WSRF框架包含以下5個協(xié)議:

    l        WS-Resource協(xié)議:解釋WS-Resources的總體概念,并展示后續(xù)文檔中的所有概念如何成為一體。

    l        WS-ResourceProperties協(xié)議:解釋如何定義和操縱 WS-Resource

    l        WS-ResourceLifetime協(xié)議:解釋如何銷毀 WS-Resource

    l        WS-BaseFault協(xié)議:定義任何WSRF應(yīng)用程序都必須實(shí)現(xiàn)的基本故障消息,以及如何擴(kuò)展它以創(chuàng)建新的故障。

    l        WS-ServiceGroup協(xié)議:解釋如何創(chuàng)建 WS-Resources 的邏輯組,以及如何控制和操縱這些組。

     

    另外與WSRF密切相關(guān)的WS-Notification系列協(xié)議使得我們可以在Web服務(wù)的無狀態(tài)環(huán)境中模擬事件驅(qū)動的應(yīng)用程序。WSN協(xié)議族包含以下三個協(xié)議:

    l        WS-BaseNotification協(xié)議:定義了基本通知機(jī)制的角色、接口及消息交換格式。

    l        WS-BrokeredNotification協(xié)議:定義了代理通知機(jī)制的角色、接口及消息交換格式。

    l        WS-Topics協(xié)議:定義了通知主題名字空間,主題,主題表達(dá)式結(jié)構(gòu)以及主題表達(dá)式查詢語言。

    1.1.1   WS-Resource協(xié)議

    1.1.1.1    什么是WS-Resource?

    WS-Resource 是一個有狀態(tài)資源(比如數(shù)據(jù)庫或硬盤)和它與之交互的 Web 服務(wù)組合。有狀態(tài)資源是一些即使您不與之交互也存在的東西。例如數(shù)據(jù)庫,即使在您不查詢它的時候,它也存在。此外,狀態(tài)概念也包含屬性的思想。當(dāng)要求您把所借的東西以原狀態(tài)返還時,涉及某些屬性的值,比如清潔度、修理要求、油罐中的汽油量,等等。有狀態(tài)資源與此類似,具有定義其狀態(tài)的屬性,并且這些屬性就是我們將與資源交互的方式,如WS-Resource 的屬性中所示。

    那么有狀態(tài)資源(比如數(shù)據(jù)庫或硬盤)和Web 服務(wù)的組合的真正含義是什么呢?讓我們從實(shí)際的角度來看這個問題。假設(shè)我們有一個系統(tǒng),涉及到管理一組人造衛(wèi)星。每個人造衛(wèi)星是一個有狀態(tài)資源,因?yàn)榧词乖谖覀儾慌c之對話時它也存在。我們還有一個 Web 服務(wù),它提供人造衛(wèi)星功能,比如更改反向、檢索信息,或者甚至調(diào)整姿勢。

    通過將者二者組合起來,我們創(chuàng)建了一個 WS-Resource。注意,并不需要一對一的對應(yīng)關(guān)系。例如,這個Web服務(wù)可以與幾個不同的人造衛(wèi)星交互,從而創(chuàng)建幾個引用相同服務(wù)的不同WS-Resources。另一方面,一個人造衛(wèi)星可以與幾個不同的服務(wù)(比如控制宇宙實(shí)驗(yàn)的服務(wù)和發(fā)射激光束的服務(wù))交互,從而創(chuàng)建幾個引用相同有狀態(tài)資源的不同 WS-Resources

    那么我們?nèi)绾卧趹?yīng)用程序中表示這個有狀態(tài)資源呢?答案就在它的ResouceProperties中。正如有狀態(tài)資源中提到的,對象的狀態(tài)可以由它的各種屬性的值來決定。因?yàn)槲覀冋嬲信d趣的就是對象的狀態(tài),所以我們可以把有狀態(tài)資源表示為一個展示其屬性的 XML 文檔。該文檔叫做資源屬性文檔。

    在我們的人造衛(wèi)星例子中,它可能是具有以下代碼行的文檔:

    <satProp:GenericSatelliteProperties  xmlns:satProp="http://example.com/satellite">

       <satProp:latitude>30.3</satProp:latitude>

       <satProp:longitude>223.2</satProp:latitude>

       <satProp:altitude>47700</satProp:altitude>

       <satProp:pitch>49</satProp:pitch>

       <satProp:yaw>0</satProp:yaw>

       <satProp:roll>32</satProp:roll>

       <satProp:focalLength>21999992</satProp:focalLength>

       <satProp:currentView>

            http://example.com/satellite/2239992333.zip

       </satProp:currentView>

    </satProp:GenericSatelliteProperties>

    狀態(tài)的更改需要一個或多個這些屬性的更改,反之亦然。

    就像可以通過添加成員或方法來擴(kuò)展類一樣,我么可以通過添加屬性來擴(kuò)展 WS-Resource。例如,考慮這樣一種情形,我們具有一個人造衛(wèi)星,它也充當(dāng)恒星計數(shù)器。除了有狀態(tài)資源的一般屬性之外,我們可能還有一個 currentCount 屬性:

    <satProp:GenericSatelliteProperties

           xmlns:satProp="http://example.com/satellite"

           xmlns:counterProp="http://example.com/satellite/CounterSatelliteProperties">

       <satProp:latitude>30.3</satProp:latitude>

       <satProp:longitude>223.2</satProp:latitude>

       <satProp:altitude>47700</satProp:altitude>

       <satProp:pitch>49</satProp:pitch>

       <satProp:yaw>0</satProp:yaw>

       <satProp:roll>32</satProp:roll>

       <satProp:focalLength>21999992</satProp:focalLength>

       <satProp:currentView>

            http://example.com/satellite/2239992333.zip

       </satProp:currentView>

       <counterProp:currentCount>92828</counterProp:currentCount>

    </satProp:GenericSatelliteProperties>

    注意新信息是在一個獨(dú)立的名稱空間中。

    至此,我們已經(jīng)創(chuàng)建了有狀態(tài)資源(人造衛(wèi)星)的表示,但是要真正地創(chuàng)建 WS-Resource,我們還必須使用 WSDL 文件將它綁定到服務(wù)。

    首先,我們將實(shí)際的有狀態(tài)資源添加到文件,并將之與 Web 服務(wù)關(guān)聯(lián):

    <?xml version="1.0" encoding="UTF-8"?>

    <definitions name="Satellite"

        targetNamespace="http://example.com/satellite"

        xmlns="http://schemas.xmlsoap.org/wsdl/"

        xmlns:tns="http://example.com/satellite"

        xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing"

        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

        xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"

        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

     

            <wsdl:import namespace="http://docs.oasis-open.org/wsrf/2004/06/wsrf-

    WS-ResourceProperties-1.2-draft-01.wsdl"

              location="WS-ResourceProperties.wsdl" />

          <types>

          <xsd:schema targetNamespace="http://example.com/satellite"

              xmlns:xsd="http://www.w3.org/2001/XMLSchema">

              <xsd:import namespace= "http://schemas.xmlsoap.org/ws/2004/03/addressing"

                      schemaLocation="WS-Addressing.xsd" />

              <xsd:element name="latitude" type="xsd:float" />

              <xsd:element name="longitude" type="xsd:float" />

              <xsd:element name="altitude" type="xsd:float" />

              <xsd:element name="pitch" type="xsd:float" />

              <xsd:element name="yaw" type="xsd:float" />

              <xsd:element name="roll" type="xsd:float" />

              <xsd:element name="focalLength" type="xsd:float" />

              <xsd:element name="currentView" type="xsd:string" />

               

              <xsd:element name="GenericSatelliteProperties">

                <xsd:complexType>

                   <xsd:sequence>

                     <xsd:element ref="latitude" minOccurs="1"  maxOccurs="1"/>

                     <xsd:element ref="longitude" minOccurs="1"  maxOccurs="1"/>

                     <xsd:element ref="altitude" minOccurs="1"  maxOccurs="1"/>

                     <xsd:element ref="pitch" minOccurs="1" maxOccurs="1"/>

                     <xsd:element ref="yaw" minOccurs="1" maxOccurs="1"/>

                     <xsd:element ref="roll" minOccurs="1"  maxOccurs="1"/>

                     <xsd:element ref="focalLength" minOccurs="1" maxOccurs="1"/>

                     <xsd:element ref="currentView" minOccurs="1" maxOccurs="1"/>

                   </xsd:sequence>

                </xsd:complexType>

              </xsd:element>             

               

          </xsd:schema>

           

        </types>

     

        <portType name="SatellitePortType"

                wsrp:ResourceProperties="tns:GenericSatelliteProperties">

        </portType>

       

        <binding name="SatelliteSoapBinding" type="tns:SatellitePortType">

          <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

        </binding>

       

        <service name="SatelliteService">

            <port name="SatellitePort"  binding="tns:SatelliteSoapBinding">

                <soap:address location="http://example.com/satellite"/>

            </port>

        </service>

    </definitions>

    我們首先是添加 Web 服務(wù)的基礎(chǔ)、實(shí)際的 service 元素和將之與 portType 關(guān)聯(lián)的 bindingportType 本身還沒有任何操作,但是重要的部分是 wsrp:ResourceProperties 屬性。該屬性指定,Web 服務(wù)執(zhí)行的任何操作都是在一個特定類型的有狀態(tài)資源上執(zhí)行的,如 GenericSatelliteProperties 元素所定義的。GenericSatelliteProperties 元素定義在 schema 中。該有狀態(tài)資源和該 Web 服務(wù)的組合就是WS-Resource

    注意,協(xié)議中指出,在創(chuàng)建資源屬性文檔(比如本例中的 GenericSatelliteProperties)時,必須使用這里展示的樣式,即初始元素是定義和引用的,而不是內(nèi)聯(lián)地定義的。

     

    1.1.1.2    隱式資源模式

    為了使得有狀態(tài)的資源可以被Web服務(wù)的客戶端引用,從而引入了隱含資源模式,用來描述一個Web服務(wù)和一個或多個有狀態(tài)的資源之間的關(guān)系。

    術(shù)語“隱含”的使用是因?yàn)榕c一個給定的消息交換相關(guān)聯(lián)的有狀態(tài)的資源被當(dāng)作是執(zhí)行請求消息的隱含上下文。通過隱含,我們說請求者不需要把資源的標(biāo)示在請求消息體內(nèi)當(dāng)作顯式的參數(shù)來提供。取而代之,用來指定隱含的有狀態(tài)資源的上下文被封裝在WS-Addresin端點(diǎn)引用里,這個引用可以用來尋找目的Web服務(wù)的地址。

    術(shù)語“模式”的使用是為了指明:Web服務(wù)和有狀態(tài)資源的之間的關(guān)系已經(jīng)被編成“法典”。這是通過一些現(xiàn)存的Web服務(wù)技術(shù)完成的,比如XMLWSDLWS-Addressing等。

    也有其他的模式可以訪問有狀態(tài)的資源。比如,一個Web服務(wù)能夠保持資源的標(biāo)識符當(dāng)作一個靜態(tài)的服務(wù)狀態(tài),因此避免了在端點(diǎn)引用里傳遞資源標(biāo)識符。然而不建議使用這種模式,因?yàn)樗馕吨?/span>Web服務(wù)和有狀態(tài)資源的一個一對一的映射(就是說這個Web服務(wù)和幾個有狀態(tài)資源綁定了。別人用這個Web服務(wù)時,同時就會用到這幾個資源)。取而代之,我們在WS-Resource和它的相應(yīng)的Web服務(wù)之間保持一定的距離,為了把Web服務(wù)和有狀態(tài)資源嚴(yán)格分開,于是就允許Web服務(wù)端點(diǎn)和有狀態(tài)資源的一個一對多的映射。

     

    1.1.1.3    WS-Addressing

    以前,很容易指定 Web 服務(wù)的地址。所有真正需要的就是 URL,所有其他信息都包含在 SoapAction頭部或消息本身中。現(xiàn)在,Web服務(wù)應(yīng)用程序變得越來越復(fù)雜,并不總是那么簡單。倘若想要讓應(yīng)答發(fā)送到除最初的請求者之外的其他地方,或者需要其他信息(比如會話標(biāo)識符)來定義實(shí)際的位置,那該怎么辦?或者只是需要附加到 Web 服務(wù)的一個特定實(shí)例,那該怎么辦?我們在 WS-Resources 的情況中將會遇到這個問題,所以我們需要一種處理它的方式。

    WS-Addressing提供一種方式來指定關(guān)于位置的信息,而不只是一個統(tǒng)一資源標(biāo)識符(Universal Resource IdentifierURI)或 URL

    實(shí)際上,在我們的例子中,它提供一種標(biāo)準(zhǔn)的方式,將大量的信息添加到 SOAP 消息。我們來構(gòu)造一個 SOAP 消息,比如:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

    xmlns:wsa="http://www.w3.org/2005/02/addressing"

    xmlns:sat="http://example.org/satelliteSystem">

        <SOAP-ENV:Header>

          <wsa:To SOAP-ENV:mustUnderstand="1">http://example.com/satellite</wsa:To>

          <wsa:Action>http://example.com/SetAltitude</wsa:Action>

          <sat:SatelliteId>SAT9928</sat:SatelliteId>

        </SOAP-ENV:Header>

        <SOAP-ENV:Body>

            <SetAltitudeRequest xmlns="http://example.com/satellite.xsd">

                <altitude>47700</altitude>

            </SetAltitudeRequest>

        </SOAP-ENV:Body>

    </SOAP-ENV:Envelope>

    在實(shí)際的SOAP消息中具有該信息似乎并不重要,但是請記住,消息可能會傳輸通過多個系統(tǒng),甚至需要多次傳輸才能到達(dá)最終目的地。

    要指定該信息,我們需要創(chuàng)建一個 EndpointReferenceEndpointReference 是一種方式,用于指定讓消息到達(dá)適當(dāng)?shù)奈恢貌в羞m當(dāng)?shù)南嚓P(guān)信息。

    WS-Addressing標(biāo)準(zhǔn)化了端點(diǎn)引用結(jié)構(gòu),后者用來描繪配置在給定網(wǎng)絡(luò)端點(diǎn)的一個Web服務(wù)的地址。除了Web服務(wù)的端點(diǎn)地址以外,一個端點(diǎn)引用可能還包括:其他的與Web服務(wù)相關(guān)的元數(shù)據(jù),比如服務(wù)描述信息和引用屬性,這些可以幫助更深的限制Web服務(wù)地址的使用。端點(diǎn)引用里的引用屬性在隱含資源模式里扮演很重要的角色。

    一個服從隱含資源模式的端點(diǎn)引用可能包含引用屬性子元素,用來標(biāo)示使用這個端點(diǎn)引用完成的所有消息交換的執(zhí)行時所要用到的有狀態(tài)的資源。這類端點(diǎn)引用稱為具有WS-Resource資格的端點(diǎn)引用。被一個具有WS-Resource資格的端點(diǎn)引用指定的一個指向Web服務(wù)的請求消息,必須包含這個端點(diǎn)引用的引用屬性信息。

    因此,WSRF使用具有WS-Resource資格的端點(diǎn)引用來扮演一個指向WS-Resource的網(wǎng)絡(luò)范圍內(nèi)指針。具有WS-Resource資格的端點(diǎn)引用可能被當(dāng)作成為一個結(jié)果返回,比如:一個Web服務(wù)消息請求一個工廠創(chuàng)建一個新的WS-Resource,或者作為一些特定應(yīng)用的Web服務(wù)請求的結(jié)果。

    端點(diǎn)引用包含兩個重要的組成:(1)wsa:Address:指出了Web服務(wù)的地址,比如是一個URL,它和該Web服務(wù)的WSDL描述的端口元素里的地址是一樣的;(2) wsa:ReferenceProperties:包含WS-Resource的標(biāo)示,WS-Resource標(biāo)示表現(xiàn)了在消息交換執(zhí)行時所要用到的WS-Resource。在端點(diǎn)引用里用來保存這些WS-Resource標(biāo)示的引用屬性稱為WS-Resource上下文。一個端點(diǎn)引用包含了WS-Resource上下文,那么它就是一個具有WS-Resource資格的端點(diǎn)引用。

    表現(xiàn)的WS-Resource上下文信息對服務(wù)請求者來說是透明的。服務(wù)請求應(yīng)用軟件不會檢測或者嘗試解釋上下文的內(nèi)容。WS-Resource上下文僅僅對Web服務(wù)有意義,根據(jù)這個上下文,Web服務(wù)通過一個特殊的實(shí)現(xiàn)方法去識別在消息交換時需要用到的WS-Resource

    從服務(wù)請求者的角度來看,端點(diǎn)引用代表了一個指向Web服務(wù)的指針,而這個Web服務(wù)被進(jìn)一步限制在端點(diǎn)引用的WS-Resource上下文里執(zhí)行它的消息交換。

    例如,我們在前一屏中指定的消息的 EndpointReference 應(yīng)該是:

    <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/02/addressing"

    xmlns:sat="http://example.org/satelliteSystem">

        <wsa:Address>http://example.com/satellite</wsa:Address>

        <wsa:ReferenceProperties>

             <sat:SatelliteId>SAT9928</sat:SatelliteId>

        </wsa:ReferenceProperties>

    </wsa:EndpointReference>

    理解 EndpointReferenceSOAP消息之間的關(guān)系很重要,因?yàn)?/span> EndpointReference 就是我們指定特定 WS-Resource 的位置的方式。例如,當(dāng)我們請求創(chuàng)建新的WS-Resource時,響應(yīng)將包含一個指向它的EndpointReference

    1.1.1.4    WS-R協(xié)議簡介

    WS-Resource協(xié)議解釋WS-Resources 的總體概念,在WS-Resource協(xié)議中對資源的定義如下:

    一個資源是一個具有如下特征的邏輯實(shí)體:

    l        它必須是可鑒別的

    l        它必須擁有零個或多個屬性,以XML形式來表示

    l        它可以具有生命周期

    WS-Resource的定義如下:

    一個WS-Resource是一個資源和一個Web服務(wù)的組合,通過Web服務(wù)資源可以被訪問。WS-Resource可以進(jìn)一步定義如下:

    l        通過一個Endpoint Reference來表示對一個WS-Resource的引用,或者正好是一個XML元素,其類型是(或派生自)EndpointReferenceType。這樣的EPRs必須正好是對一個WS-Resource的引用。

    l        資源屬性的集合必須通過XML schema 中所描述的XML infoset 來表示。WS-Resource 必須支持通過在WS-Resource Properties協(xié)議中定義的消息交換形式來對資源進(jìn)行訪問。

    l        一個WS-Resource可能支持在WS-Resource Lifetime協(xié)議中定義的消息交換類型

    對于一個給定的WS-Resource可能會有多個引用,判斷兩個引用是否等同的方法是實(shí)現(xiàn)協(xié)議,在本協(xié)議中沒有定義

    另外在WS-Resource協(xié)議還定義了兩個錯誤:

    A WS-Resource may respond to any message with the following fault message:

    l        wsrf-rw:ResourceUnknownFault

    The resource identified in the message is not known to the Web service. The fault may contain additional resource- or application-specific information in it.

    l        wsrf-rw:ResourceUnavailableFault

    The resource identified in the message is unavailable. This fault SHOULD indicate a transient condition. A requester might respond to this fault by resending the message.

    此錯誤應(yīng)該是指示了一個短暫的狀態(tài)。一個請求者對于此錯誤的響應(yīng)應(yīng)該是重新發(fā)送消息



    Author: orangelizq
    email: orangelizq@163.com

    歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人
    posted on 2009-07-19 15:40 桔子汁 閱讀(1392) 評論(1)  編輯  收藏 所屬分類: Web Service

    評論:
    # re: WSRF研究-WS-Resource協(xié)議[未登錄] 2009-10-22 10:45 | roger
    這篇文章 出自于IBM 的網(wǎng)格教程系列
    經(jīng)過被您改良 也受益非淺
    WS-RESOURCE最重要的組成部分是WSDL中的定義
    WS-ADDRESS對于SOAP的定義 對于此而言 不是重點(diǎn)
      回復(fù)  更多評論
      
    主站蜘蛛池模板: 日韩版码免费福利视频| 精品韩国亚洲av无码不卡区| 亚洲av日韩av不卡在线观看| 亚洲另类少妇17p| 亚洲v国产v天堂a无码久久| 亚洲Av无码国产情品久久| 亚洲精品国产高清嫩草影院| 国产成人精品亚洲精品| 亚洲精品午夜无码专区| 亚洲精品成人无限看| 亚洲av色影在线| 97久久精品亚洲中文字幕无码| 久久久久亚洲精品日久生情| 亚洲成人福利网站| 亚洲综合av一区二区三区| 亚洲国产精品无码观看久久| 免费大片av手机看片高清| 大妹子影视剧在线观看全集免费| 免费av一区二区三区| 国产1000部成人免费视频| 夜夜爽免费888视频| 成人亚洲综合天堂| 亚洲日本乱码在线观看| 77777_亚洲午夜久久多人| 亚洲性线免费观看视频成熟| 香蕉视频亚洲一级| 99久久精品毛片免费播放| 1000部禁片黄的免费看| 免费无码一区二区三区蜜桃大| 大胆亚洲人体视频| 亚洲成AV人在线观看天堂无码| 中文字幕亚洲免费无线观看日本| 亚洲熟女综合一区二区三区| 免费VA在线观看无码| 亚洲成人免费在线| 成人无遮挡毛片免费看| 久久精品国产亚洲一区二区三区| 亚洲人成电影福利在线播放| 亚洲欧美乱色情图片| 一级成人a做片免费| 免费无码VA一区二区三区 |