服務(wù)在SOA的架構(gòu)體系中是處在一個(gè)核心的地位,SOA架構(gòu)體系中的所有基礎(chǔ)設(shè)施都是圍繞著服務(wù)來(lái)轉(zhuǎn)。SOA服務(wù)是為了提供業(yè)務(wù)邏輯和數(shù)據(jù)的一系列的遠(yuǎn)程調(diào)用,這個(gè)定義可能不是很準(zhǔn)確,但從技術(shù)角度上來(lái)看,它還是能說(shuō)明一些問題的。
在SOA服務(wù)從事務(wù)的角度上看,我們會(huì)把服務(wù)分有原子服務(wù)和組合服務(wù)。原子服務(wù)主要是由各個(gè)應(yīng)用系統(tǒng)提供的一些數(shù)據(jù)和業(yè)務(wù)邏輯的一個(gè)最小的單元。我們可能通過BPM和一些建模工具對(duì)這些原子服務(wù)進(jìn)行組合,獲得一個(gè)組合服務(wù)。組合服務(wù)也會(huì)為兩種形式,一種為有狀態(tài)的,它主要是把分離出單個(gè)應(yīng)用系統(tǒng)中的工作流,讓企業(yè)有一個(gè)統(tǒng)一的流程定義的過程,通過重用的不同原子服務(wù),可以達(dá)到水平整合企業(yè)內(nèi)部流程的能力,也就是我們常提到的BPR(Business Process Reengineering/Business Process Re-engineering,業(yè)務(wù)流程重組)。另一種形式是無(wú)狀態(tài)的,它只是一個(gè)個(gè)服務(wù)的互相調(diào)用,來(lái)成生一個(gè)組合服務(wù),在重用原有的業(yè)務(wù)邏輯的情況下快速的適應(yīng)系統(tǒng)需求的變化。
不管是哪一種類型的組合服務(wù),都會(huì)涉及到原子服務(wù)的粒度的問題。我個(gè)人覺得服務(wù)的粒度的問題應(yīng)該SOA體系架構(gòu)應(yīng)用的好與壞的一個(gè)非常重要的因素。為了解決這個(gè)問題可能在整個(gè)公司的層面可能需要組成一個(gè)委會(huì)來(lái),統(tǒng)一的對(duì)服務(wù)進(jìn)行定義。還有一方面就是我們應(yīng)該整理出一些方法論,在這里此之前我們應(yīng)該有一些概念上的認(rèn)識(shí)。
我們應(yīng)該把服務(wù)從功能上會(huì)為兩類,一類是為了提供一些業(yè)務(wù)邏輯的,一類是為了提供數(shù)據(jù)轉(zhuǎn)輸。我們應(yīng)該對(duì)不同的服務(wù)的類型使用不同的粒度,
如果是業(yè)務(wù)邏輯,我們當(dāng)然希望,業(yè)務(wù)邏輯的原子服務(wù)能盡量的小,這樣才能達(dá)到一個(gè)更好重用的目的,但這樣會(huì)帶來(lái)很高的管理成本和性能的成本,在定義一個(gè)以業(yè)務(wù)邏輯為主的服務(wù)的時(shí)候,我們應(yīng)該找到一個(gè)平衡點(diǎn),這個(gè)平衡點(diǎn)在不同的企業(yè)或者環(huán)境下都可能是不一樣的,我們不能使用一種很死板的思維來(lái)把一個(gè)企業(yè)的服務(wù)粒度直接套到另一個(gè)企業(yè)中去,我們應(yīng)該在實(shí)踐中找到一個(gè)方法論,來(lái)指導(dǎo)我們的服務(wù)粒度的拆分。
如果主要是為了提供數(shù)據(jù)傳輸?shù)哪芰?,我們?dāng)然希望這個(gè)粒度大一點(diǎn)比較好,比如,要查詢一個(gè)合同,我們當(dāng)然希望把所有的合同信息都查出來(lái),這樣不同的服務(wù)使用這個(gè)原子服務(wù)時(shí),可以根據(jù)自己的需要來(lái)獲取合同的信息。這當(dāng)然還會(huì)帶來(lái)一個(gè)安全的問題,如一個(gè)合同有一些保密信息,比如一些關(guān)于錢的部分,并不能讓所有的服務(wù)都可以看到。這時(shí)候應(yīng)該怎么處理呢,這時(shí)候,我們應(yīng)該使用ESB的過濾器,根據(jù)不同的系統(tǒng)對(duì)信息進(jìn)行一下過濾。因?yàn)閿?shù)據(jù)傳輸?shù)姆?wù),在EAI這樣的企業(yè)應(yīng)用集成已經(jīng)用得很多了,所以,相對(duì)來(lái)說(shuō)比上一類的粒度來(lái)說(shuō)還是比較容易去定義的。
聯(lián)系客服