一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

走向ASP.NET架構設計——第四章—業務層分層架構(中篇)

  在上一篇文章中,我們討論了兩種組織業務邏輯的模式:Transaction Script和Active Record。在本篇中開始講述Domain Model和Anemic Model。

  Domain Model

  在開發過程中,我們常常用Domain Model來對目標的業務領域建模。通過Domain Model建模的業務類代表了目標領域中的一些概念。而且,我們會看到通過Domain Model建模的一些對象模擬了業務活動中的數據,有的對象還反映了一些業務規則。

  我們就來看看電子商務系統的開發,在開發中我們建立了一些概念的模型來反映電子商務領域中的一些概念:購物車,訂單,訂單項等。這些模型有自己的數據,行為。例如一個訂單模型,它不僅僅包含一些屬性(流水號,創建日期,狀態)來包含自己的數據,同時它也包含了一些業務邏輯:下訂單的用戶時候合法,下訂單用戶的余額是否充足等。

  一般來說,我們對領域了解的越深,我們在軟件中建立的模式越接近現實中的概念,最后實現的軟件就越符合客戶的需求。同時在建模的過程中,也要考慮模型的可實現行,可能我們對領域進行了很好的建模,和符合目標領域的一些概念,但是在軟件實現起來非常的困難,那么就得權衡一下:找出一個比較好的模式,同時也便于實現。

  在以前的文章中其實也提到過一些有關Domain Model的一些東西,其實Domain Model和Active Record的一個區別在于:Domain Model不知道自己的數據時如何持久化的,即PI(Persistence Ignorance).也就是說,通過Domain Model建立的業務類,都是POCO(Plain Old Common Runtime Object)。

  下面我們就用一個銀行轉賬的例子來講述一下Domain Model的應用。創建一個新的解決方案,命名為ASPPatterns.Chap4.DomainModel,并且添加如下的項目:

  ASPPatterns.Chap4.DomainModel.Model

  ASPPatterns.Chap4.DomainModel.AppService

  ASPPatterns.Chap4.DomainModel.Repository

  ASPPatterns.Chap4.DomainModel.UI.Web

  編譯整個,Solution,然后添加引用:

  為Repository項目添加Model 的引用。

  為AppService項目添加Model和Repository的引用。

  為Web項目添加AppService的引用。

  下面就來看看每個項目代表的含義:

  ASPPatterns.Chap4.DomainModel.Model:在這個project中包含了系統中所有的業務邏輯和業務對象,以及業務對象之間的關系。這個project也定義了持久化業務對象的接口,并且用Repository 模式來實現的(Repository 模式我們后面會談到的)。大家可以看到:這個Model的project沒有引用其他的project,也就是說這個Model的project完全關注于業務。

  ASPPatterns.Chap4.DomainModel.Repository:這個Repository的project實現了包含在Model project中定義的持久化接口。而且Repository還引用了Model project,就是用來持久化Model的數據的。

  ASPPatterns.Chap4.DomainModel.AppService:AppService project就扮演者一個應用層的角色,或者理解為門戶入口,因為提供了一些比較粗顆粒度的API,并且它和Presenter層之間通過消息的機制來進行通信。(消息模式我們以后也會講述)而且在AppService中,我們還會定義一些view model,這些view model的就符合也最后要顯示的數據結構,view model的數據可能是很多業務對象數據的組合,或者僅僅就是這業務對象數據的格式轉換等等。

  ASPPatterns.Chap4.DomainModel.UI.Web:這個Web.UI project主要是負責最后的顯示邏輯和一些用戶體驗的實現。這個project就調用AppService提供的API,獲取符合界面顯示的強類型的view model,然后顯示數據。

  系統的這整個結構如下:

  下面就開始創建保存數據的數據庫,和以前一樣,為了演示的作用,我們在Web project中添加一個名為BankAccount.mdf的數據庫,并且建立如下的表:

  BankAccount 表

  Transaction 表

  下一步就開始為領域建模,因為這里的例子比較簡單和常見,建模的過程就省了,最后就得到了表示領域概念的兩個領域對象(或者說業務對象):

public class Transaction
{
public Transaction(decimal deposit, decimal withdrawal, string reference, DateTime date)
{
this.Deposit = deposit;
this.Withdrawal = withdrawal;
this.Reference = reference;
this.Date = date;
}

public decimal Deposit
{
get; internal set; }

public decimal Withdrawal
{
get; internal set; }

public string Reference
{
get; internal set; }

public DateTime Date
{
get; internal set; }
}

NET技術走向ASP.NET架構設計——第四章—業務層分層架構(中篇),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品免费入口视频 | 欧美在线不卡视频 | 天天色一色| 精品在线免费视频 | 狂野欧美性猛交xxxx巴西 | 另类视频色综合 | 日日夜夜中文字幕 | 色综合天天色 | 成人在线综合 | 亚洲女同一区二区 | 色婷婷综合久久久久中文 | 一级做a级爰片性色毛片视频 | 91情侣在线偷精品国产 | 国产色婷婷免费视频 | 伊人五月在线 | 999影院成 人在线影院 | 美女视频免费看一区二区 | 女女同性一区二区三区四区 | 亚洲香蕉久久一区二区三区四区 | xxxxx国产| 五月婷婷丁香色 | 99re久久精品国产首页2020 | 久久综合九色综合97婷婷群聊 | 五月婷婷导航 | 白丝美女被狂躁视频免费网站 | 欧美αv天堂在线视频 | 久久久久久久久网站 | 久久久美女视频 | 欧美精品福利视频 | 综合激情网五月 | 亚洲成人在线免费观看 | 91在线看视频 | 999影院成 人在线影院 | 福利观看 | 五月丁香六月婷综合缴情在线 | 欧美美女被日 | 久久久免费网站 | 怡红院美国 | 四虎国产精品视频免费看 | 在线观看视频www在线观看 | 香蕉久久影院 |