|
在日常業(yè)務(wù)中有些事物并不時(shí)常改變,比如說(shuō)美國(guó)加油站一直以來(lái)都在用加侖為單位銷售汽油,餐館依然使用菜單,牙科醫(yī)生還是會(huì)每六個(gè)月就銷售一次清潔用品。每種業(yè)務(wù)都會(huì)有一些方面不時(shí)常變動(dòng),而這部分往往占據(jù)了是業(yè)務(wù)的絕大部分。我們就稱這些為核心業(yè)務(wù)功能(_core business functions)。業(yè)務(wù)中的也存在一些常常變化的事物。價(jià)格、稅率、貨品分類、新產(chǎn)品、新市場(chǎng)策略、廣告、新業(yè)務(wù)領(lǐng)域、新領(lǐng)域的客戶等等。的確,為了生存,企業(yè)必定要變化,而且是快速的變化。不過(guò),至關(guān)重要的是要那些變化影響不到核心業(yè)務(wù)功能。
軟件開(kāi)發(fā)人員早就明白變化快速的軟件模塊要與保持不變的部分相分離的道理。這項(xiàng)原則在獨(dú)立的程序或系統(tǒng)之中有時(shí)稱作是“共同封閉原則”。而運(yùn)用在企業(yè)的信息管理系統(tǒng)之中就成了SOA。SOA是把保持不變的核心業(yè)務(wù)功能剝離成一個(gè)個(gè)獨(dú)立的服務(wù)的實(shí)踐。這些服務(wù)是被多個(gè)展現(xiàn)層程序所調(diào)用的粉飾了的方法。展現(xiàn)層程序是那些容易變化的程序,用來(lái)展示數(shù)據(jù)給用戶或是從用戶處接收數(shù)據(jù)。
我們通過(guò)思考InterNET上的商鋪來(lái)幫助搞明白。客戶通過(guò)瀏覽器來(lái)與商鋪站點(diǎn)的展現(xiàn)程序相交互。展現(xiàn)程序解析了客戶的操作,然后調(diào)用一些像是獲取當(dāng)前分類的數(shù)據(jù)或是為注冊(cè)客戶要求的服務(wù)。請(qǐng)注意,這些服務(wù)并不知道正在與web站點(diǎn)交互。他們就像是與厚客戶端交互,或是3270的綠屏界面(3270是IBM的一種大型機(jī)系統(tǒng),其上應(yīng)用程序常以綠屏的終端形式出現(xiàn),因而常稱作“綠屏”應(yīng)用程序)。他們只是簡(jiǎn)單返回那些web系統(tǒng)可能會(huì)用到的數(shù)據(jù),并將其格式標(biāo)準(zhǔn)化。
SOA其實(shí)也就是這些了,其余部分就是一些細(xì)節(jié)。在最高的抽象層面上,SOA就是將頻繁變化與不常變化的元素分離,僅此而已。但為什么這一點(diǎn)會(huì)變得那么重要?讓我們?cè)賮?lái)看看InterNET上的商鋪。它展現(xiàn)給用戶一個(gè)分類,從而使得用戶能夠?qū)⑽锲芬迫牖蚴且瞥鲆粋€(gè)購(gòu)物車,并且最終實(shí)現(xiàn)訂購(gòu)。這些內(nèi)容的展現(xiàn)卻很善變,市場(chǎng)人士喜歡令其時(shí)常變化。比如說(shuō),他們可能會(huì)想把購(gòu)物車比作是邊框上的滾動(dòng)欄。他們想要或多或少的在產(chǎn)品列表上的附加說(shuō)明。他們想要不同的配色,字體和布局方式。確實(shí)他們想要applets、JStart Clients、Ajax,以及無(wú)數(shù)其他的展現(xiàn)選擇。可是所有的這些都與封裝為服務(wù)的核心業(yè)務(wù)功能毫無(wú)關(guān)系。無(wú)論展現(xiàn)層的風(fēng)吹雨打,這些獲取分類以及注冊(cè)流程卻固定不變。這就是為何分離顯得這么重要。它確保了信息處理在展現(xiàn)的飄搖不定中得到保護(hù)。
不過(guò)展現(xiàn)并非唯一易變的,業(yè)務(wù)功能也是一樣。再次考慮下我們的商鋪,或許在銷售產(chǎn)品中需要增加一種優(yōu)質(zhì)紅酒。而銷售煙酒則需要驗(yàn)證消費(fèi)者的年齡。假定我們有了能提供驗(yàn)證的Service。而每當(dāng)有煙酒訂單的時(shí)候,這個(gè)Service就會(huì)調(diào)用到。呼叫此service的決定并非來(lái)自于展現(xiàn)層,當(dāng)然也不屬于業(yè)務(wù)。而是某種特定手續(xù)所需的業(yè)務(wù)過(guò)程。業(yè)務(wù)過(guò)程變動(dòng)就像是兔子跳動(dòng)那樣躁動(dòng)不安。如果業(yè)務(wù)成長(zhǎng)了,他們會(huì)為其業(yè)務(wù)流程增加更多的步驟以及分支。處理過(guò)程中需要調(diào)用到的那些服務(wù)無(wú)序改變,可是處理的過(guò)程卻需要。因此,我們就需要將業(yè)務(wù)過(guò)程從展現(xiàn)層以及業(yè)務(wù)service中分離出來(lái)。如果它出現(xiàn)在單一的程序中,Smalltalk語(yǔ)言對(duì)這樣的分離有個(gè)稱謂,就叫做Mode-View-Controller。
值得注意的是,這么多的技術(shù)都殊途同歸的與SOA有著關(guān)聯(lián)。這是因?yàn)镾OA并非什么特定的技術(shù),而是某種將優(yōu)化的業(yè)務(wù)功能于易變的過(guò)程與展現(xiàn)相解藕的方法學(xué)。這就是企業(yè)軟件的MVC。
it知識(shí)庫(kù):SOA歸根到底是什么?,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。