在談這個(gè)之前,還得再說下SOA和平臺(tái)。SOA做兩件事情,一個(gè)是解耦并識(shí)別可重用的服務(wù),一個(gè)是對服務(wù)進(jìn)行靈活組裝和編排滿足業(yè)務(wù)需求,SOA核心是業(yè)務(wù)和技術(shù)的解耦,服務(wù)和能力的復(fù)用。而在IT領(lǐng)域的平臺(tái)平臺(tái)的概念目前基本上有三種,一種是基于快速開發(fā)目的技術(shù)平臺(tái),第二種是基于業(yè)務(wù)邏輯復(fù)用的業(yè)務(wù)平臺(tái)。第三種平臺(tái)基于系統(tǒng)自維護(hù),自擴(kuò)展的應(yīng)用平臺(tái)。技術(shù)平臺(tái)和業(yè)務(wù)平臺(tái)都是軟件開發(fā)人員使用的平臺(tái),而應(yīng)用平臺(tái)則是應(yīng)用軟件用戶使用的平臺(tái)。 SOA本身是一個(gè)平臺(tái) 首先要認(rèn)識(shí)到SOA產(chǎn)品本身就是一個(gè)集成平臺(tái),為了完成數(shù)據(jù)集成,應(yīng)用集成和流程集成,我們需要一個(gè)基礎(chǔ)平臺(tái)來集中統(tǒng)一的完成這個(gè)事情。因此SOA集成平臺(tái)重點(diǎn)則是將服務(wù)集成和服務(wù)組裝的能力全部管理起來,從這個(gè)概念上理解自然涉及到SOA最核心的UDDI,ESB和BPEL等功能。這些集成的特性和功能完全是在各個(gè)業(yè)務(wù)系統(tǒng)外的,又是大家都需要的基礎(chǔ)公共功能,則應(yīng)該納入到平臺(tái)集中管理。 SOA稱之為平臺(tái)的原因則是它提供了業(yè)務(wù)系統(tǒng)都需要的通用基礎(chǔ)架構(gòu)和技術(shù),這種能力是大家都需要的公共基礎(chǔ)能力。但是如果我們買入一個(gè)SOA套裝產(chǎn)品,這個(gè)產(chǎn)品可能剛開始沒有任何服務(wù)接入,也無法提供任何服務(wù)能力,那么這個(gè)產(chǎn)品本身就是一個(gè)技術(shù)平臺(tái)。如果后面我們將數(shù)據(jù)服務(wù),業(yè)務(wù)服務(wù),流程服務(wù)全部識(shí)別,開發(fā)后發(fā)布到平臺(tái)上,那么SOA平臺(tái)本身就是一個(gè)專屬某個(gè)業(yè)務(wù)域的業(yè)務(wù)平臺(tái)。 平臺(tái)本身要考慮SOA化 平臺(tái)的核心是它是一個(gè)公共的基礎(chǔ)能力提供中心,平臺(tái)本身已經(jīng)集中了所有可復(fù)用的能力,開發(fā)框架和技術(shù)。通過平臺(tái)我們可以快速的開發(fā)平臺(tái)和應(yīng)用。 在軟件開發(fā)里面我們比較關(guān)注技術(shù)平臺(tái),而技術(shù)平臺(tái)簡單理解就是所有業(yè)務(wù)系統(tǒng)標(biāo)準(zhǔn)的技術(shù)能力的抽象和封裝形成了一個(gè)不承載具體業(yè)務(wù)的空框架。這個(gè)空框架不僅僅是簡單的技術(shù)開發(fā)框架,而是融入了更多的基礎(chǔ)服務(wù)能力。 基礎(chǔ)服務(wù)能力包括兩個(gè)層面,一個(gè)是純粹技術(shù)方面的基礎(chǔ)服務(wù)能力,包括日志,異常,消息,事務(wù),國際化,緩存等內(nèi)容。一個(gè)是業(yè)務(wù)抽象后和業(yè)務(wù)無關(guān)的技術(shù)能力,包括通用權(quán)限模型,通用流程模型,郵件短信組件,常用UI組件。有了這些,你會(huì)發(fā)現(xiàn)技術(shù)平臺(tái)本身就是一個(gè)完完整整可以獨(dú)立運(yùn)行起來的應(yīng)用,除了沒有具體業(yè)務(wù)功能外其他一應(yīng)俱全。 基于該平臺(tái)我們可以開發(fā)業(yè)務(wù)應(yīng)用,那如果平臺(tái)本身是基于SOA架構(gòu)的,那么開發(fā)的應(yīng)用自然也就滿足SOA架構(gòu)風(fēng)格。一個(gè)應(yīng)用功能應(yīng)該包括資源層,技術(shù)組件,服務(wù)組件層,流程層等。一個(gè)應(yīng)用功能在實(shí)現(xiàn)業(yè)務(wù)過程中能夠看到業(yè)務(wù)和技術(shù)實(shí)現(xiàn)是剝離和松耦合的。一個(gè)應(yīng)用它本身是基于在技術(shù)平臺(tái)上開發(fā)的多個(gè)業(yè)務(wù)組件構(gòu)成的,業(yè)務(wù)組件間本身松耦合,業(yè)務(wù)組件間通過服務(wù)進(jìn)行交互。 基于平臺(tái)開發(fā)的業(yè)務(wù)應(yīng)用,本身業(yè)務(wù)組件之間可能基于ESB總線方式進(jìn)行消息交換,我們可以聯(lián)想下Java里面的IOC控制反轉(zhuǎn)模式,和通過ESB總線進(jìn)行交互的思路是很類似的,只有這樣才能夠?qū)崿F(xiàn)組件之間進(jìn)一步的解耦。 傳統(tǒng)的很多快速軟件開發(fā)平臺(tái)是完全不能符合SOA架構(gòu)風(fēng)格要求的,因?yàn)榛谀承┛焖匍_發(fā)平臺(tái)開發(fā)出來的應(yīng)用本身就是緊耦合和封閉的應(yīng)用。而基于SOA架構(gòu)風(fēng)格的平臺(tái)開發(fā)出來的應(yīng)用本身就是完全組件化和服務(wù)化的應(yīng)用,應(yīng)用內(nèi)部SOA化和松耦合,應(yīng)用和應(yīng)用之間也松耦合,應(yīng)用本身可復(fù)用的能力很容易通過服務(wù)方式暴露出來。 技術(shù)平臺(tái)和業(yè)務(wù)平臺(tái) 首先要說明技術(shù)平臺(tái)和業(yè)務(wù)平臺(tái)都是開發(fā)人員關(guān)注的平臺(tái),而應(yīng)用平臺(tái)可能是最終用戶關(guān)注的平臺(tái)??梢钥吹郊夹g(shù)平臺(tái)和業(yè)務(wù)平臺(tái)的劃分正好體現(xiàn)了業(yè)務(wù)和技術(shù)本身的一次解耦。 技術(shù)平臺(tái)只關(guān)注和業(yè)務(wù)完全無關(guān)的技術(shù)本身,將各種技術(shù)能力組件化和服務(wù)化,提供各種通用的基礎(chǔ)服務(wù)和技術(shù)服務(wù)。技術(shù)平臺(tái)提供一套完整的開發(fā)框架和開發(fā)環(huán)境,同時(shí)也提供一套完整的執(zhí)行環(huán)境。技術(shù)平臺(tái)既為產(chǎn)品服務(wù),也為業(yè)務(wù)平臺(tái)服務(wù)。 而細(xì)分到某個(gè)專業(yè)的業(yè)務(wù)域后可能出現(xiàn)業(yè)務(wù)平臺(tái),業(yè)務(wù)平臺(tái)也可以叫做產(chǎn)品平臺(tái),比如電信的BOSS平臺(tái),網(wǎng)管平臺(tái)都是很常見的業(yè)務(wù)平臺(tái)。那業(yè)務(wù)平臺(tái)和技術(shù)平臺(tái)最大的不同是業(yè)務(wù)平臺(tái)本身提供了開發(fā)多個(gè)產(chǎn)品都可復(fù)用的業(yè)務(wù)組件和業(yè)務(wù)能力。業(yè)務(wù)平臺(tái)本身是對多個(gè)同類產(chǎn)品通用業(yè)務(wù)能力的抽取,提煉和下沉。 應(yīng)用產(chǎn)品->產(chǎn)品平臺(tái)->技術(shù)平臺(tái),正好體現(xiàn)了可復(fù)用能力的逐層下移,下移的目的只有一個(gè)即最大限度的復(fù)用,而復(fù)用的好處是對通用能力統(tǒng)一管理和統(tǒng)一維護(hù)。我們可以試想下,如果沒有這種平臺(tái),當(dāng)我們面對N個(gè)產(chǎn)品開發(fā)對應(yīng)N套產(chǎn)品開發(fā)源代碼的時(shí)候,對用通用功能的修改調(diào)整和升級(jí)將是一件巨大的麻煩。 |
|