在很多場合的交流中,常常遇到把
SOA和Web Service混用的情況,所以想在這次的Blog里,結(jié)合網(wǎng)上的各種觀
點(diǎn),談?wù)剛€(gè)人對(duì)兩個(gè)概念的理解。用一句話來概括基本的觀點(diǎn)就是“SOA不是Web Service,Web Service是目前最適合實(shí)現(xiàn)SOA的技術(shù)”。 之所以SOA和Web Service被混為一談,最可能的原因了也就在于此吧。
早在1996年Gartner就前瞻性地提出了面向服務(wù)架構(gòu)的思想(SOA),該年赫赫有名的Netscape
才發(fā)布了Navigator 2.0,整個(gè)互聯(lián)網(wǎng)剛剛慶祝超過500,000網(wǎng)站的誕生,網(wǎng)絡(luò)上的商業(yè)應(yīng)用還是鳳毛麟角,Web
Service不知為何物,SOA還只是束之高閣的理論概念。直到2000年以后,W3C才成立了相關(guān)的委員會(huì),開始討論Web
Service的相關(guān)標(biāo)準(zhǔn);各大廠商一邊積極參與標(biāo)準(zhǔn)制定,一邊推出了一系列實(shí)實(shí)在在的產(chǎn)品。新的技術(shù)和新的產(chǎn)品出現(xiàn),SOA找到了可以依托的憑借。隨著
Web Service技術(shù)的推出和應(yīng)用,SOA的思想被一個(gè)個(gè)效益顯著的信息系統(tǒng)建設(shè)項(xiàng)目不斷的示范,才逐漸成為現(xiàn)今的熱門話題。類似的情況讓人聯(lián)想到愛因斯坦提出來的理論,著名的質(zhì)量能量轉(zhuǎn)化等式E=mc2,直到人們掌握了核子裂變技術(shù),才成功生產(chǎn)出了原子彈,向世人展示了這個(gè)理論等式的巨大威力。
因?yàn)楝F(xiàn)在幾乎所有的SOA應(yīng)用場合都是和Web Service綁定的,所以不免有時(shí)候這兩個(gè)概念混用。不可否認(rèn)Web
Service是現(xiàn)在最適合實(shí)現(xiàn)SOA的技術(shù),SOA的走紅在很大程度上歸功于Web
Service標(biāo)準(zhǔn)的成熟和應(yīng)用普及。因?yàn)楝F(xiàn)在大家基本上認(rèn)同Web Service技術(shù)在幾方面體現(xiàn)了SOA的需要:
首先是基于標(biāo)準(zhǔn)訪問的獨(dú)立功能實(shí)體滿足了松耦合要求:在Web Service中所有的訪問都通過SOAP訪問進(jìn)行,用WSDL定義的接口封裝,通過UDDI進(jìn)行目錄查找,可以動(dòng)態(tài)改變一個(gè)服務(wù)的提供方而無需影響客戶端的配置,外界客戶端是根本不關(guān)心訪問服務(wù)器端的實(shí)現(xiàn)。
其次,適合大數(shù)據(jù)量低頻率訪問符合服務(wù)大顆粒度功能:基于性能和效率平衡的要求,SOA的服務(wù)提供的是大顆粒度的應(yīng)用功能,而且跨系統(tǒng)邊界的訪問頻率也不會(huì)象程序間函數(shù)調(diào)用那么頻繁。通過使用WSDL和基于文本(Literal)的SOAP請(qǐng)求,可以實(shí)現(xiàn)能一次性接收處理大量數(shù)據(jù)。
最后,基于標(biāo)準(zhǔn)的文本消息傳遞為異構(gòu)系統(tǒng)提供通訊機(jī)制:Web Service所有的通訊是通過SOAP進(jìn)行的,而SOAP是基于XML的,XML是結(jié)構(gòu)化的文本消息。從最早的EDI開始,文本消息也許是異構(gòu)系統(tǒng)間通訊最好的消息格式,適用于SOA強(qiáng)調(diào)的服務(wù)對(duì)異構(gòu)后天宿主系統(tǒng)的透明性。
綜合上述觀點(diǎn),Web Service不愧為當(dāng)前SOA的最好選擇。然而,就SOA思想本身而言,并不一定要局限于Web
Service方式的實(shí)現(xiàn)。更應(yīng)該看到的是SOA本身強(qiáng)調(diào)的是實(shí)現(xiàn)業(yè)務(wù)邏輯的敏捷性要求,是從業(yè)務(wù)應(yīng)用角度對(duì)信息系統(tǒng)實(shí)現(xiàn)和應(yīng)用的抽象。隨著人們認(rèn)識(shí)的提
高,還會(huì)有新技術(shù)不斷的發(fā)明出來,更好的來滿足這個(gè)要求。就好像在核子裂變之后,人們又發(fā)現(xiàn)了威力更加強(qiáng)大的核子聚變。為了要有一個(gè)更高的角度來看待問
題,SOA和Web Service還是不應(yīng)該混為一談
Web Service是就現(xiàn)在而言最適合實(shí)現(xiàn)SOA的一些技術(shù)的集合,事實(shí)上最近SOA的火爆在很大程度上歸功于Web
Service標(biāo)準(zhǔn)的成熟和應(yīng)用的普及為廣泛的實(shí)現(xiàn)SOA架構(gòu)提供了基礎(chǔ)。下面讓我們看看Web
Service中的各種協(xié)議是如何互相工作來滿足SOA所需的特點(diǎn)的:
獨(dú)立的功能實(shí)體:通過UDDI的目錄查找,我們可以動(dòng)態(tài)改變一個(gè)服務(wù)的提供方而無需影響客戶端的應(yīng)用程序配置。所有的訪問都通過SOAP訪問進(jìn)行,只要WSDL接口封裝良好,外界客戶端是根本沒有辦法直接訪問服務(wù)器端的數(shù)據(jù)的。
大數(shù)據(jù)量低頻率訪問:通過使用WSDL和基于文本(Literal)的SOAP請(qǐng)求,我們可以實(shí)現(xiàn)能一次性接收大量數(shù)據(jù)的接口。這里需要著重指出的是
SOAP請(qǐng)求分文本方式和遠(yuǎn)程調(diào)用(RPC)兩種方式,正如上文已經(jīng)提到的,采用遠(yuǎn)程調(diào)用方式的SOAP請(qǐng)求并不符合這點(diǎn)要求。但是令人遺憾的是現(xiàn)有的大
多數(shù)SOAP請(qǐng)求采用的仍然是遠(yuǎn)程調(diào)用(RPC)方式,在某些平臺(tái)上,例如IBM
WebSphere的早期版本,甚至沒有提供文本方式的SOAP支持。
基于文本的消息傳遞:Web Service所有的通訊是通過SOAP進(jìn)行的,而SOAP是基于XML的,不同版本之間可以使用不同的DTD或者XML Schema加以辨別和區(qū)分。因此只需要我們?yōu)椴煌陌姹咎峁┎煌奶幚砭涂梢暂p松實(shí)現(xiàn)版本控制的目標(biāo)。

screen.width-500)this.width=screen.width-500" border="0">