圖4-4給出了已創(chuàng)建項(xiàng)目的圖形表示。在該圖之后列出了每個(gè)對(duì)象的責(zé)任。
● ASPPatterns.Chap4.DomainModel.Model Domain Model項(xiàng)目將包含應(yīng)用程序內(nèi)的所有業(yè)務(wù)邏輯。領(lǐng)域?qū)ο髮⒋娣旁诖颂?,并與其他對(duì)象建立關(guān)系,從而表示應(yīng)用程序正在構(gòu)建的銀行領(lǐng)域。該項(xiàng)目還將以接口的形式為領(lǐng)域?qū)ο蟪志没蜋z索定義契約,將采用Repository模式來(lái)實(shí)現(xiàn)所有的持久化管理需求。(將在第7章中更加詳細(xì)地討論Repository模式)。Model項(xiàng)目不會(huì)引用其他任何項(xiàng)目,從而確保:讓它與任何基礎(chǔ)設(shè)施關(guān)注點(diǎn)保持隔離,并堅(jiān)定地只關(guān)注業(yè)務(wù)領(lǐng)域。
● ASPPatterns.Chap4.DomainModel.Repository Repository項(xiàng)目將包含Model項(xiàng)目中定義的資源庫(kù)接口的具體實(shí)現(xiàn)。Repository引用了Model項(xiàng)目,從而從數(shù)據(jù)庫(kù)提取并持久化領(lǐng)域?qū)ο?。Repository項(xiàng)目只關(guān)注領(lǐng)域?qū)ο蟪志没蜋z索的責(zé)任。
● ASPPatterns.Chap4.DomainModel.AppService AppService項(xiàng)目將充當(dāng)應(yīng)用程序的網(wǎng)關(guān)(API,如果愿意的話(huà))。表示層將通過(guò)消息(簡(jiǎn)單的數(shù)據(jù)傳輸對(duì)象)與AppService通信。將在第7章中詳細(xì)討論消息傳送模式。AppService層還將定義視圖模型,這些是領(lǐng)域模型的展開(kāi)視圖,只用于數(shù)據(jù)顯示。第8章中將更詳細(xì)地討論該主題。
● ASPPatterns.Chap4.DomainModel.UI.Web UI.Web項(xiàng)目負(fù)責(zé)應(yīng)用程序的表示和用戶(hù)體驗(yàn)需求。這個(gè)項(xiàng)目只與AppService交互,并接收專(zhuān)門(mén)為用戶(hù)體驗(yàn)視圖創(chuàng)建的強(qiáng)類(lèi)型視圖模型。
在確定解決方案結(jié)構(gòu)之后,就可以搭建數(shù)據(jù)庫(kù)來(lái)存放領(lǐng)域中銀行賬號(hào)的狀態(tài)。向Web項(xiàng)目中添加一個(gè)新項(xiàng),選擇new database,并將其命名為BankAccount.mdf。一旦數(shù)據(jù)庫(kù)創(chuàng)建完畢,雙擊它打開(kāi)Server Explorer,并創(chuàng)建兩張表,定義如表4-3和表4-4所示。