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