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