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

走向ASP.NET架構(gòu)設(shè)計(jì)——第四章—業(yè)務(wù)層分層架構(gòu)(中篇)

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

  Domain Model

  在開發(fā)過程中,我們常常用Domain Model來對(duì)目標(biāo)的業(yè)務(wù)領(lǐng)域建模。通過Domain Model建模的業(yè)務(wù)類代表了目標(biāo)領(lǐng)域中的一些概念。而且,我們會(huì)看到通過Domain Model建模的一些對(duì)象模擬了業(yè)務(wù)活動(dòng)中的數(shù)據(jù),有的對(duì)象還反映了一些業(yè)務(wù)規(guī)則。

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

  一般來說,我們對(duì)領(lǐng)域了解的越深,我們?cè)谲浖薪⒌哪J皆浇咏F(xiàn)實(shí)中的概念,最后實(shí)現(xiàn)的軟件就越符合客戶的需求。同時(shí)在建模的過程中,也要考慮模型的可實(shí)現(xiàn)行,可能我們對(duì)領(lǐng)域進(jìn)行了很好的建模,和符合目標(biāo)領(lǐng)域的一些概念,但是在軟件實(shí)現(xiàn)起來非常的困難,那么就得權(quán)衡一下:找出一個(gè)比較好的模式,同時(shí)也便于實(shí)現(xiàn)。

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

  下面我們就用一個(gè)銀行轉(zhuǎn)賬的例子來講述一下Domain Model的應(yīng)用。創(chuàng)建一個(gè)新的解決方案,命名為ASPPatterns.Chap4.DomainModel,并且添加如下的項(xiàng)目:

  ASPPatterns.Chap4.DomainModel.Model

  ASPPatterns.Chap4.DomainModel.AppService

  ASPPatterns.Chap4.DomainModel.Repository

  ASPPatterns.Chap4.DomainModel.UI.Web

  編譯整個(gè),Solution,然后添加引用:

  為Repository項(xiàng)目添加Model 的引用。

  為AppService項(xiàng)目添加Model和Repository的引用。

  為Web項(xiàng)目添加AppService的引用。

  下面就來看看每個(gè)項(xiàng)目代表的含義:

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

  ASPPatterns.Chap4.DomainModel.Repository:這個(gè)Repository的project實(shí)現(xiàn)了包含在Model project中定義的持久化接口。而且Repository還引用了Model project,就是用來持久化Model的數(shù)據(jù)的。

  ASPPatterns.Chap4.DomainModel.AppService:AppService project就扮演者一個(gè)應(yīng)用層的角色,或者理解為門戶入口,因?yàn)樘峁┝艘恍┍容^粗顆粒度的API,并且它和Presenter層之間通過消息的機(jī)制來進(jìn)行通信。(消息模式我們以后也會(huì)講述)而且在AppService中,我們還會(huì)定義一些view model,這些view model的就符合也最后要顯示的數(shù)據(jù)結(jié)構(gòu),view model的數(shù)據(jù)可能是很多業(yè)務(wù)對(duì)象數(shù)據(jù)的組合,或者僅僅就是這業(yè)務(wù)對(duì)象數(shù)據(jù)的格式轉(zhuǎn)換等等。

  ASPPatterns.Chap4.DomainModel.UI.Web:這個(gè)Web.UI project主要是負(fù)責(zé)最后的顯示邏輯和一些用戶體驗(yàn)的實(shí)現(xiàn)。這個(gè)project就調(diào)用AppService提供的API,獲取符合界面顯示的強(qiáng)類型的view model,然后顯示數(shù)據(jù)。

  系統(tǒng)的這整個(gè)結(jié)構(gòu)如下:

  下面就開始創(chuàng)建保存數(shù)據(jù)的數(shù)據(jù)庫,和以前一樣,為了演示的作用,我們?cè)赪eb project中添加一個(gè)名為BankAccount.mdf的數(shù)據(jù)庫,并且建立如下的表:

  BankAccount 表

  Transaction 表

  下一步就開始為領(lǐng)域建模,因?yàn)檫@里的例子比較簡單和常見,建模的過程就省了,最后就得到了表示領(lǐng)域概念的兩個(gè)領(lǐng)域?qū)ο螅ɑ蛘哒f業(yè)務(wù)對(duì)象):

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技術(shù)走向ASP.NET架構(gòu)設(shè)計(jì)——第四章—業(yè)務(wù)層分層架構(gòu)(中篇),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本波多野结衣在线 | 99精品视频在线观看免费 | 四虎com| 国产在线精品一区二区不卡 | 精品久久久久久国产 | 思思99精品国产自在现线 | 四虎永久在线观看视频精品 | 国产手机精品自拍视频 | 涩涩色视频在线播放 | 国产91亚洲精品 | 免费视频一区二区三区四区 | 中文字幕不卡一区 | 亚欧色视频在线观看免费 | 亚洲第一视频 | 日本理论午夜中文字幕第一页 | 成人午夜视频一区二区国语 | 色哟哟在线观看视频高清大全 | 精品美女视频在线观看2023 | 91欧美精品 | 欧美成人精品三级网站 | 一本大道久久香蕉成人网 | 国产1区2区3区在线观看 | 免费一级毛片不卡不收费 | 久久久91精品国产一区二区 | 99精品视频在线观看 | 91精品免费久久久久久久久 | 日韩精品永久免费播放平台 | 亚洲国产一区视频 | 国产精品久久久久久五月尺 | 美女扒开内衣看个够网站 | 看黄在线 | 五月丁婷婷 | 国内精品福利 | 成人综合网站 | 午夜剧场刺激性爽免费视频 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片99 | 高清国产激情视频在线观看 | 青青草国产精品人人爱99 | 亚洲欧美成人综合久久久 | 欧美在线视频网站 | 精品视频免费看 |