監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
上海OA快博

當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA快博

Web服務(wù)之路越走越亮

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

Web服務(wù)之路越走越亮

張誠

回顧Web服務(wù)(Web Services)的歷程,可以說它現(xiàn)在正處于技術(shù)成熟的第一個階段,即已經(jīng)被接受。雖然目前Web服務(wù)體系結(jié)構(gòu)還只是用來創(chuàng)建簡單的應(yīng)用類型,開發(fā)人員還處于熟悉其基本概念的階段。但應(yīng)該承認,Web開發(fā)界已經(jīng)逐漸將Web服務(wù)視做可行的工具,并逐步將它用于實現(xiàn)許多更陳舊、更龐大的技術(shù)所不能完成的任務(wù),比如在平臺和操作系統(tǒng)之間實現(xiàn)無縫的互操作。有理由相信,近期內(nèi),它將成為Internet上自動查找信息和應(yīng)用的最主要方法。

現(xiàn)在,開發(fā)商們已經(jīng)不再懷疑Web服務(wù)的可行性,而是開始研究如何最大限度地利用SOAP和其他支持 Web服務(wù)的技術(shù)來構(gòu)建Web服務(wù)?,F(xiàn)階段的Web服務(wù)就像清晨的路,有越走越亮的趨勢。雖然基于Web服務(wù),將SOAP、WSDL和UDDI部署到企業(yè)環(huán)境的成功應(yīng)用還不是很多,但是在企業(yè)應(yīng)用領(lǐng)域中Web服務(wù)的發(fā)展和進步非常迅猛。Apache Axis Engine(這個工具目前仍在開發(fā)中)已經(jīng)許諾將開發(fā)出構(gòu)建在企業(yè)Web服務(wù)之上的高價值、高性能和高穩(wěn)定性的產(chǎn)品。

Web服務(wù):共享應(yīng)用

Web服務(wù)的目的就是為了使商務(wù)應(yīng)用能夠在Internet上進行交流,并且同其他應(yīng)用系統(tǒng)進行協(xié)同工作。傳統(tǒng)的Internet應(yīng)用和服務(wù)之間的交互需要知道它們的位置,然后通過人工定位來實現(xiàn)。而Web服務(wù)允許應(yīng)用本身在標準的目錄結(jié)構(gòu)中查找Web服務(wù),然后通過最少的人工干預(yù)與這些服務(wù)捆綁在一起(如圖1所示)。

Web服務(wù)允許對象在Web站點上分布式分布,客戶可以通過Internet訪問它們。當(dāng)客戶需要某一種服務(wù)時,就可以通過全球服務(wù)注冊機構(gòu)(站點)進行查找并發(fā)現(xiàn)自己需要的服務(wù)。之后,客戶選擇其中的一個,并與這種服務(wù)捆綁在一起,在一段時間內(nèi)使用這個服務(wù)。由于對這些服務(wù)的發(fā)現(xiàn)和選擇一般情況下不需要人工干預(yù),因此服務(wù)與服務(wù)之間的切換非常迅速。通過自動服務(wù)發(fā)現(xiàn)(Automated Service Discovery)機制可以建立非常優(yōu)秀的服務(wù)網(wǎng)絡(luò)。如果有多個Web服務(wù)提供相似的功能,那么客戶可以很方便地在當(dāng)前使用的服務(wù)出現(xiàn)問題時切換到備份系統(tǒng)中,從而保證系統(tǒng)的健壯性。

在這個領(lǐng)域中最重要的標準有UDDI(Universal Description, Discovery, and Integration,統(tǒng)一描述、發(fā)現(xiàn)和集成)、SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)和WSDL(Web Services Description Language,服務(wù)描述語言)。其中UDDI用于注冊和發(fā)現(xiàn)Web服務(wù),SOAP用于Web服務(wù)之間的通信,以及配合WSDL來描述Web服務(wù)接口。

Portlets:通向Web服務(wù)

由于Web服務(wù)主要通過非人工干預(yù)來獲取Internet上的信息和應(yīng)用,這就要求Portals能夠盡快將數(shù)據(jù)源和遠程應(yīng)用組件集成為Web服務(wù)。一般說來,Portal可以從本地或遠程獲得數(shù)據(jù)資源。這些數(shù)據(jù)資源可能來自于其他的數(shù)據(jù)庫、交易系統(tǒng)、聯(lián)合內(nèi)容供應(yīng)商,或另外的遠程Web站點。Portal將這些數(shù)據(jù)資源綜合起來形成復(fù)雜頁面,以易于用戶接收的表單形式返回給用戶。除了提供這些單純的數(shù)據(jù)信息,許多Portal還提供E-mail、日歷、銀行賬單等應(yīng)用。所以說,Portal非常重要,它是用戶從不同位置訪問不同信息和應(yīng)用的焦點。

而Portlets是運行在Portal的Portlet容器(Container)中的插件,在許多方面都類似于Servlets。Portlets用Portlet API來編寫,就像Servlets用Servlet API來編寫一樣,不同的是Portlets運行在Portal環(huán)境中,而Servlets運行在服務(wù)器端的Servlet容器中。另外,Servlet直接與客戶端通信,而Portlet則通過Portal的應(yīng)用來調(diào)用。Portlets只有在生成了適合大頁面顯示的內(nèi)容之后,才會在Portal環(huán)境中適當(dāng)運行(如圖2所示)。

在基于Web服務(wù)的Portal應(yīng)用中,一個典型的例子就是新聞Portlet(如圖3中的新聞Portlet)。新聞Portlet使得用戶能夠配置用于跟蹤的新聞分類,然后從Web服務(wù)中獲取該類別下的最新新聞并且顯示出來。在這個例子中,Web服務(wù)提供信息,本地的Portlet則用于顯示這些信息,Portlet代碼運行在本地的Portal中。Web服務(wù)返回的信息可以作為一個XML文件。

另外一種基于Web服務(wù)的Portal應(yīng)用是與其他Portals共享Portlets。在這種情況下,遠程服務(wù)器即另外一個Portal,在UDDI目錄中發(fā)布Portlets作為遠程Portlet Web服務(wù)。這樣本地Portal在UDDI目錄中就可以查找遠程的Portlet服務(wù)并且與它們捆綁在一起,本地Portal用戶無需在本地Portal服務(wù)器上安裝Portlet代碼就可以直接訪問遠程Portlet服務(wù)(如圖3中的股票信息和天氣預(yù)報建立的Portlet代理)。

當(dāng)前狀況:用Portlet架構(gòu)Web服務(wù)

過去,Portlets可以通過多種方式訪問信息和應(yīng)用。在Intranet中,通常通過數(shù)據(jù)庫連接、LDAP連接、Java RMI、DCOM或CORBA來實現(xiàn)上述訪問。在Internet環(huán)境中,大多數(shù)情況下使用HTTP協(xié)議來發(fā)送請求和接收響應(yīng)。隨著Web服務(wù)的發(fā)展,相信在短時期內(nèi),SOAP協(xié)議將成為最主要的、通過Potrlets請求遠程服務(wù)的通信機制,并且會逐步取代上述這些通信機制。

Web服務(wù)和客戶端的通信、全球Web服務(wù)以及多目錄管理都會用到SOAP和UDDI。這樣可以通過應(yīng)用程序去查找、捆綁和運用Web服務(wù)。Web服務(wù)可以用WSDL描述,然后通過適當(dāng)?shù)墓ぞ?,針對特定的程序設(shè)計語言來生成SOAP代理。同樣,也有工具將已有的代碼用WSDL來描述,然后生成Web服務(wù)。

圖4說明了如何用Portlet來架構(gòu)Web服務(wù)。當(dāng)Portlet接收到請求去訪問Web服務(wù)時,Portlet會首先調(diào)用SOAP代理對象,該代理把請求參數(shù)排列成與程序設(shè)計語言無關(guān)的SOAP請求,再把該請求發(fā)送到Web服務(wù)中。Web服務(wù)將接收到的SOAP請求進行拆包,將請求參數(shù)進行還原,并根據(jù)這些參數(shù)來調(diào)用本地的Web服務(wù),完成服務(wù)請求。當(dāng)服務(wù)返回結(jié)果后,SOAP封裝器將結(jié)果封裝成同樣與程序設(shè)計語言無關(guān)的SOAP響應(yīng),并將它送回給SOAP代理。最后,SOAP代理把返回的結(jié)果數(shù)據(jù)進行拆包,送給調(diào)用它的Portlet。

近期未來:遠程Portlet Web服務(wù)

我們知道,一個Portal不可能提供所有的服務(wù),因此當(dāng)用戶請求訪問其他Portal服務(wù)器上的Web服務(wù)時,本地Portal服務(wù)器的Portlets就可以動態(tài)地同遠程Portal服務(wù)器的Portlets進行通信。這樣就不需要在本地的Portal服務(wù)器中安裝相應(yīng)的Portlet文件。為了達到這個目的,Portlets本身必須作為Web服務(wù)提供給其他的Portlets,同時必須用WSDL來描述遠程Web服務(wù)接口。

WSDL定義了所有遠程Portlets所需的參數(shù)、返回值以及相應(yīng)的Portlet API集合。這樣,遠程Portlets不一定非得用Java實現(xiàn),而可以用其他的程序設(shè)計語言實現(xiàn)。

Web服務(wù)供應(yīng)商如果想發(fā)布遠程Portlet Web服務(wù),必須先發(fā)布適當(dāng)?shù)腢DDI目錄入口,以便引導(dǎo)至用WSDL描述的遠程Portlet Web服務(wù)接口。遠程Portlets一旦發(fā)布,Portal管理員就可以用Portal管理工具來搜索UDDI目錄,查找用遠程Portlet Web服務(wù)接口實現(xiàn)的Web服務(wù),預(yù)選一些經(jīng)過匹配的Portlet Web服務(wù),并將它們加到Portal的Portlets注冊表中(見圖5)。

Portlets注冊登記后,用戶就可以選擇這些Portlets并把它們加到自己的頁面中去。另外,Portal也可以建立一些渠道,讓本地Portal的用戶瀏覽Portlet Web服務(wù)目錄,在個人頁面中加入一些引導(dǎo),指向遠程Portlets。

當(dāng)頁面中指向遠程Portlets的引導(dǎo)得到了返回結(jié)果,Portal通過RPI(Remote Portlet Invocation)協(xié)議用Portlet代理去調(diào)用遠程Portlet Web服務(wù)。Portlet調(diào)用Portlet代理就像調(diào)用本地的Portlets一樣解析Portlet請求(Portlet Request)和Portlet響應(yīng)(Portlet Response)兩個對象,然后Portlet代理在內(nèi)部調(diào)用SOAP代理,把所有參數(shù)進行排列,并打包到SOAP請求中,再把SOAP請求發(fā)送到遠程服務(wù)器上。該遠程服務(wù)器運行Portlet Web服務(wù),在Web服務(wù)端的SOAP封裝器將收到的請求信息進行拆包,然后再去調(diào)用遠程Portlets。

無論是Portlets引擎還是Web服務(wù)接口的調(diào)用,對遠程的Portlets來說都是透明的。無論哪種情況,遠程Portlets都會處理輸入?yún)?shù),返回Portlets響應(yīng)對象。而SOAP封裝器則將響應(yīng)排列到SOAP響應(yīng)中,并且將它返回給SOAP代理,然后順序拆包給Portlets代理,將Portlets響應(yīng)對象返回給Portlets引擎。

本文原載于計算機世界報

發(fā)布:2007-03-25 10:35    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢