Domain Model案例,项目结构图
ASPPatterns.Chap4.DomainModel.Model:Domain Model项目将包含应用程序内所有的业务逻辑。领域对象将存放在此处,并于其他对象建立关系,从而表示应用程序正在构建的银行领域。该项目还将以接口的形式为领域对象持久化和检索定义契约,将采用Repository模式来实现所有的持久化管理需求。Model项目不会引用其他任何项目,从而确保:让它与任何基础设施关注点保持隔离,只关注业务领域。
ASPPatterns.Chap4.DomainModel.Repository:Repository项目将包含Model项目中定义的资源库接口的具体实现。Repository引用了Model项目,从而从数据库提取并持久化领域对象。Repository项目只关注领域对象持久化和检索的责任。
ASPPatterns.Chap4.DomainModel.AppService:AppService项目充当应用程序的网关(API如果愿意的话)。表示层将通过消息(简单的数据传输对象)与AppService通信。AppService层还将定义试图模型,这些是领域模型的展开试图,只用于数据显示。
ASPPatterns.Chap4.DomainModel.UI.Web:UI.Web项目负责应用程序的表示和用户体验需求。该项目只与AppService交互,并接收专门为用户体验视图创建的强类型视图模型。
在一个项目中,业务逻辑最为重要,先看存放业务逻辑的Model项目
在Model项目下创建Transaction.cs文件,Transaction对象是一个值对象。
using System; namespace ASPPatterns.Chap4.DomainModel.Model { 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; } } }