當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA快博
Web服務(wù)之路越走越亮
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
AMTeam.orgWeb服務(wù)之路越走越亮
張誠(chéng)
回顧Web服務(wù)(Web Services)的歷程,可以說(shuō)它現(xiàn)在正處于技術(shù)成熟的第一個(gè)階段,即已經(jīng)被接受。雖然目前Web服務(wù)體系結(jié)構(gòu)還只是用來(lái)創(chuàng)建簡(jiǎn)單的應(yīng)用類(lèi)型,開(kāi)發(fā)人員還處于熟悉其基本概念的階段。但應(yīng)該承認(rèn),Web開(kāi)發(fā)界已經(jīng)逐漸將Web服務(wù)視做可行的工具,并逐步將它用于實(shí)現(xiàn)許多更陳舊、更龐大的技術(shù)所不能完成的任務(wù),比如在平臺(tái)和操作系統(tǒng)之間實(shí)現(xiàn)無(wú)縫的互操作。有理由相信,近期內(nèi),它將成為Internet上自動(dòng)查找信息和應(yīng)用的最主要方法。
現(xiàn)在,開(kāi)發(fā)商們已經(jīng)不再懷疑Web服務(wù)的可行性,而是開(kāi)始研究如何最大限度地利用SOAP和其他支持 Web服務(wù)的技術(shù)來(lái)構(gòu)建Web服務(wù)?,F(xiàn)階段的Web服務(wù)就像清晨的路,有越走越亮的趨勢(shì)。雖然基于Web服務(wù),將SOAP、WSDL和UDDI部署到企業(yè)環(huán)境的成功應(yīng)用還不是很多,但是在企業(yè)應(yīng)用領(lǐng)域中Web服務(wù)的發(fā)展和進(jìn)步非常迅猛。Apache Axis Engine(這個(gè)工具目前仍在開(kāi)發(fā)中)已經(jīng)許諾將開(kāi)發(fā)出構(gòu)建在企業(yè)Web服務(wù)之上的高價(jià)值、高性能和高穩(wěn)定性的產(chǎn)品。
Web服務(wù):共享應(yīng)用
Web服務(wù)的目的就是為了使商務(wù)應(yīng)用能夠在Internet上進(jìn)行交流,并且同其他應(yīng)用系統(tǒng)進(jìn)行協(xié)同工作。傳統(tǒng)的Internet應(yīng)用和服務(wù)之間的交互需要知道它們的位置,然后通過(guò)人工定位來(lái)實(shí)現(xiàn)。而Web服務(wù)允許應(yīng)用本身在標(biāo)準(zhǔn)的目錄結(jié)構(gòu)中查找Web服務(wù),然后通過(guò)最少的人工干預(yù)與這些服務(wù)捆綁在一起(如圖1所示)。
Web服務(wù)允許對(duì)象在Web站點(diǎn)上分布式分布,客戶可以通過(guò)Internet訪問(wèn)它們。當(dāng)客戶需要某一種服務(wù)時(shí),就可以通過(guò)全球服務(wù)注冊(cè)機(jī)構(gòu)(站點(diǎn))進(jìn)行查找并發(fā)現(xiàn)自己需要的服務(wù)。之后,客戶選擇其中的一個(gè),并與這種服務(wù)捆綁在一起,在一段時(shí)間內(nèi)使用這個(gè)服務(wù)。由于對(duì)這些服務(wù)的發(fā)現(xiàn)和選擇一般情況下不需要人工干預(yù),因此服務(wù)與服務(wù)之間的切換非常迅速。通過(guò)自動(dòng)服務(wù)發(fā)現(xiàn)(Automated Service Discovery)機(jī)制可以建立非常優(yōu)秀的服務(wù)網(wǎng)絡(luò)。如果有多個(gè)Web服務(wù)提供相似的功能,那么客戶可以很方便地在當(dāng)前使用的服務(wù)出現(xiàn)問(wèn)題時(shí)切換到備份系統(tǒng)中,從而保證系統(tǒng)的健壯性。
在這個(gè)領(lǐng)域中最重要的標(biāo)準(zhǔn)有UDDI(Universal Description, Discovery, and Integration,統(tǒng)一描述、發(fā)現(xiàn)和集成)、SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)和WSDL(Web Services Description Language,服務(wù)描述語(yǔ)言)。其中UDDI用于注冊(cè)和發(fā)現(xiàn)Web服務(wù),SOAP用于Web服務(wù)之間的通信,以及配合WSDL來(lái)描述Web服務(wù)接口。
Portlets:通向Web服務(wù)
由于Web服務(wù)主要通過(guò)非人工干預(yù)來(lái)獲取Internet上的信息和應(yīng)用,這就要求Portals能夠盡快將數(shù)據(jù)源和遠(yuǎn)程應(yīng)用組件集成為Web服務(wù)。一般說(shuō)來(lái),Portal可以從本地或遠(yuǎn)程獲得數(shù)據(jù)資源。這些數(shù)據(jù)資源可能來(lái)自于其他的數(shù)據(jù)庫(kù)、交易系統(tǒng)、聯(lián)合內(nèi)容供應(yīng)商,或另外的遠(yuǎn)程Web站點(diǎn)。Portal將這些數(shù)據(jù)資源綜合起來(lái)形成復(fù)雜頁(yè)面,以易于用戶接收的表單形式返回給用戶。除了提供這些單純的數(shù)據(jù)信息,許多Portal還提供E-mail、日歷、銀行賬單等應(yīng)用。所以說(shuō),Portal非常重要,它是用戶從不同位置訪問(wèn)不同信息和應(yīng)用的焦點(diǎn)。
而Portlets是運(yùn)行在Portal的Portlet容器(Container)中的插件,在許多方面都類(lèi)似于Servlets。Portlets用Portlet API來(lái)編寫(xiě),就像Servlets用Servlet API來(lái)編寫(xiě)一樣,不同的是Portlets運(yùn)行在Portal環(huán)境中,而Servlets運(yùn)行在服務(wù)器端的Servlet容器中。另外,Servlet直接與客戶端通信,而Portlet則通過(guò)Portal的應(yīng)用來(lái)調(diào)用。Portlets只有在生成了適合大頁(yè)面顯示的內(nèi)容之后,才會(huì)在Portal環(huán)境中適當(dāng)運(yùn)行(如圖2所示)。
在基于Web服務(wù)的Portal應(yīng)用中,一個(gè)典型的例子就是新聞Portlet(如圖3中的新聞Portlet)。新聞Portlet使得用戶能夠配置用于跟蹤的新聞分類(lèi),然后從Web服務(wù)中獲取該類(lèi)別下的最新新聞并且顯示出來(lái)。在這個(gè)例子中,Web服務(wù)提供信息,本地的Portlet則用于顯示這些信息,Portlet代碼運(yùn)行在本地的Portal中。Web服務(wù)返回的信息可以作為一個(gè)XML文件。
另外一種基于Web服務(wù)的Portal應(yīng)用是與其他Portals共享Portlets。在這種情況下,遠(yuǎn)程服務(wù)器即另外一個(gè)Portal,在UDDI目錄中發(fā)布Portlets作為遠(yuǎn)程Portlet Web服務(wù)。這樣本地Portal在UDDI目錄中就可以查找遠(yuǎn)程的Portlet服務(wù)并且與它們捆綁在一起,本地Portal用戶無(wú)需在本地Portal服務(wù)器上安裝Portlet代碼就可以直接訪問(wèn)遠(yuǎn)程Portlet服務(wù)(如圖3中的股票信息和天氣預(yù)報(bào)建立的Portlet代理)。
當(dāng)前狀況:用Portlet架構(gòu)Web服務(wù)
過(guò)去,Portlets可以通過(guò)多種方式訪問(wèn)信息和應(yīng)用。在Intranet中,通常通過(guò)數(shù)據(jù)庫(kù)連接、LDAP連接、Java RMI、DCOM或CORBA來(lái)實(shí)現(xiàn)上述訪問(wèn)。在Internet環(huán)境中,大多數(shù)情況下使用HTTP協(xié)議來(lái)發(fā)送請(qǐng)求和接收響應(yīng)。隨著Web服務(wù)的發(fā)展,相信在短時(shí)期內(nèi),SOAP協(xié)議將成為最主要的、通過(guò)Potrlets請(qǐng)求遠(yuǎn)程服務(wù)的通信機(jī)制,并且會(huì)逐步取代上述這些通信機(jī)制。
Web服務(wù)和客戶端的通信、全球Web服務(wù)以及多目錄管理都會(huì)用到SOAP和UDDI。這樣可以通過(guò)應(yīng)用程序去查找、捆綁和運(yùn)用Web服務(wù)。Web服務(wù)可以用WSDL描述,然后通過(guò)適當(dāng)?shù)墓ぞ?,針?duì)特定的程序設(shè)計(jì)語(yǔ)言來(lái)生成SOAP代理。同樣,也有工具將已有的代碼用WSDL來(lái)描述,然后生成Web服務(wù)。
圖4說(shuō)明了如何用Portlet來(lái)架構(gòu)Web服務(wù)。當(dāng)Portlet接收到請(qǐng)求去訪問(wèn)Web服務(wù)時(shí),Portlet會(huì)首先調(diào)用SOAP代理對(duì)象,該代理把請(qǐng)求參數(shù)排列成與程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)的SOAP請(qǐng)求,再把該請(qǐng)求發(fā)送到Web服務(wù)中。Web服務(wù)將接收到的SOAP請(qǐng)求進(jìn)行拆包,將請(qǐng)求參數(shù)進(jìn)行還原,并根據(jù)這些參數(shù)來(lái)調(diào)用本地的Web服務(wù),完成服務(wù)請(qǐng)求。當(dāng)服務(wù)返回結(jié)果后,SOAP封裝器將結(jié)果封裝成同樣與程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)的SOAP響應(yīng),并將它送回給SOAP代理。最后,SOAP代理把返回的結(jié)果數(shù)據(jù)進(jìn)行拆包,送給調(diào)用它的Portlet。
近期未來(lái):遠(yuǎn)程Portlet Web服務(wù)
我們知道,一個(gè)Portal不可能提供所有的服務(wù),因此當(dāng)用戶請(qǐng)求訪問(wèn)其他Portal服務(wù)器上的Web服務(wù)時(shí),本地Portal服務(wù)器的Portlets就可以動(dòng)態(tài)地同遠(yuǎn)程Portal服務(wù)器的Portlets進(jìn)行通信。這樣就不需要在本地的Portal服務(wù)器中安裝相應(yīng)的Portlet文件。為了達(dá)到這個(gè)目的,Portlets本身必須作為Web服務(wù)提供給其他的Portlets,同時(shí)必須用WSDL來(lái)描述遠(yuǎn)程Web服務(wù)接口。
WSDL定義了所有遠(yuǎn)程Portlets所需的參數(shù)、返回值以及相應(yīng)的Portlet API集合。這樣,遠(yuǎn)程Portlets不一定非得用Java實(shí)現(xiàn),而可以用其他的程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)。
Web服務(wù)供應(yīng)商如果想發(fā)布遠(yuǎn)程Portlet Web服務(wù),必須先發(fā)布適當(dāng)?shù)腢DDI目錄入口,以便引導(dǎo)至用WSDL描述的遠(yuǎn)程Portlet Web服務(wù)接口。遠(yuǎn)程Portlets一旦發(fā)布,Portal管理員就可以用Portal管理工具來(lái)搜索UDDI目錄,查找用遠(yuǎn)程Portlet Web服務(wù)接口實(shí)現(xiàn)的Web服務(wù),預(yù)選一些經(jīng)過(guò)匹配的Portlet Web服務(wù),并將它們加到Portal的Portlets注冊(cè)表中(見(jiàn)圖5)。
Portlets注冊(cè)登記后,用戶就可以選擇這些Portlets并把它們加到自己的頁(yè)面中去。另外,Portal也可以建立一些渠道,讓本地Portal的用戶瀏覽Portlet Web服務(wù)目錄,在個(gè)人頁(yè)面中加入一些引導(dǎo),指向遠(yuǎn)程Portlets。
當(dāng)頁(yè)面中指向遠(yuǎn)程Portlets的引導(dǎo)得到了返回結(jié)果,Portal通過(guò)RPI(Remote Portlet Invocation)協(xié)議用Portlet代理去調(diào)用遠(yuǎn)程Portlet Web服務(wù)。Portlet調(diào)用Portlet代理就像調(diào)用本地的Portlets一樣解析Portlet請(qǐng)求(Portlet Request)和Portlet響應(yīng)(Portlet Response)兩個(gè)對(duì)象,然后Portlet代理在內(nèi)部調(diào)用SOAP代理,把所有參數(shù)進(jìn)行排列,并打包到SOAP請(qǐng)求中,再把SOAP請(qǐng)求發(fā)送到遠(yuǎn)程服務(wù)器上。該遠(yuǎn)程服務(wù)器運(yùn)行Portlet Web服務(wù),在Web服務(wù)端的SOAP封裝器將收到的請(qǐng)求信息進(jìn)行拆包,然后再去調(diào)用遠(yuǎn)程Portlets。
無(wú)論是Portlets引擎還是Web服務(wù)接口的調(diào)用,對(duì)遠(yuǎn)程的Portlets來(lái)說(shuō)都是透明的。無(wú)論哪種情況,遠(yuǎn)程Portlets都會(huì)處理輸入?yún)?shù),返回Portlets響應(yīng)對(duì)象。而SOAP封裝器則將響應(yīng)排列到SOAP響應(yīng)中,并且將它返回給SOAP代理,然后順序拆包給Portlets代理,將Portlets響應(yīng)對(duì)象返回給Portlets引擎。
本文原載于計(jì)算機(jī)世界報(bào)
- 1上海OA--衰退期成長(zhǎng)的動(dòng)力
- 2IBM首推出業(yè)界第一個(gè)單一的跨企業(yè)Web服務(wù)開(kāi)發(fā)環(huán)境
- 3利用已有優(yōu)勢(shì) Novell不甘在Web服務(wù)作配角
- 4上海哪家軟件公司OA系統(tǒng)做的最好?
- 5上海OA:由說(shuō)到做,從知到行(by AMT 夏敬華 徐家?。?
- 6J2EE和.Net:能共處嗎?
- 7亞馬遜免費(fèi)提供技術(shù) 讓開(kāi)店者創(chuàng)造自有網(wǎng)絡(luò)商店
- 8微軟牽手Siebel 商業(yè)軟件捆綁Web服務(wù)技術(shù)
- 9hp Netaction產(chǎn)品家族和WEB服務(wù)
- 10IBM推出業(yè)界首款Web安全服務(wù)軟件
- 11客戶服務(wù)中的上海OA
- 12WS-I:網(wǎng)絡(luò)服務(wù)需要一個(gè)聲音說(shuō)話
- 13Web服務(wù)的標(biāo)準(zhǔn)之爭(zhēng)和商機(jī)之爭(zhēng)
- 14.Net和Java機(jī)會(huì)均等
- 15傳統(tǒng)OA辦公軟件廠商即將面臨的威脅
- 16上海OA的三種策略(尤克強(qiáng))
- 17讓“內(nèi)容”成為價(jià)值
- 18微軟.Net VS Java兩軍對(duì)壘 Web服務(wù)步履艱難
- 19泛普OA軟件在上海發(fā)布基礎(chǔ)版功能列表
- 20網(wǎng)絡(luò)服務(wù):壓在MSN上的賭注
- 21怎樣建立一個(gè)合理的知識(shí)結(jié)構(gòu)
- 22“知識(shí)經(jīng)濟(jì)”時(shí)代 增強(qiáng)企業(yè)上海OA
- 23ASP.NET Web服務(wù)還是.NET Remoting:如何選擇
- 24個(gè)人上海OA的實(shí)務(wù)指引
- 25IBM推出面向移動(dòng)設(shè)備的Web服務(wù)編程工具
- 26泛普(上海)OA辦公軟件2014年中期率先發(fā)布基礎(chǔ)功能模塊
- 27GIS應(yīng)用模式的革命
- 28泛普OA辦公系統(tǒng)建筑施工行業(yè)資產(chǎn)管理信息平臺(tái)介紹
- 29Web服務(wù)防黑談(一)
- 30Amazon和Google開(kāi)辟Web service新紀(jì)元
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號(hào)-2 渝公網(wǎng)安備50011202501700號(hào) 咨詢電話:400-8352-114