art 1 層
層(layer)這個概念在計算機領域是非常了不得的乙個概念。計算機本身就體現了一種層的概念:系統呼叫層、裝置驅動層、作業系統層、cpu指令集。每個層都負責自己的職責。網路同樣也是層的概念,最著名的osi的七層協議。
層到了軟體領域也一樣好用。為什麼呢?我們看看使用層技術有什麼好處:
● 你使用層,但是不需要去了解層的實現細節。
● 可以使用另一種技術來改變基礎的層,而不會影響上面的層的應用。
● 可以減少不同層之間的依賴。
● 容易制定出層標準。
● 底下的層可以用來建立頂上的層的多項服務。 當然,層也有弱點:
● 層不可能封裝所有的功能,一旦有功能變動,勢必要波及所有的層。
● 效率降低。
當然,層最難的乙個問題還是各個層都有些什麼,以及要承擔何種責任。
典型的三層結構
三層結構估計大家都很熟悉了。就是表示(presentation)層, 領域(domain)層, 以及基礎架構(infrastructure)層。
表示層邏輯主要處理使用者和軟體的互動。現在最流行的莫過於視窗圖形介面(wimp)和基於html的介面了。表示層的主要職責就是為使用者提供資訊,以及把使用者的指令翻譯。傳送給業務層和基礎架構層。
基礎架構層邏輯包括處理和其他系統的通訊,代表系統執行任務。例如資料庫系統互動,和其他應用系統的互動等。大多數的資訊系統,這個層的最大的邏輯就是儲存持久資料。
還有乙個就是領域層邏輯,有時也被叫做業務邏輯。它包括輸入和儲存資料的計算。驗證表示層來的資料,根據表示層的指令指派乙個基礎架構層邏輯。
領域邏輯中,人們總是搞不清楚什麼事領域邏輯,什麼是其它邏輯。例如,乙個銷售系統中有這樣乙個邏輯:如果本月銷售量比上個月增長10%,就要用紅色標記。要實現這個功能,你可能會把邏輯放在表示層中,比較兩個月的數字,如果超出10%,就標記為紅色。
這樣做,你就把領域邏輯放到了表示層中了。要分離這兩個層,你應該現在領域層中提供乙個方法,用來比較銷售數字的增長。這個方法比較兩個月的數字,並返回boolean型別。表示層則簡單的呼叫該方法,如果返回true,則標記為紅色。
例子 層技術不存在說永恆的技巧。如何使用都要看具體的情況才能夠決定,下面我就列出了三個例子:
例子1:乙個電子商務系統。要求能夠同時處理大量使用者的請求,使用者的範圍遍及全球,而且數字還在不斷增長。但是領域邏輯很簡單,無非是訂單的處理,以及和庫存系統的連線部分。
這就要求我們1、表示層要友好,能夠適應最廣泛的使用者,因此採用html技術;2、支援分布式的處理,以勝任同時幾千的訪問; 3、考慮未來的公升級。
例子2:乙個租借系統。系統的使用者少的多,但是領域邏輯很複雜。這就要求我們製作乙個領域邏輯非常複雜的系統,另外,還要給他們的使用者提供乙個方便的輸入介面。這樣,wimp是乙個不錯的選擇。
例子3:簡單的系統。非常簡單,使用者少、邏輯少。但是也不是沒有問題,簡單意味著要快速交付,並且還要充分考慮日後的公升級。因為需求在不斷的增加之中。
J2EE專案架構最佳實踐
基於專案的最差實踐,可以總結出一套專案架構的最佳實踐原則以便今後的復用和改進。原則1.時間總是非常緊,需求總是在變化,技術問題總是層出不窮,千萬不要認為軟體工程的問題不會發生在規範的公司和專案。每次一定要根據自己所處的位置作出正確的評估,比如專案經理做評估要留出足夠的時間buffer,開發人員應當正...
J2EE專案架構最佳實踐
基於專案的最差實踐,可以總結出一套專案架構的最佳實踐原則以便今後的復用和改進。原則1.時間總是非常緊,需求總是在變化,技術問題總是層出不窮,千萬不要認為軟體工程的問題不會發生在規範的公司和專案。每次一定要根據自己所處的位置作出正確的評估,比如專案經理做評估要留出足夠的時間buffer,開發人員應當正...
步入J2EE架構和過程(2)
4 物件設計 在架構規範的指導下,設計從技術上擴充套件和修改了分析結果。雖然分析階段的領域物件建模應該與技術細節無關,但是物件設計完全依賴於技術因素,包括平台 語 言的型別和架構開發階段選擇的 商。分析時,抬頭望著星星,但在設計階段,則要腳踏實地。理論上,為了維持業務物件的基本屬性和行為,除非絕對必...