正文

業(yè)務邏輯層:組織(3)

ASP.NET設計模式 作者:(美)Scott Millett


可以看出,整個業(yè)務實例被封裝到一個單獨的方法中。BookHolidayFor方法處理許多責任,如數(shù)據(jù)檢索和持久化,以及用來確定是否可以休假的業(yè)務邏輯。這種過程式編程風格違背了面向對象編程的基本理念。如果邏輯始終非常簡單、應用程序較小且易于管理,那么該方式沒有問題。

如果應用程序較小,而且業(yè)務邏輯簡單,不需要采用完全的面向對象方法,Transaction Script模式可能比較合適。但是,如果應用程序規(guī)模會變大,那就可能需要重新考慮業(yè)務邏輯結構并尋求更具伸縮性的模式,如Active Record模式,這正是4.1.2小節(jié)的主題。

4.1.2  Active Record

Active Record模式是一種流行的模式,尤其在底層數(shù)據(jù)庫模型匹配業(yè)務模型時它特別有效。通常,數(shù)據(jù)庫中的每張表都對應一個業(yè)務對象。業(yè)務對象表示表中的一行,并且包含數(shù)據(jù)、行為以及持久化該對象的工具,此外還有添加新實例和查找對象集合所需的方法。圖4-2展示一個博客應用程序中的Post和Comment對象如何與它們對應的數(shù)據(jù)庫表關聯(lián)起來。該圖還說明Post中含有一個Comment對象集合。

在Active Record模式中,每個業(yè)務對象均負責自己的持久化和相關的業(yè)務邏輯。

Active Record模式非常適用于在數(shù)據(jù)模型和業(yè)務模型之間具有一對一映射關系的簡單應用程序,如博客或論壇引擎。如果已經有數(shù)據(jù)庫模型或者希望采用“數(shù)據(jù)優(yōu)先”的方法來構建應用程序,這也是一個可用的好模式。因為業(yè)務對象與數(shù)據(jù)庫中的表具有一對一映射關系,而且均具有相同的創(chuàng)建、讀取、更新和刪除(CRUD)方法,所以可以使用代碼生成工具自動生成業(yè)務模型。優(yōu)秀的代碼生成工具還會內置所有的數(shù)據(jù)庫驗證邏輯,以確保只有有效的數(shù)據(jù)才會持久化。在第7章中討論如何持久化業(yè)務對象時將研究業(yè)務對象自動化生成以及使用Active Record模式的框架。與Transaction Script模式一樣,Active Record模式也非常簡單而且易于掌握。

Active Record模式隨著基于數(shù)據(jù)庫的Web應用程序而流行,其中一個典型就是結合了MVC模式(第8章)和Active Record ORM(第7章)的Ruby on Rails框架。在.NET領域,構建在NHibernate(第7章)之上的Castle ActiveRecord項目是最流行的開放源代碼Active Record框架之一,本書將使用該項目以及ASP.NET MVC應用程序來構建一個簡單的博客網站。因為博客網站只包含少量的業(yè)務邏輯,因此在業(yè)務對象和數(shù)據(jù)模型之間存在較好的相關性,Active Record模式此時就是一個很好的選擇。


上一章目錄下一章

Copyright ? 讀書網 www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號