在螺旋上升的過(guò)程中升華
--初涉SOA學(xué)習(xí)心得
參加IBM大賽兩月余,我從一個(gè)完全的SOA門(mén)外漢走入了五光十色、繁華似錦的SOA世界。雖然璀璨的皇冠對(duì)我來(lái)說(shuō)依然是遙不可及,但是,一路走來(lái),旖旎的風(fēng)光和自己的心得還是頗值得記錄下來(lái)與大家分享的。于是,不敢藏私專(zhuān)美,撰文共享之。
一、SOA論道
"SOA既不是一種語(yǔ)言,也不是一種具體的技術(shù),它是一種新的軟件系統(tǒng)架構(gòu)模型,它主要應(yīng)用于解決在Internet環(huán)境下的不同商業(yè)應(yīng)用之間的業(yè)務(wù)集成問(wèn)題。"企業(yè)應(yīng)用集成的問(wèn)題由來(lái)已久,歷經(jīng)技術(shù)的變遷,其核心的問(wèn)題依然是以下的兩點(diǎn):一是如何解決不同企業(yè)應(yīng)用系統(tǒng)的數(shù)據(jù)一致性問(wèn)題,二是如何實(shí)現(xiàn)不同企業(yè)應(yīng)用系統(tǒng)之間的互操作;而最為重要的約束也依然保持為要求在集成的過(guò)程中盡可能的保持原有的企業(yè)應(yīng)用系統(tǒng)不變。于是,針對(duì)這一需求各種EIA技術(shù)日新月異、層出不窮。SOA之所以能夠成為眼下最為流行的解決方案有著種種原因,可是最為關(guān)鍵的原因在下認(rèn)為在于其抽象層次更高,封裝的粒度更大。在軟件設(shè)計(jì)的領(lǐng)域中,有著一個(gè)顛撲不破的設(shè)計(jì)原則,那就是Dependency Inverse Principle,當(dāng)我們的設(shè)計(jì)所依賴(lài)的類(lèi)或者接口越是抽象,設(shè)計(jì)的可擴(kuò)展性和可維護(hù)性就越好,能夠被復(fù)用的能力也就越強(qiáng)。更進(jìn)一步,我們的抽象層次越高,對(duì)于問(wèn)題的描述和認(rèn)識(shí)也就越遠(yuǎn)離機(jī)器的范疇而更加接近人類(lèi)日常思維的范疇;這有利于我們更好的設(shè)計(jì)、實(shí)現(xiàn)、調(diào)整、維護(hù)和升級(jí)系統(tǒng)。
SOA的應(yīng)用當(dāng)中,基于Web Service的解決方案得天獨(dú)厚。SOA架構(gòu)是一種分布式架構(gòu),如同任何分布式架構(gòu)一樣,其實(shí)現(xiàn)的核心在于對(duì)于接口的描述語(yǔ)言和系統(tǒng)之間的通信協(xié)議。Web Service的WSDL、SOAP以及UDDI為SOA的實(shí)現(xiàn)提供了一種完美的契合,基于Web Service實(shí)現(xiàn)SOA不僅易于實(shí)現(xiàn)SOA的松耦合性和位置透明性,更為重要的是,Web Service是基于HTTP協(xié)議的,這對(duì)于在Internet環(huán)境下順利地穿越防火墻實(shí)現(xiàn)遠(yuǎn)程調(diào)用格外關(guān)鍵。
"復(fù)用和自動(dòng)化是軟件的生存之道"。SOA的開(kāi)發(fā)是CBD的延續(xù),SOA的粗粒度服務(wù)組件代表著軟件開(kāi)發(fā)粒度不斷增大的趨勢(shì),而SOA中集成架構(gòu)和基礎(chǔ)架構(gòu)部分更是應(yīng)用服務(wù)器的一種分布式擴(kuò)展。通過(guò)這樣的架構(gòu)分層,使得應(yīng)用程序設(shè)計(jì)開(kāi)發(fā)人員和系統(tǒng)集成設(shè)計(jì)開(kāi)發(fā)人員能夠把精力集中在對(duì)業(yè)務(wù)邏輯的分析、建模和處理上,使得大家無(wú)需重新發(fā)明輪子。"術(shù)業(yè)有專(zhuān)攻",通過(guò)這樣的復(fù)用,SOA事實(shí)上實(shí)現(xiàn)了軟件設(shè)計(jì)開(kāi)發(fā)的分工。(待續(xù))
王青
2006-7-05