谈架构设计中DDD思想的运用

首先,描述一下我的业务场景及项目分层结构,非标准DDD(其实我不觉得有标准),只是思考的时候有带入DDD思想。

业务场景:这是一个ERP系统对中台提供的接口项目,仓储操作大多都是存储过程去完成的。

项目结构,如图:

WebAPI层:这个不用多说了,入口。

DTO层:增加数据传入传出对象,和领域model、实体model区分。(要不要围绕领域model或从现有系统中提取领域model看实际业务情况,拿我目前这个项目来说,得不偿失。)

Services层:业务服务层(可以命名成BizServices区分),主要写一些业务逻辑,然后调用领域服务层DomainServices(如果有的话),如果没有,则直接调用仓储服务,进行持久化操作。

Repository层:打算用dapper进行持久化操作,对外提供RepositoryService。我这里比较特殊,下面讲。

融合了一部分DDD思想后,项目结构和流程本来应该是这样:Request→WebAPI→DTO→BizServices→DomainServices→RepositoryService→DTO→Response。

一个Request对应一个BizServices可能对应多个DomainServices可能对应多个RepositoryService

实际是这样的:Request→WebAPI→DTO→BizServices→RepositoryService/.DomainService→DTO→Response。

那么,问题就来了:

因为DomainServices应该做的聚合Repository.Service的操作实际都在存储过程中进行了,但Repository.Service同时完成了Repository.Service和DomainServices一起干的事情,产生了越界,这个不管我把DomainServices拿出去放外面一层,实际情况都如上所述。

症结就是存储过程干了DomainServices的事情,不要跟我说把存储过程的事情拿出来重新写一遍,你以为面对不知道有没有1000个的存储过程我没认真想过嘛,所以Repository.Service.DomainServices就是为了标注这种歧义。

哈哈哈,说完了,不知道大家有没有看明白,望得到高人指点。

原文地址:https://www.cnblogs.com/lxz-blog/p/12036697.html

时间: 2024-08-26 08:15:48

谈架构设计中DDD思想的运用的相关文章

架构设计中服务层的简单理解

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在ddd设计中我们经常会提到服务层,服务层是什么?职责是什么?有什么好处?. 先看简单的层次图(注:这里并没有考虑其他多余的领域逻辑数据层存储,或者UOW这些细节) 我的理解是服务层是处于我的应用程序业务层和表现层之间的应用程序边界,边界可能是很薄的一层类设计或者是分布式服务网络跃点.它是一个与技术无关的名词.由表现层直接调用,契约,执行命令(修改状态(CUD))或者是查询返回dto(数据迁

万剑归宗—架构设计中的抽象思维与具象思维

新项目上线,用户量不断增加,工作中继续不断发现问题,解决问题.花一点时间来总结一下自己对架构设计的理解. 小小的打个广告.这篇文章是发布在neil的微信公众号上.neil的文章都会第一时间发布在微信公众号上.欢迎小伙伴们关注. 微信公众号:互联网与作曲家 武侠小说中的"万剑归宗"----极致的抽象思维 一点题外话.自己从小就是武侠迷,金庸古龙的经典作品都看过很多遍.最喜欢的女主,是<倚天屠龙记>中的赵敏:敢爱敢恨,邵敏郡主.其扮演者黎姿,是我心目中两位女神之一,性格与赵敏非

Medium开发团队谈架构设计_转

转自:Medium开发团队谈架构设计 背景 说到底,Medium是个社交网络,人们可以在这里分享有意思的故事和想法.据统计,目前累积的用户阅读时间已经超过14亿分钟,合两千六百年. 我们支持着每个月两千五百万的读者以及每周数以万计的文章发布.我们不想Medium的文章以阅读量为成功的依据,而是观点取胜.在Medium,文章的观点比作者的名头更重要.在这里,对话促进想法,并且很看重文字的力量. 我是Medium开发团队的负责人,此前在Google工作,负责开发Google+和Gmail,还创立了C

架构设计中的6种常见安全误区

[架构源码地址] 自然世界中,先天有缺陷的生物总是容易被细菌病毒入侵,而健壮的生物更能抵抗细菌病毒的攻击,计算机系统也是一样,若有先天的架构设计安全缺陷,那么在面临网络攻击的时候,就更容易被入侵或者破坏,甚至因为设计架构的原因,有些漏洞完全没有办法修复!本文将讲述架构设计中需要避免出现的安全误区,以帮助我们研发人员设计出更安全健壮的软件架构.本文的举例既有硬件架构,也有软件架构,还有基础架构等等不同的架构,但其中原理适用于所有的架构设计.下文将从兼容性设计误区,降低成本设计误区,数据和代码不分离

挖财首席架构师王福强:架构设计中的6大关键点

编者按:要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求.权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足.在UPYUN Open Talk 第二期"移动时代互联网金融架构趋势"的技术分享中,挖财首席架构师王福强带来了<挖财的互联网金融技术探索>,王福强重点分享了当前挖财架构设计中的6大关键点: 1. 系统层级分离 从大的体系来讲,挖财主要在做四个纬度的事情,第一个是会员中心,挖财有一套自己的会员体系,第二个是现金流,第三个是风控中心,

看懂架构设计中的服务隔离

前言 我们在做系统架构设计的时候,经常离不开的一个话题就是进行服务的隔离设计. 那什么是「服务隔离」呢? 顾名思义,它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖.当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务. 其实隔离设计并非软件行业独创,它是借鉴于造船行业.行业有一个专业术语叫做「舱壁隔离」.利用舱壁将不同的船舱隔离起来,如果某一个船舱进了水,那么就可以立即封闭舱门,形成舱壁隔离,只损失那一个船舱,其他船

浅谈UI设计中妙用无穷的深色系背景

英文:medium 译者:优设网 - 陈子木 链接:http://www.uisdc.com/ui-benefits-of-dark-background# ------------------------------------------------------------------------------------- 又是一篇来自Tubik Studio 的文章,丰富的设计项目经验使得这家资深设计机构对于设计的每一个细节都有着独特而系统的见解.今天的文章聊的就是深色系背景在设计中的运用

浅谈PCB设计中的焊盘设计标准

随着信息技术的发展,对于一个电子工程师设计电路PCB设计中的焊盘设计标准,在确定pcb电路板时需要提前对其进行打样,以确定是否符合要求,那么捷配pcb打样时应该注意些什么呢,下面捷配小编就来为大家进行介绍.抗干扰设计的基本任务是系统或装置既不因外界电磁干扰影响而误动作或丧失功能,也不向外界发送过大的噪声干扰,以免影响其他系统或装置正常工作.因此提高系统的抗干扰能力也是该系统设计的一个重要环节.在进行PCB设计中设计PCB焊盘时,就需要严格按照相关要求标准去设计.因为在SMT贴片加工中,PCB焊盘

架构设计的常用思想

1.分层 一个软件通常分为: 表现层–UI部分 接口层–后台服务的通讯接口部分 服务层–实际服务部分 存储层—持久化存储部分,存储到文件或者数据库. 分层的软件,可以解耦各个模块,支持并行开发,易于修改,易于提升性能. 2.SOA 模块之间通过网络通讯互相连接,松耦合.每一个模块可以独立部署,可以增加部署实例从而提高性能.每一个模块可以使用不同的语言和平台开发,可以重用之前开发的服务.SOA,常用协议有WebService,REST,JSON-RPC等. 3.性能瓶颈 1)化同步为异步. 用内存