SOA現在正熱得"燙手"。
對于SOA,目前我聽到有兩種說法:一種講它是"顛覆性的革命架構",一種是"謹慎觀望"。但無疑,SOA最近幾年發展得非常快,各主要軟件廠商紛紛高調跟進,關于SOA的報道可以說是不絕于耳。對"SOA熱",程序員們有的興奮和期待,有的則感到困惑,最近我在金蝶中間件于廣州、上海等城市舉行的"Java俱樂部"上和程序員們交流時,他們或是以一種朝圣者的表情說:"以前面向對象的技術過時了,SOA時代來了",或者一再懇切地追問我:"SOA到底是什么?作用是什么?"
那么,SOA是什么?到底能解決什么問題、解決得怎樣?我們和客戶都準備好了嗎?我給出的答案是"Just Processing,SOA-現在進行中"。
SOA到底是什么?
SOA(Service-Oriented Architecture)的定義是面向服務的架構,就是說將軟件按照功能設計成一個個服務,這些服務用標準的方式定義接口、并通過標準的協議進行調用。SOA所定義的接口和調用方式是獨立于編程語言和運行平臺的,廣義上講SOA可以基于不同的底層技術實現,比如CORBA和Web Services。但CORBA由于過于復雜和臃腫已很少使用,所以目前所說的SOA絕大多數是基于Web Services技術實現。在Web Services的實現方式下,SOA服務的接口用XML進行定義。
在SOA架構下,軟件開發從業務流程分析開始,使用組件化業務建模的方法識別和分析各種業務模型,將各種實踐融入其中,在這個基礎上建立用例,用例直接產生BPEL,這些BPEL則可以被融入一個服務整合框架中,其描述了各種服務的信息,從而把ESB上的各個模塊統一起來,形成一個巨大的服務倉。
這樣,SOA甚至是所有軟件人員的一個夢:將中間層再進行抽離,在中間層作一個跨技術架構的元數據和業務邏輯,使之成為跨技術架構的、可長期繼承、并不斷積累的企業業務庫和最寶貴的信息資產,也就是面向服務的組件庫,而且這個服務組件庫也可以被其它企業復用,且不依賴于任何一種技術架構。夸張一點說,如果所有軟件企業都使用SOA架構,那么世界軟件業將會發生徹底的改變。顯然,這樣一個框架不是一種產品,也不僅僅是一種技術,而是一種解決問題的方法論。
SOA可能應用的兩個場景及現有問題
那么,SOA要解決的問題是什么?我認為,從技術本質上講,SOA可能應用于兩個場景:第一種是業務互通互聯;第二種是封閉交易系統,即將元數據和業務邏輯抽離,形成可復用。舉個例子,在第一種場景中,當不同企業之間的業務需要相互調用,這時就可能采用SOA技術;在第二種場景中,在企業內部需要將系統進行遷移時,利用SOA技術定義的原有數據和業務流程,可以很快完成。
無疑,SOA是一個偉大的思想,它試圖定義一個大家(各種軟件廠商)都"認"的、都"遵循"的法則,大家都使用這樣的方法來進行互聯互通,從而實現無界限的聯通,以及服務組件庫的繼承和復用,解放無效和重復勞動。打一個不那么恰當的比喻,就像人類的語言一樣。SOA或許就像《圣經》中那個著名的"通天塔"的故事:人們用同一種語言交流產生的威力是如此之大,以至于他們在巴比倫幾乎要修成一個"通天塔",直達上帝所在的天庭。
但是,在SOA應用的兩個場景中,現存的問題同樣也是明顯的:
第一種場景:業務互聯互通,就是應用系統互聯。業務互聯,與其說是技術問題,不如講是業務問題,例如ERP、CRM的異步整合,數據層面整合都不能很好將兩個系統整合,SOA僅僅是一種實現工具之一,整合效果并不會好不到那里去。我們可以說,在沒有其他選項之前,SOA是一種最"不壞"的方式,但它并不能解決所有的問題,實際上EAI的牽涉面很廣,而我們知道,有些問題并不是單純靠技術就能解決的。
第二種場景:封閉交易系統,缺點是性能慢,而且基于Web Services的交易沒有形成明確的規范。使用XML作信息交互比較慢是大家都承認的,性能問題將對SOA的發展造在一定的阻力。同時SOA規范本身沒有完善,比如Transaction規范還在不斷完善,而且Web Service多年來收效甚微。總的來說,SOA現在還處在一個發展階段,很多標準還在制定,不同廠商間還存在不兼容的現象,因此SOA還不能說已經是一個成熟的技術,還需要時間的檢驗,還在"進行中"。當然,金蝶中間件作為JCP組織成員,也會推動SOA規范在J2EE平臺上的實現。
中國用戶的現實選擇之惑
在憧憬SOA技術可能帶來的前景之余,我們不得不回過頭來冷靜地說:SOA和我們大家的共同客戶――中國企業還有距離。
中國信息化進程與歐美不同,大量的基礎業務系統還沒建立起來,整合需求并不如想象的那么大。從我們對客戶的了解,發現很少有客戶有SOA的需求。簡單地總結就是,互通無基礎,以新建系統為主,需求并不強烈。而歐美市場大量業務系統已建立起來需要整合,從這個角度講,SOA是適用于他們的。同時,在成功案例極少的前提下,SOA還處于培育期,新建封閉交易系統使用SOA技術還是有一定風險的。
一項新技術需要市場的消化,大型企業出于保護企業投資,不會輕易地轉移到新的技術平臺;而即使像J2EE這樣成熟的技術經過了這么多年的發展,也不敢說占有統治地位的市場份額。SOA還需要整個IT界的用戶和供應商共同促進。
中國信息化需要什么樣的技術架構、能夠接受什么樣的成本價位?這不僅僅是我們的客戶需要考慮,我們軟件廠商要比客戶考慮得更清楚、更進一步。在這個充滿變數的激烈競爭市場,只有冷靜務實才能生存、發展。
From:http://blog.csdn.net/Apusicyuan/archive/2007/03/16/1531424.aspx