创建与使用模型(一)


模型是某一种业务的抽象,粒度可能很大,也可能很小,相关的业务可能是显而易见的,也可能是隐式的。有些模型是被发现的,而有些模型是被创造的。发现模型的过程是抽象过程,将具体的对象抽象为类或者接口;创造模型的过程是归纳过程,将若干零散的数据归纳在一起,创建一个带有含义的新的类型。

Read More

从零开始学习ABP vNext开发 (一)————概述


DDD中涉及的技术因素很多,聚合根、实体、值对象、领域事件、存储库、工作单元、领域服务、应用服务等等,还涉及架构的组织,如分层架构、微服务架构等等,还得加上日志、审计等需求……。一个项目如果从头构建,集成所有这些技术就是一个比较大的工程。从另一方面讲,所涉及的这些技术因素都有成熟的解决方案,如果将它们设计在一起,形成支撑框架,在框架的基础上引入业务特定的领域模型,在工程实践中是一种不错的选择。ABP vNext是.Net社区中流行的DDD技术框架,本系列文章介绍ABP vNext的学习。

Read More

领域驱动设计与框架——框架的支持与框架依赖的矛盾


领域驱动设计的核心是领域模型,领域模型处于软件架构的中心位置,使用接口隔离持久化等技术的具体实现,从而达到将业务复杂性与技术复杂性分离的目的。理想状态下领域模型是POJO(或者.Net下的POCO),不依赖于具体的框架。然而,实际情况是,如果没有合适的框架支持,将领域模型进行持久化在实际项目中几乎是不可能完成的任务:我们不可能在应付用户需求的同时进行复杂软件框架的研究和实现。实际项目中需要选择成熟、可靠、易于学习的技术框架在有限的时间和预算范围内完成用户需求,这是第一位的,不可能为了在项目中使用某种先进的理念而花费时间和精力。当某种理念缺乏技术支持时,就不可能在项目中使用。只有当先进理念的使用可以为项目带来其它方法不可替代的好处的时候,才有可能使用它。在领域驱动设计刚刚问世的时候,技术框架特别是持久化框架大都还只支持表模式或者Activate Recorder,如果使用领域驱动设计,必须自行开发相应的技术框架,这也就是为什么起初领域驱动设计只有在复杂项目中才会应用的原因。

Read More