领域驱动设计入门(一)【在线书店--简介】
来源:互联网 发布:云计算服务器价格 编辑:程序博客网 时间:2024/04/29 06:04
项目简介
【在线书店】采用了面向领域驱动的经典分层架构,并且为了展示微软.NET技术在企业级应用开发中的应用, 它所使用的第三方组件也几乎都是微软提供的:Entity Framework、ASP.NET MVC、Unity IoC、Unity AOP、Enterprise Library Caching等(用于记录日志的log4net除外,但log4net本身也是众所周知的框架),接着我们来看看系统的各个组件是如何组织在一起并协同工作的。
所使用的技术
【在线书店】项目使用或涵盖了以下Microsoft技术:
Microsoft Entity Framework 6 Code First(包括Repository模式的实现、枚举类型的支持以及分页功能的实现)ASP.NET MVC 4WCFMicrosoft Patterns & Practices Unity Application BlockMicrosoft Patterns & Practices Unity Policy Injection ExtensionMicrosoft Patterns & Practices Caching Application BlockMicrosoft Appfabric Caching使用AutoMapper实现DTO与领域对象映射基于Unity的AOP拦截使用log4net记录拦截的Exception详细信息
项目涵盖了以下模式和设计思想:
- 实体、值对象、领域服务
- 规约、仓储、仓储上下文
- 领域事件、事件聚合器、事件总线
- 服务定位器模式、工作单元模式、分离接口模式、数据传输对象模式、层超类型模式、传输对象组装器模式
本案例使用Visual Studio 2012开发。由于数据库采用了SQL Server Express LocalDB,因此,这部分组件也需要正确安装(如果是选择完整安装Visual Studio 2012,则可以忽略LocalDB的安装)。 另外,Online Store提供了两种事件总线(Event Bus)的实现:一种是面向事件聚合器(Event Aggregator)的,它将把所获得的事件通过聚合器派发到一个或多个事件处理器上;另一种是面向微软MSMQ的,它将把所获得的事件直接派发到MSMQ队列中,如果采用这种事件总线,则需要在机器上安装和配置MSMQ组件,并确保新建的队列是事务型队列。 此外,无需安装其它组件。 编译运行
如果不打算以Debug的方式启动本案例,那就需要首先展开OnlineStore.Application,任选其中一个.svc的服务文件(比如UserService.svc)然后点击右键选择View In Browser菜单项,以便启动服务端的ASP.NET Development Server;最后再直接启动ByteartRetail.Web项目 由于OnlineStore的数据库采用的是SQL Server 2012 Express LocalDB(默认实例),在程序连接LocalDB数据库时,LocalDB需要创建/初始化数据库实例,因此在首次启动时有可能会出现数据库连接超时的异常,如果碰到这类问题,则请稍等片刻然后再重试 登录账户
启动成功后,就可以单击页面右上角的“登录”链接进行账户登录。默认的登录账户有(用户名/密码):
admin/admin:以管理员角色登录,可以对站点进行管理 sales/sales:以销售人员角色登录,可以查看系统中订单信息并进行发货等操作 buyer/buyer:以采购人员角色登录,可以管理商品分类和商品信息 test/:普通用户角色,不能对系统进行任何管理操作 解决方案结构
OnlineStore.sln包含以下项目:
OnlineStore.Application:应用层OnlineStore.Domain:领域层OnlineStore.Repositories:仓储的具体实现(目前是基于Entity Framework 6.0的实现)OnlineStore.Events:事件相关的事件处理器、事件总线和事件聚合器的定义OnlineStore.Events.Handlers:具体的事件处理器定义OnlineStore.Infrastructure:基础结构层OnlineStore.ServiceContracts:基于WCF的服务契约OnlineStore.Web:基于ASP.NET MVC的站点程序(表示层)
总结
代码图:
领域模型层类图:
仓储层类图:
- 领域驱动设计入门(一)【在线书店--简介】
- 在线书店销售系统设计
- 领域驱动设计案例【Tiny Library简介】
- 一、实现领域驱动设计读书笔记
- 领域模型驱动设计(Domain Driven Design)入门概述
- 领域模型驱动设计(Domain Driven Design)入门概述
- 《实现领域驱动设计》系列(1) DDD入门
- 领域模型驱动设计(Domain Driven Design)入门概述
- 领域模型驱动设计(Domain Driven Design)入门概述
- 领域驱动设计,难
- 读书笔记--领域驱动设计
- 领域驱动设计DDD
- 浅谈领域驱动设计
- 浅谈领域驱动设计
- 领域驱动设计
- 浅谈领域驱动设计
- 浅谈领域驱动设计
- 领域驱动设计
- Java Socket 编程那些事(1)
- 短信猫实现短信验证小例子
- SpringBean的生命周期
- Hangman Judge- UVA 489
- 2017华东师范大学网络赛—F
- 领域驱动设计入门(一)【在线书店--简介】
- 排序算法
- 新手速学git——简单的上传代码文件
- Hessian
- QSqlDatabase: QMYSQL driver not loaded
- 卡特兰数 (hdu3723 Delta Wave)
- Mybatis分页插件
- 计算导论与C语言基础week7
- c++文件操作