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