
對(duì)于一個(gè)企業(yè)應(yīng)用而言,
1.從業(yè)務(wù)表現(xiàn)的角度是由不同的功能(或功能模塊,如客戶(hù)管理、產(chǎn)品管理、訂單管理等等)組合而成的
2.從系統(tǒng)結(jié)構(gòu)的角度則每個(gè)功能又分為頁(yè)面(用戶(hù)界面)、流程(界面流轉(zhuǎn)控制)、業(yè)務(wù)處理、數(shù)據(jù)等不同的層次
3.從技術(shù)實(shí)現(xiàn)的角度這些層次最終能夠運(yùn)轉(zhuǎn)起來(lái)滿(mǎn)足功能的要求又依賴(lài)于代碼、數(shù)據(jù)和運(yùn)行環(huán)境等軟件基本要素。
以下是一個(gè)企業(yè)應(yīng)用典型的構(gòu)成要素圖:

實(shí)際上,一個(gè)企業(yè)應(yīng)用系統(tǒng)的應(yīng)用架構(gòu)就是通過(guò)功能、層次、軟件要素這三個(gè)相互影響的維度有機(jī)結(jié)合形成的。沒(méi)有人懷疑架構(gòu)對(duì)于企業(yè)應(yīng)用的重要意義,某種意義上,架構(gòu)可以說(shuō)是系統(tǒng)的靈魂。良好的應(yīng)用架構(gòu)取決于對(duì)這三個(gè)維度的有效合理的切分和組合。
傳統(tǒng)的J2EE應(yīng)用項(xiàng)目,由于已經(jīng)提供了JAVA程序語(yǔ)言和對(duì)象級(jí)接口的數(shù)據(jù)傳遞方式和基于JVM的java運(yùn)行環(huán)境這些軟件要素,應(yīng)用架構(gòu)需要考慮的是從軟件層次上主要遵循MVC的設(shè)計(jì)模式,在功能實(shí)現(xiàn)上通過(guò)合理的對(duì)象設(shè)計(jì)以及模式應(yīng)用來(lái)進(jìn)行保證。
這就意味著,對(duì)一個(gè)J2EE企業(yè)應(yīng)用項(xiàng)目組而言,既需要非常熟悉相關(guān)的業(yè)務(wù)領(lǐng)域知識(shí),同時(shí)對(duì)技術(shù)環(huán)境的熟悉程度和把握能力都要求較高,這樣對(duì)項(xiàng)目的實(shí)施造成了很大的壓力。
所以,在Java的開(kāi)源世界里,有很多技術(shù)組織在研究架構(gòu)技術(shù),我們常見(jiàn)的像Struts、Spring、Hibernate都是屬于這種范疇,這些開(kāi)源架構(gòu)因良好解決了我們應(yīng)用架構(gòu)設(shè)計(jì)的很多問(wèn)題而備受推崇,然而,我們也清醒認(rèn)識(shí)到,這些架構(gòu)要么只解決了部分層次的問(wèn)題(如Strtus、Hibernate等)、要么就是提供了完整架構(gòu)(如Spring),但沒(méi)有與之配套的完整的工具的支持,使得在項(xiàng)目中,整合這些架構(gòu)成為項(xiàng)目的應(yīng)用架構(gòu)并為之建立與之匹配的一套開(kāi)發(fā)支持環(huán)境成為了新的問(wèn)題,對(duì)于項(xiàng)目完成后的應(yīng)用可維護(hù)性更是無(wú)暇顧及。
面向構(gòu)件的架構(gòu)提供一套體系完整的應(yīng)用架構(gòu):
1.從應(yīng)用功能維度上,是通過(guò)構(gòu)件包來(lái)承載業(yè)務(wù)功能的,一個(gè)應(yīng)用可以由多個(gè)構(gòu)件包構(gòu)成,每個(gè)構(gòu)件包實(shí)現(xiàn)了一組具有相關(guān)性的業(yè)務(wù)功能,實(shí)際上可以將構(gòu)件包理解為業(yè)務(wù)功能分解后的功能模塊。
2.從軟件層次維度上,每個(gè)構(gòu)件包又按照MVC的思想抽象形成了不同層次的構(gòu)件元素,由上而下包括頁(yè)面構(gòu)件層、展現(xiàn)構(gòu)件層、業(yè)務(wù)構(gòu)件層、運(yùn)算構(gòu)件層、數(shù)據(jù)構(gòu)件層,每個(gè)層次具有鮮明的特征,完成相應(yīng)的使命,同時(shí)引入了具有很強(qiáng)擴(kuò)展能力的XML總線(xiàn)技術(shù),實(shí)現(xiàn)各個(gè)層次之間的數(shù)據(jù)傳遞,并提升各個(gè)層次數(shù)據(jù)的擴(kuò)展能力。構(gòu)件層次結(jié)構(gòu)圖如下:

針對(duì)以上構(gòu)件層次結(jié)構(gòu)圖中的各個(gè)要素的作用和特征詳細(xì)描述如下:
數(shù)據(jù)構(gòu)件層采用X-R Mapping技術(shù),主要實(shí)現(xiàn)與企業(yè)系統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)實(shí)體映射,達(dá)到數(shù)據(jù)持久層管理的目的,降低應(yīng)用與數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)庫(kù)類(lèi)型的耦合度,提升企業(yè)應(yīng)用在數(shù)據(jù)層次的擴(kuò)展能力。另外,數(shù)據(jù)層還提供了數(shù)據(jù)字典的管理能力,它使得應(yīng)用層的業(yè)務(wù)配置具有強(qiáng)大的靈活性,基本數(shù)據(jù)屬性的變化都可以通過(guò)參數(shù)配置完成。
運(yùn)算構(gòu)件層實(shí)際上是對(duì)計(jì)算機(jī)處理操作的構(gòu)件化封裝,因?yàn)閼?yīng)用的業(yè)務(wù)功能最終都是通過(guò)計(jì)算機(jī)的計(jì)算能力完成的,計(jì)算處理一定是與代碼相關(guān)的,而且依賴(lài)于具體的計(jì)算機(jī)語(yǔ)言,正因?yàn)檫@個(gè)層次具有與業(yè)務(wù)無(wú)關(guān)性,是可以預(yù)先實(shí)現(xiàn)的,面向構(gòu)件技術(shù)體系可以提供預(yù)制的構(gòu)件庫(kù),使得在開(kāi)發(fā)一個(gè)企業(yè)應(yīng)用時(shí),基本上業(yè)務(wù)處理所需要的計(jì)算功能都已經(jīng)提供了。當(dāng)然,構(gòu)件可以進(jìn)行擴(kuò)展,在即使應(yīng)用中不夠的情況下,也可以使用JAVA開(kāi)發(fā)出新的運(yùn)算構(gòu)件。總體而言,在開(kāi)發(fā)一個(gè)企業(yè)應(yīng)用過(guò)程中,在這個(gè)層次上花費(fèi)的工作量將變得少而且簡(jiǎn)單。
業(yè)務(wù)構(gòu)件層主要實(shí)現(xiàn)應(yīng)用邏輯的處理過(guò)程,其實(shí)現(xiàn)方式是通過(guò)構(gòu)件組裝環(huán)境將許多運(yùn)算構(gòu)件通過(guò)可視化方式組合成復(fù)雜的業(yè)務(wù)處理過(guò)程(應(yīng)用邏輯),提高開(kāi)發(fā)、測(cè)試、維護(hù)效率。傳統(tǒng)方式下采用代碼實(shí)現(xiàn)業(yè)務(wù)邏輯的過(guò)程變成了畫(huà)業(yè)務(wù)流程圖的過(guò)程。也使得了應(yīng)用的邏輯與具體的代碼實(shí)現(xiàn)進(jìn)行了有效的分離。
展現(xiàn)構(gòu)件層是連接用戶(hù)界面與業(yè)務(wù)處理的中間層次,例如頁(yè)面的某個(gè)處理請(qǐng)求(按鈕或者連接)將會(huì)激活相應(yīng)的展現(xiàn)構(gòu)件,展現(xiàn)構(gòu)件將用戶(hù)提交的數(shù)據(jù)傳遞給相應(yīng)的業(yè)務(wù)構(gòu)件進(jìn)行調(diào)用,根據(jù)調(diào)用的返回,再定位到另一個(gè)用戶(hù)界面,并把業(yè)務(wù)處理的返回?cái)?shù)據(jù)傳遞到相應(yīng)頁(yè)面上。
頁(yè)面構(gòu)件層主要提供對(duì)應(yīng)用系統(tǒng)用戶(hù)界面的支持。
XML數(shù)據(jù)總線(xiàn)是面向構(gòu)件技術(shù)體系一個(gè)很重要的技術(shù)特性,通過(guò)XML的DOM方式,封裝了應(yīng)用的三大數(shù)據(jù)區(qū):Session數(shù)據(jù)區(qū)(SessionContext)、Request數(shù)據(jù)區(qū)(RequestContext)、業(yè)務(wù)處理數(shù)據(jù)區(qū)(BizContext),構(gòu)成整個(gè)應(yīng)用的數(shù)據(jù)總線(xiàn)區(qū)。這樣,在面向構(gòu)件應(yīng)用中,各種數(shù)據(jù)都被規(guī)范成了XML的格式,而數(shù)據(jù)的傳遞則采用Xpath的尋址方式。而這種數(shù)據(jù)傳遞方式使得應(yīng)用開(kāi)發(fā)中對(duì)接口的處理與原來(lái)基于對(duì)象接口的方式有了較大差異。構(gòu)件的接口相當(dāng)于確定了接口數(shù)據(jù)在總線(xiàn)中的固定位置,運(yùn)行時(shí)根據(jù)不同的實(shí)例,對(duì)應(yīng)位置上的內(nèi)容可能不一樣,而傳統(tǒng)的接口只確定接口的對(duì)象類(lèi)型和對(duì)象的變量名,在調(diào)用具體接口時(shí)完成對(duì)象的實(shí)例化。
通過(guò)上面的描述,我們可以看到這個(gè)架構(gòu)的2個(gè)重要特點(diǎn):
1)應(yīng)用邏輯與代碼是相對(duì)分離的。應(yīng)用系統(tǒng)中的應(yīng)用邏輯是體現(xiàn)企業(yè)業(yè)務(wù)特點(diǎn)和經(jīng)營(yíng)管理理念的,是企業(yè)業(yè)務(wù)知識(shí)和管理流程的載體,而企業(yè)的業(yè)務(wù)內(nèi)容和管理模式是動(dòng)態(tài)成長(zhǎng)的,這就需要對(duì)應(yīng)用系統(tǒng)進(jìn)行維護(hù)以適應(yīng)這種變化。當(dāng)應(yīng)用邏輯獨(dú)立于具體的代碼實(shí)現(xiàn)后,通過(guò)圖形化的方式表達(dá)的應(yīng)用邏輯就變得易于進(jìn)行調(diào)整以適應(yīng)新的變化。
2)應(yīng)用邏輯與數(shù)據(jù)是相對(duì)分離的。傳統(tǒng)的方式下,代碼、業(yè)務(wù)邏輯、數(shù)據(jù)是三位一體的,當(dāng)數(shù)據(jù)通過(guò)XML總線(xiàn)方式獨(dú)立于應(yīng)用邏輯后,將使得應(yīng)用系統(tǒng)在數(shù)據(jù)的擴(kuò)展能力上有了較大的提升。
僅僅有這樣一個(gè)應(yīng)用架構(gòu)是不夠的,需要有與之配套的工具或環(huán)境的支持,這種支持,就是由EOS產(chǎn)品的各個(gè)部分來(lái)提供的,例如,通過(guò)EOS Studio,能夠?qū)崿F(xiàn)基于構(gòu)件包的各種層次構(gòu)件的可視化開(kāi)發(fā);通過(guò)EOS Server,實(shí)現(xiàn)對(duì)可視化構(gòu)件的解釋?zhuān)怪蔀镴2EE環(huán)境的標(biāo)準(zhǔn)分布式應(yīng)用,另外,實(shí)現(xiàn)對(duì)運(yùn)行時(shí)數(shù)據(jù)總線(xiàn)的管理;通過(guò)EOS Manager,實(shí)現(xiàn)對(duì)應(yīng)用的部署和管理、監(jiān)控。
當(dāng)這種面向構(gòu)件的架構(gòu)與一體化的配合環(huán)境結(jié)合起來(lái)后,EOS的優(yōu)勢(shì)就顯現(xiàn)出來(lái):
分層的構(gòu)件體系和XML總線(xiàn)使得應(yīng)用系統(tǒng)架構(gòu)具有了良好的開(kāi)放性和擴(kuò)展能力
一體化可視化的開(kāi)發(fā)運(yùn)行環(huán)境屏蔽了復(fù)雜的技術(shù)細(xì)節(jié)
提高了開(kāi)發(fā)效率
方便于系統(tǒng)的后期維護(hù)
CIO頻道人物視窗
CIO頻道方案案例庫(kù)
大數(shù)據(jù)建設(shè)方案案例庫(kù)
電子政務(wù)建設(shè)方案案例庫(kù)
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫(kù)
商務(wù)智能建設(shè)方案案例庫(kù)
系統(tǒng)集成類(lèi)軟件信息研發(fā)企業(yè)名錄