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

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

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

    posts - 495,comments - 227,trackbacks - 0

    什么是 Web 服務(wù)?

    首先,讓我們從總體上了解一下什么是 Web 服務(wù),以及它們?yōu)楹螌浖_發(fā)重要。

    究竟為什么重要呢?

    如果您沒有聽說過有關(guān)面向服務(wù)的體系結(jié)構(gòu) (SOA) 和 Web 服務(wù)的大量信息,您就不會(huì)閱讀本文,那么問題就應(yīng)該是,為什么此內(nèi)容這樣重要?答案是,此內(nèi)容之所以重要,是因?yàn)檫@是應(yīng)用程序彼此進(jìn)行通信的方式的典型變化。SOAs 已經(jīng)存在很長很長時(shí)間了。SOA 最初主要由中間件應(yīng)用程序組成,至少進(jìn)行連接的兩端都屬于同一種類型的中間件。另一方面,Web 服務(wù)由一組標(biāo)準(zhǔn)組成,用于在不需要特定類型的中間件、編程語言甚至操作系統(tǒng)的前提下讓各種不同的系統(tǒng)進(jìn)行通信。接下來,讓我們了解一下其發(fā)展的歷程。





    回頁首


    傳統(tǒng)應(yīng)用程序

    首先從計(jì)算機(jī)發(fā)明開始,當(dāng)時(shí)給人感覺非常不錯(cuò)。計(jì)算機(jī)能執(zhí)行奇跡般的任務(wù),可實(shí)現(xiàn)很多手動(dòng)工作的自動(dòng)化,包括復(fù)雜的計(jì)算、財(cái)務(wù)工作等等很多其他任務(wù)。

    但傳統(tǒng)應(yīng)用程序是“豎井”(Silo) 型的。人力資源應(yīng)用程序無法與財(cái)務(wù)應(yīng)用程序真正通信,而后者又無法和分布應(yīng)用程序進(jìn)行真正的通信。所有這些應(yīng)用程序都有獨(dú)立的領(lǐng)域,在獨(dú)立的計(jì)算機(jī)上運(yùn)行,盡管很有用,但并不能很好地在彼此間共享數(shù)據(jù)。當(dāng)時(shí)可以選擇對批處理流程進(jìn)行連接,以將數(shù)據(jù)從一個(gè)系統(tǒng)移動(dòng)到另一個(gè)系統(tǒng),但這并不適合進(jìn)行實(shí)時(shí)集成。





    回頁首


    分布式計(jì)算

    在我們的進(jìn)化鏈中的第二步是分布式計(jì)算。分布式計(jì)算允許不同的應(yīng)用程序彼此進(jìn)行通信(即使位于不同的計(jì)算機(jī)上也是如此)。CORBA、MTS 和 Enterprise Java Bean (EJB) 等技術(shù)提供了包含各種類別的注冊中心的系統(tǒng),因此應(yīng)用程序可以找到其希望與之進(jìn)行交互的組件,然后像調(diào)用本地的組件一樣調(diào)用這些組件。

    這些系統(tǒng)由可同時(shí)滿足這兩個(gè)要求的中間件(或更具體一些,面向消息的中間件)提供支持?,F(xiàn)在能以特定的方式構(gòu)建應(yīng)用程序,即使位于不同的地理位置,也能訪問其他系統(tǒng)上的資源。

    但仍然有一個(gè)問題。雖然系統(tǒng)可以自由地與系統(tǒng)內(nèi)的任何對象進(jìn)行通信,但仍然是一個(gè)封閉的系統(tǒng)。至少,客戶機(jī)應(yīng)用程序必須與服務(wù)器應(yīng)用程序使用相同的技術(shù)。另外,通常并不會(huì)將系統(tǒng)設(shè)計(jì)為從創(chuàng)建其的個(gè)體組織外進(jìn)行訪問。





    回頁首


    Web 服務(wù)

    此進(jìn)化鏈中下一個(gè)幾乎不可避免的鏈接點(diǎn)就是 Web 服務(wù)?!癢eb 服務(wù)”基于 XML 和 HTTP(大多數(shù)情況下),對很多人具有不同的含義,但在此處,我們要將 Web 服務(wù)作為系統(tǒng)間基于 SOAP 的消息交換進(jìn)行討論。

    這些消息由 XML 組成(XML 是一個(gè)基于文本的開放標(biāo)準(zhǔn)),可由來自任何應(yīng)用程序(任何設(shè)計(jì)為接收此類消息的應(yīng)用程序)的任何人進(jìn)行訪問。這就擴(kuò)展了應(yīng)用程序的范圍,從而包含任何可通過網(wǎng)絡(luò)對其進(jìn)行訪問的任何人。(如果這讓您開始考慮安全問題,不要緊,您將在本系列的第 4 部分了解如何處理這方面的問題。)

    基于 SOAP 的 Web 服務(wù)將要發(fā)送與清單 1 中所示類似的 XML 消息。


    清單 1. 基于 SOAP 的 Web 服務(wù)
                        
    <SOAPenv:Envelope 
           xmlns:SOAPenv="http://schemas.xmlSOAP.org/SOAP/envelope/" 
           xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <SOAPenv:Body>
      <req:getNumberOfArticles xmlns:req="http://daily-moon.com/CMS/">
         <req:category>classifieds</req:category>
      </req:getNumberOfArticles>
     </SOAPenv:Body>
    </SOAPenv:Envelope>
    

    這些消息將從一個(gè)系統(tǒng)進(jìn)入另一個(gè)系統(tǒng)(通常通過 HTTP)。接收系統(tǒng)對消息進(jìn)行解釋,進(jìn)行應(yīng)該進(jìn)行從處理,然后發(fā)送另一個(gè) SOAP 消息作為響應(yīng)。

    這個(gè)系統(tǒng)很簡單,正因?yàn)槿绱?,有很多企業(yè)級計(jì)算方面的內(nèi)容都尚未涉及。幸運(yùn)的是,其中的很多方面已被納入考慮范疇,且具有自己的相關(guān)規(guī)范來確定此事務(wù)應(yīng)如何進(jìn)行,以包含傳統(tǒng)的面向消息的中間件的很多安全和其他方面的內(nèi)容。





    回頁首


    其他類型的 Web 服務(wù)

    如果我沒有說明 SOAP 并不是唯一的處理 Web 服務(wù)的方法,那就有些失職了。有很多其他基于 XML 的方法用于在系統(tǒng)間發(fā)送信息,其中一些適用于企業(yè)環(huán)境,而另一些則不適合此用途。例如,Amazon 是為公眾提供對其系統(tǒng)的 Web 服務(wù)訪問的第一批基于 Web 服務(wù)的公司之一。Amazon 包含了一個(gè)基于 SOAP 的服務(wù),但也提供了一個(gè)基于 Representational State Transfer (REST) 的服務(wù)。

    REST 是一種 Web 服務(wù)類型,其中,用戶直接訪問 URL,相應(yīng)的響應(yīng)是與清單 2 中所示類似的簡單 XML 文檔。


    清單 2. REST 響應(yīng)
                        
    <currentArticles>
       <category>classifieds</category>
       <subcategory>forsale</subcategory>
       <article id="888204">
           <articleHeadline></articleHeadline>
           <articleText>30 ft ladder, only used once.  Willing to let
    go for half it's worth. Has slight dent near the middle.  
    Harder than a human head. $150 OBO.</articleText>
        </article>
       <article id="888242">
           <articleHeadline></articleHeadline>
           <articleText>Vintage 1963 T-Bird.  Less than 300 miles.  
    Driven by my daughter until I took it away.  Serious inquires only.
    555-3264 after 7 PM.</articleText>
        </article>
    </currentArticles>
    

    這些消息并沒有特定的格式。可以為任何數(shù)據(jù)。

    另一種 Web 服務(wù)類型要使用 XML-RPC 之類的標(biāo)準(zhǔn)。在這種情況下,命令將通過與清單 3 中所示類似的 XML 發(fā)送到系統(tǒng)。


    清單 3. XML-RPC
                        
    <?xml version="1.0"?>
    <methodCall>
       <methodName>CMS.getNumberOfArticles</methodName>
       <params>
          <param>
             <value><string>classifieds</string></value>
          </param>
          <param>
             <value><string>forsale</string></value>
          </param>
       </params>
    </methodCall>
    

    其響應(yīng)將采用類似的格式。

    在學(xué)習(xí)使用 SOAP 的過程中,您可以會(huì)打心底里認(rèn)為 REST 和 XML-RPC 比基于 SOAP 的系統(tǒng)要簡單得多。的確如此。在某些情況下 REST 和 XML-RPC 比 SOAP 系統(tǒng)簡單。不過,我們討論的不是在網(wǎng)站上顯示天氣的簡單應(yīng)用程序。我們此處討論的是企業(yè)級應(yīng)用程序,而企業(yè)級的應(yīng)用程序需要企業(yè)級的屬性,如安全、互操作性等等。這些功能在有關(guān)基于 SOAP 的 Web 服務(wù)的其他規(guī)范中進(jìn)行了定義,因而,從長期來看,SOAP 更適合用于企業(yè)級應(yīng)用程序。

    讓我們了解一下這些規(guī)范。





    回頁首


    基本 Web 服務(wù)規(guī)范

    Web 服務(wù)規(guī)范通常歸為兩類:基本 Web 服務(wù)規(guī)范和擴(kuò)展 Web 服務(wù)規(guī)范。基本規(guī)范有:

    • SOAP:SOAP 規(guī)范是所有基于 SOAP 的 Web 服務(wù)的基礎(chǔ),詳細(xì)說明了實(shí)際消息的格式。其中還詳細(xì)說明了應(yīng)用程序應(yīng)如何對待消息的特定方面(如“Header”中的元素),從而可以創(chuàng)建特定類型的應(yīng)用程序,使其中的消息在達(dá)到最終的目的地前在多個(gè)中間層之間進(jìn)行傳遞。本教程將涵蓋 SOAP 規(guī)范的內(nèi)容。
    • WDSL:Web 服務(wù)描述語言是詳細(xì)說明描述基于 SOAP 的 Web 服務(wù)的標(biāo)準(zhǔn)方式的規(guī)范,包括消息應(yīng)采用的形式以及應(yīng)將其發(fā)送到何處。其中還詳細(xì)說明了此類消息的響應(yīng)。當(dāng)與相應(yīng)的工具結(jié)合使用時(shí),WSDL 允許以編程方式創(chuàng)建對 Web 服務(wù)的調(diào)用,甚至不用知道所查找的 Web 服務(wù)是什么;應(yīng)用程序可以從 WSDL 文件中提取這些詳細(xì)信息,并提供要使用的編程接口。我們將在本系列的第 2 部分討論 WSDL。
    • UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成 (Universal Description, Discovery and Integration) 是一項(xiàng)從最初提出后發(fā)生了一系列變化的標(biāo)準(zhǔn)。其最初的目的是為了給各個(gè)公司提供在全球注冊中心中注冊服務(wù)并在此注冊中心中搜索可能想使用的服務(wù)的機(jī)制。不過,由于很多公司對于將其系統(tǒng)對外開放的問題上都相當(dāng)保守,這個(gè)目標(biāo)并沒有完全實(shí)現(xiàn)。但是,很多公司已將 UDDI 作為內(nèi)部的服務(wù)及服務(wù)信息注冊中心使用,本系列第 3 部分將對其使用進(jìn)行詳細(xì)論述。

    以上是一些基礎(chǔ)知識。另外差不多還有數(shù)十種擴(kuò)展標(biāo)準(zhǔn),可進(jìn)一步擴(kuò)展基于 SOAP 的服務(wù)的用途。





    回頁首


    擴(kuò)展 Web 服務(wù)規(guī)范

    總共有數(shù)十種 WS-* 規(guī)范,其中幾種對企業(yè)尤為有用。即:

    • WS-Security:此規(guī)范處理加密和數(shù)字簽名,允許創(chuàng)建特定類型的應(yīng)用程序,以防止竊聽消息,且能實(shí)現(xiàn)不可否認(rèn)功能。本系列的第 4 部分將討論 WS-Security。
    • WS-Policy:此規(guī)范對 WS-Security 進(jìn)行了擴(kuò)展,允許更具體地說明誰可以采用何種方式使用服務(wù)。本系列的第 5 部分將討論 WS-Policy。
    • WS-I:盡管 Web 服務(wù)應(yīng)設(shè)計(jì)成具有互操作性,但在實(shí)際中,各個(gè)規(guī)范對不同實(shí)現(xiàn)的解釋的靈活性常常足以導(dǎo)致出現(xiàn)問題。WS-I 提供了一組可用于防止出現(xiàn)各種問題的標(biāo)準(zhǔn)和實(shí)踐,并提供了標(biāo)準(zhǔn)化測試來檢查問題。WS-I 是本系列的第 6 部分將要討論的主題。
    • WS-BPEL:單個(gè)服務(wù)很好處理,但應(yīng)用程序在大多數(shù)情況下則較難處理。企業(yè)級計(jì)算要求至少將多個(gè)服務(wù)組合為一個(gè)完整的系統(tǒng),而 WS-BPEL 提供了用于指定創(chuàng)建此類系統(tǒng)所必需的交互(如分支和并發(fā)處理)。本系列的第 7 部分將討論 WS-BPEL。

    在 Web 服務(wù)中扮演重要角色的其他規(guī)范將不在本系列中討論,其中包括 WS-ReliableMessaging(允許確定檢索一個(gè)且僅一個(gè)消息副本)、Web 服務(wù)資源框架 (WSRF)(允許使用在無狀態(tài)環(huán)境中非常重要的狀態(tài))和 Web 服務(wù)分布式管理 (WSDM)(討論 Web 服務(wù)的管理和使用問題)??梢栽诒窘坛痰?a >參考資料中獲得有關(guān)這些規(guī)范及其他規(guī)范的更多信息。





    回頁首


    將要完成的工作

    在本教程中,您將了解 Daily Moon 報(bào)社的 Classifieds Department 如何將其自己的系統(tǒng)與內(nèi)容管理系統(tǒng)使用的基于 Web 服務(wù)的接口進(jìn)行集成。將創(chuàng)建一個(gè)應(yīng)用程序,以創(chuàng)建基于 SOAP 的消息,將其發(fā)送到服務(wù),然后檢索響應(yīng)。完成了此工作后,您將了解如何創(chuàng)建服務(wù)來響應(yīng)請求并發(fā)送自己的響應(yīng)。將通過創(chuàng)建 Java 應(yīng)用程序(使用或不使用應(yīng)用服務(wù)器)來完成此工作。





    回頁首




    設(shè)置

    現(xiàn)在已經(jīng)了解了所涉及的基本原理,接下來讓我們看看如何實(shí)際創(chuàng)建應(yīng)用程序。首先要使所需軟件就緒。

    設(shè)置 Apache Geronimo

    將需要的第一個(gè)軟件是 Web 應(yīng)用服務(wù)器。為什么需要 Web 應(yīng)用服務(wù)器呢?因?yàn)槟鷷?huì)發(fā)現(xiàn),沒有 Web 應(yīng)用服務(wù)器很難提供 Web 服務(wù)。Web 應(yīng)用服務(wù)器將偵聽請求,將這些請求轉(zhuǎn)換為實(shí)際服務(wù)可以理解的內(nèi)容,然后進(jìn)行任何必要的處理。

    此過程中幾乎可以使用任何 Web 服務(wù)器,但在大多數(shù)情況下都將使用能簡化此過程的軟件(通常要求使用某種類型的實(shí)際應(yīng)用服務(wù)器)。具體來說,本教程假定您將使用 Java 應(yīng)用服務(wù)器。(實(shí)際上,將使用 J2EE 應(yīng)用服務(wù)器。)

    對于 J2EE 服務(wù)器,有很多選擇;在本例中將使用 Apache Geronimo。Geronimo 是作為 IBM WebSphere Application Server Community Edition 基礎(chǔ)的開放源代碼應(yīng)用服務(wù)器。Geronimo 很小,非常易于安裝和管理。它還能與其他 Apache 項(xiàng)目(如稍后將安裝的 Axis2)一起良好地工作。

    請下載相關(guān)軟件(請參閱先決條件)并將文件提取到目標(biāo)目錄中。您會(huì)發(fā)現(xiàn)所提取的文件中包含自身的目錄,因此可以直接對其進(jìn)行解包,并可將其移動(dòng)到任何位置。任何目錄都是可接受的,但要避免名稱中包含空格的目錄,如“Program Files”、“Documents and Settings”或其子目錄。例如,本教程的測試安裝使用的是 e:\geronimo-1.0。

    就是這里。已經(jīng)在其中安裝了 Geronimo。這不是很簡單么?

    要啟動(dòng)此服務(wù)器,請打開命令提示符窗口,并執(zhí)行以下命令:

    cd <GERONIMO_HOME>
    java -jar server.jar

    要確保服務(wù)器正在運(yùn)行,請打開瀏覽器,并指向清單 4 中所示的 URL:


    清單 4. 服務(wù)器 URL
                        
    http://localhost:8080  
    

    應(yīng)該看到與圖 1 中所示類似的頁面。


    圖 1. 服務(wù)器正在運(yùn)行
    服務(wù)器正在運(yùn)行

    現(xiàn)在讓我們開始安裝 Web 服務(wù)軟件。





    回頁首


    安裝 Apache Axis2

    完全可能從普通 HTTP 服務(wù)器提供 Web 服務(wù)。不過,這樣并不明智。處理 SOAP 消息需要進(jìn)行很多工作,但沒有必要完全從頭進(jìn)行所有工作。Apache Axis 項(xiàng)目幾年前就對此任務(wù)進(jìn)行了簡化,創(chuàng)建了可方便地創(chuàng)建和處理 Web 服務(wù)的環(huán)境。該軟件包含了多個(gè)應(yīng)用程序,可幫助從普通項(xiàng)目創(chuàng)建 Web 服務(wù),從 Web 服務(wù)創(chuàng)建 Java 對象,并對二者進(jìn)行處理。Apache 小組已推出了 Axis 的新版本 Axis2,該版本繼承了 Axis 上的所有已有功能,并通過更改體系結(jié)構(gòu)實(shí)現(xiàn)了更大的靈活性,從而將其推向了一個(gè)新的高度。這很重要,因?yàn)?Web 服務(wù)規(guī)范隨時(shí)都在增加。Axis2 的構(gòu)造允許它更方便與 WSS4J、Apache 的 WS-Security 實(shí)現(xiàn)等項(xiàng)目集成。由于我們將在以后使用這些項(xiàng)目,因此請現(xiàn)在安裝 Axis2(有關(guān)下載信息,請參閱先決條件)。

    請確保同時(shí)下載 Binary Distribution 和 War Distribution。前者將幫助構(gòu)建客戶機(jī),而后者用于幫助構(gòu)建服務(wù)。

    要將 Axis2 安裝到 Web 服務(wù)器中,請將 axis2.war 文件復(fù)制到 Geronimo 的 deploy 目錄。(您將需要確保已經(jīng)至少啟動(dòng)過 Geronimo 一次,才能保證存在此目錄。)Geronimo 將自動(dòng)檢測其是否存在,因此不必手動(dòng)部署任何內(nèi)容。





    回頁首


    驗(yàn)證 Axis 的安裝

    要確保已經(jīng)恰當(dāng)安裝了所有內(nèi)容,請將瀏覽器指向 http://localhost:8080/axis2/index.jsp 并單擊 Validate。

    應(yīng)該看到與圖 2 中所示類似的頁面。


    圖 2. Axis 安裝成功
    Axis 安裝成功

    在繼續(xù)本教程的其他內(nèi)容前,請確保成功安裝了 Axis。





    回頁首


    安裝示例服務(wù)

    將要編寫的第一個(gè)應(yīng)用程序是客戶機(jī),因此將需要其可訪問的服務(wù)。幸運(yùn)的是,Axis2 分發(fā)版提供了若干此類服務(wù)。首先,將按照以下所示安裝 MyService 服務(wù):

    1. 通過將瀏覽器指向 http://localhost:8080/axis2/Login.jsp 并登錄,從而通過身份驗(yàn)證。缺省用戶名和密碼分別為 adminAxis2。
    2. 單擊 Upload service>Browse。
    3. 導(dǎo)航到 MyService.aar 文件??梢栽跇?biāo)準(zhǔn) Axis2 分發(fā)版的 samples\userguide 目錄下找到該文件。單擊 OK。
    4. 單擊 Upload

    應(yīng)該看到一個(gè)通知,指示服務(wù)已添加(請參閱圖 3)。在缺省情況下,Axis2 包含“熱部署”功能,因此不必進(jìn)行任何操作來激活。


    如 3. MyService.aar 已上載
    MyService.aar 上載

    現(xiàn)在,讓我們了解一下將要構(gòu)建的內(nèi)容。





    回頁首


    posted on 2006-12-29 18:25 SIMONE 閱讀(1313) 評論(0)  編輯  收藏 所屬分類: AXISJAVA
    主站蜘蛛池模板: 四虎在线播放免费永久视频 | 久9热免费精品视频在线观看| 成人电影在线免费观看| 老汉精品免费AV在线播放| 麻豆一区二区免费播放网站| 日本视频免费在线| 国产亚洲精品无码专区| 精品亚洲成a人片在线观看少妇| 国产成+人+综合+亚洲专| 国产产在线精品亚洲AAVV| 拍拍拍无挡视频免费观看1000| 亚洲视频在线观看免费| 国产一卡二卡3卡四卡免费| 免费A级毛片无码A| 亚洲人成网亚洲欧洲无码久久| 亚洲妓女综合网99| 免费的黄色的网站| 污污网站18禁在线永久免费观看| 免费无码AV电影在线观看| 亚洲日韩在线观看| 亚洲日韩乱码中文无码蜜桃| 国产AV日韩A∨亚洲AV电影 | 久久er国产精品免费观看2| AV片在线观看免费| 超清首页国产亚洲丝袜| 亚洲乱码中文论理电影| 一级毛片在线免费视频| 国产成人精品免费视频大全麻豆| 免费v片在线观看品善网| 亚洲成熟xxxxx电影| 美国毛片亚洲社区在线观看 | 国产精品网站在线观看免费传媒| 国产精品成人免费视频网站京东| MM131亚洲国产美女久久| 亚洲人成网站日本片| 久久国产免费直播| 女人18毛片水真多免费看| 亚洲国产精品一区二区成人片国内| 亚洲性无码AV中文字幕| 久9这里精品免费视频| 一级毛片直播亚洲|