MyBatis知多少(6)表現層與業務邏輯層

 

 

 

 

 

 

 

 

 

 

 

 

 

表現層html

  表現層負責向最終用戶展現應用程序的控制方式以及數據。它還要負責全部信息的佈局和格式。今天,商業應用程序最流行的表現方式應該算是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)業務對象模型

相關文章
相關標籤/搜索