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