首先,需要知道什么是企業(yè)級(jí)應(yīng)用。
企業(yè)級(jí)應(yīng)用(enterprise applications),其實(shí)是一個(gè)軟件行業(yè)內(nèi)部通用的一個(gè)術(shù)語。如果解釋成通俗易懂的話來說,那就是一個(gè)企業(yè)范圍內(nèi)所使用的、基于計(jì)算機(jī)的穩(wěn)定的、安全的和高效的分布式信息管理系統(tǒng)。
對(duì)于企業(yè)級(jí)應(yīng)用而言它的分布式有兩種形式:B/S結(jié)構(gòu)和C/S結(jié)構(gòu)。由于瀏覽器的功能日益強(qiáng)大、網(wǎng)頁技術(shù)的日益流行和應(yīng)用服務(wù)器軟件和中間件產(chǎn)品的逐步成
熟,B/S結(jié)構(gòu)的企業(yè)級(jí)應(yīng)用已經(jīng)成為一種流行的趨勢(shì),所以在下面的討論中所謂的企業(yè)級(jí)應(yīng)用統(tǒng)一為基于B/S結(jié)構(gòu)的分布式企業(yè)信息系統(tǒng)。
一般說來企業(yè)級(jí)應(yīng)用都可以分為三層
持久層(Persistence Layer) 、
業(yè)務(wù)邏輯層(Business Logic Layer) 和
展現(xiàn)層(Presentation Layer ) 。
為什么要分這么幾個(gè)層次呢?
歸根結(jié)底主要原因只有一個(gè)——那就是提高軟件開發(fā)生產(chǎn)力,降低軟件開發(fā)成本,提高軟件產(chǎn)品質(zhì)量。
因?yàn)檐浖疽彩琴Y本公司,公司的主要目標(biāo)是盈利而不是科技發(fā)展。所以,公司的技術(shù)架構(gòu)的優(yōu)劣主要應(yīng)該體現(xiàn)在公司的生產(chǎn)成本和產(chǎn)品的質(zhì)量上。
對(duì)于降低軟件產(chǎn)品的開發(fā)成本是軟件產(chǎn)品出現(xiàn)以來所有軟件公司所追求的目標(biāo)。到目前為止,達(dá)到這個(gè)目標(biāo)的方式有這么幾種:
- 把軟件產(chǎn)品根據(jù)功能進(jìn)行分解,分別開發(fā):對(duì)于大的復(fù)雜系統(tǒng),如果沒有很好的分解開發(fā)的話,其結(jié)果是不可想象的?,F(xiàn)實(shí)中企業(yè)需要分開各個(gè)職能部門,它們的職責(zé)和業(yè)務(wù)是不同的,這樣開發(fā)中需要根據(jù)業(yè)務(wù)進(jìn)行任務(wù)分解,把大的系統(tǒng)分解成為小的業(yè)務(wù)系統(tǒng)。這樣才能夠?qū)崿F(xiàn)系統(tǒng)開發(fā)過程中的并行開發(fā),并且會(huì)培養(yǎng)業(yè)務(wù)專精人員,提高開發(fā)的效率。
-
業(yè)務(wù)系統(tǒng)根據(jù)技術(shù)架構(gòu)進(jìn)行分層開發(fā):分層的開發(fā)方式實(shí)現(xiàn)了人類對(duì)復(fù)雜事物的普遍處理方式——分而治之。通過把復(fù)雜的系統(tǒng)分解成為相對(duì)簡(jiǎn)單的獨(dú)立系統(tǒng),低耦
合的分解既可以實(shí)現(xiàn)開發(fā)人員的并行工作,又可以實(shí)現(xiàn)開發(fā)人員的任務(wù)分工。而且通過分層,對(duì)組件拼裝和流水化作業(yè)提供了理論和事實(shí)的基礎(chǔ)。
-
組件拼裝實(shí)現(xiàn)社會(huì)化分工:不必自己去創(chuàng)造輪子,直接付錢去買想要的輪子即可。這是從傳統(tǒng)的制造行業(yè)借鑒來的經(jīng)驗(yàn)。J2EE得到的廣泛認(rèn)同從實(shí)質(zhì)上體現(xiàn)了業(yè)界對(duì)這種方式的肯定。
-
過去經(jīng)驗(yàn)的積累和積累資源的重復(fù)利用:重用一直是一個(gè)爭(zhēng)議比較大的東西,爭(zhēng)論的雙方各執(zhí)一詞,各有道理也各有大師助陣,但是那更多的是在理論上和技術(shù)層面
上。理論和技術(shù)上的爭(zhēng)論對(duì)商業(yè)軟件開發(fā)是無用的。因?yàn)樯虡I(yè)化的軟件開發(fā),最重要的是提供優(yōu)質(zhì)的產(chǎn)品和服務(wù)并且能夠最大可能的獲取利潤。所以,拋開具體實(shí)現(xiàn)
方式不談,我個(gè)人覺得公司過去經(jīng)驗(yàn)的積累和積累資源的重復(fù)利用是有商業(yè)價(jià)值的。因?yàn)檐浖颈仨毜妹鎸?duì)開發(fā)人員流動(dòng)的問題,不管是升遷還是調(diào)動(dòng)還是跳槽,
軟件公司總會(huì)面對(duì)業(yè)務(wù)專精人員的流失問題。業(yè)務(wù)專精人員的流失造成的成本是要計(jì)算在開發(fā)成本中的,所以怎樣以固化的形式積累業(yè)務(wù)人員的經(jīng)驗(yàn),和過去解決問
題的方案的可重復(fù)利用以及新員工職業(yè)培訓(xùn)成本的降低在降低開發(fā)成本的方面是值得考慮的。
綜上所述,對(duì)于一個(gè)企業(yè)級(jí)應(yīng)用框架(還有人開發(fā)企業(yè)級(jí)應(yīng)用不用框架嗎?)而言,分層是提高開發(fā)效率、降低開發(fā)和培訓(xùn)成本的最佳實(shí)踐方案之一。
但是,為什么要分為
持久層(Persistence Layer) 、
業(yè)務(wù)邏輯層(Business Logic Layer) 和
展現(xiàn)層(Presentation Layer ) 3層呢?
其實(shí)這三層不過就是從三個(gè)不同的視角去看這個(gè)企業(yè)信息系統(tǒng)罷了。從數(shù)據(jù)的角度看,企業(yè)信息系統(tǒng)不外乎就是對(duì)數(shù)據(jù)的存取。從功能的角度看,企業(yè)信息系統(tǒng)就是
對(duì)現(xiàn)實(shí)中的業(yè)務(wù)邏輯操作的信息化抽象而從用戶的角度上看,它是一個(gè)人機(jī)接口,它可以接受輸入并且會(huì)對(duì)所做的輸入做出相應(yīng)的反應(yīng)。這三層從底向上實(shí)現(xiàn)了底層
計(jì)算機(jī)數(shù)據(jù)和頂層人的業(yè)務(wù)操作的跨越,一般說來,從概念上講,所有的企業(yè)級(jí)應(yīng)用框架都可以分成這三層,因?yàn)檫@三個(gè)視角是客觀的。但是這并不保證所有的企業(yè)
級(jí)應(yīng)用都能保證這三個(gè)層之間不發(fā)生耦合。