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

Web服務之路越走越亮

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

AMTeam.org

Web服務之路越走越亮

張誠

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

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

Web服務:共享應用

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

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

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

Portlets:通向Web服務

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

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

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

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

當前狀況:用Portlet架構Web服務

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

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

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

近期未來:遠程Portlet Web服務

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

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

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

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

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

無論是Portlets引擎還是Web服務接口的調用,對遠程的Portlets來說都是透明的。無論哪種情況,遠程Portlets都會處理輸入參數,返回Portlets響應對象。而SOAP封裝器則將響應排列到SOAP響應中,并且將它返回給SOAP代理,然后順序拆包給Portlets代理,將Portlets響應對象返回給Portlets引擎。

本文原載于計算機世界報

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢