標籤:
表現層
表現層負責向終端使用者展示應用程式的控制方式以及資料。它還要負責所有資訊的布局和格式。今天,商務應用程式最流行的表現方式應該算是Web前端了,它使用HTML和JavaScript並通 過Web瀏覽器來滿足使用者的介面外觀需求。
Web應用程式的優勢包括跨平台相容性、易部署和可擴充。amazon.com就是Web應用程式的—個極好的例子,它允許你線上購書。這就是Web應用程式的一個絕佳應用,因為不可能要求用 戶為了買一本書而去下載一個應用程式。
當需要進階的使用者控制項或者複雜的資料操縱時,Web應用程式通常就無法勝任了。在這些情況下,使用本機作業系統小組件(如tab、table、treeView和內嵌物件)的富用戶端就體現出了 它的優勢。富用戶端允許一個強大得多的使用者介面,但它往往更難部署,且要達到與Web應用程式相同層級的效能和安全性需要開發人員花費更多的精力。富用戶端技術的例子包括Java的Swing等。
最近,Web應用程式和富用戶端這兩個概念被混合了起來,形成了所謂的“混合型用戶端”, “混合型用戶端”試圖同時獲得Web應用程式和富用戶端兩者的優點。一些非常小且使用了一些髙級控制項的富用戶端可能通過Web瀏覽器被悄悄地下載到使用者的案頭。這個混合型的富用戶端不包含任何商務邏輯,甚至可能連使用者介面的布局都不是內建好的。相反,應用程式的介面外觀以 及可用的業務功能都是通過一個Web服務,或者把XML用作用戶端與伺服器間介面的Web應用程式來配置的。這種方式唯一的缺點就是開發和部署這樣的應用程式需要額外的軟體。
接下來當然就有了所謂混合型表現層的典型案例,即Ajax。它曾經是Asynchronous JavaScript and XML (非同步JavaScript和XML)的首字母縮寫,但現在所有 人都意識到它既不需要非同步,也並非只能使用XML,所以現在Ajax代表的僅僅是“一種基於Web 的富客戶介面,由大量非常巧妙的JavaScript所驅動”。Ajax是使用舊技術構建內容豐富且互動性強的使用者介面的一種新方法。Google很好地檢釋了Ajax技術,例如在Gmail、Google Maps和Google Calendar這樣的應用程式中就充分利用了這種技術。
MyBatis既可用於Web應用程式和富用戶端應用程式,也可用於混合型應用程式。雖然表現層通常不會直接與持久化架構“交流”,但使用者介面設計時的某些決定還是會影響你對持久層的需 求。舉個例子,考慮一個Web應用程式,它需要處理一個包含5000條記錄的大型列表。我們不可能需要同時顯示出所有這5000條記錄,而且如果我們不是立即需要使用它們,那麼同時從資料 庫中載入這5000條記錄也不是什麼好主意。一個更好的方案可能是一次只載入和顯示10條記錄。 這樣的話,持久層就需要能夠在返回資料的數量上允許一定的靈活性,甚至提供選擇和擷取我們 希望的10條記錄的能力。這樣就可以避免不必要的對象建立和資料擷取,減少應用程式的網路訪 問量和記憶體需求,進而提高應用程式的效能。MyBatis允許只查詢某個特定範圍內的資料,這樣的 特性就可以協助我們達到以上這些目的。
商務邏輯層
應用程式的商務邏輯層描述了應用程式所能提供的“粗粒度”的服務。正是這個原因,業 務邏輯層中的類有時也被稱為服務類。從較高的層次來看,任何人都應該能看懂商務邏輯層中的類和方法進而明白系統到底要做什麼。舉個例子,在一個銀行應用程式中,商務邏輯層可能就會包含名為TellerService的類,其中包括像openAccount ()、deposit () withdrawal () 和getBalance()這樣的方法。這些都是非常大的功能,涉及複雜的資料庫互動甚至可能是與其他系統的互動。這些方法太重了,不適合放在領域類中,否則代碼很可能馬上就會變得耦合、 並且通常會難以管理。解決方案就是將這些粗粒度的業務方法從與它們相關的業務物件模型中分離出來。這種商務邏輯類與物件模型類的分離有時也被稱為“名詞與動詞的分離‘‘。
純物件導向論者可能會說,這樣的設計不夠物件導向,將業務方法直接放在相關的領域類中才更加物件導向。不論哪種方式更物件導向,能將關注點分離才是一個更好的設計選擇。 其中的主要原因還是在於業務方法通常都非常複雜。它們通常都涉及不止一個類,處理不止 一種基礎組件這些基礎組件可能包括資料庫、訊息佇列和其他系統。更重要的是,一個業務功能往往涉及許多領域類,那麼該方法到底應該屬於哪個類呢, 的確難以決定。也正是由於這些原因,粗粒度的業務功能最好還是實現為商務邏輯層中某個類的方法。
不要害怕把那些粒度更細的商務邏輯放到相關的領域類中。商務邏輯層中那些粗粒度的服務 方法可以自由地調用內建在領域類中的細粒度的純邏輯方法。
在我們的分層架構中,商務邏輯層是持久層服務的消費者。它調用持久層的方法來擷取資料和修改資料。商務邏輯層也是事務定界的最佳場所,因為其中定義的粗粒度業務功能可以供許多 不同的使用者介面使用,甚至還可能被像Web服務這樣的一些其他介面使用。
系列文章:
MyBatis知多少(1)
MyBatis知多少(2)
MyBatis知多少(3)
MyBatis知多少(4)MyBatis的優勢
MyBatis知多少(5)業務物件模型
MyBatis知多少(6)表現層與商務邏輯層