先说下背景。公司是做.net 开发的,最近公司技术总监引进了新框架,简单来说就是mvc+service+Repository+mapping(orm映射,其实就把sql语句配到xml里了)+dapper,service层和Repository层都通过ioc做了注入。关于ORM之前只接触过nhibernate和EF,用dapper的感觉它就是一个升级版的ADO,它把操作对象从table换成了entity,sql还是要写,不过支持lambda。
废话这么多进入正题。我在看仓储模式的相关资料时,自然而然的接触到了领域这个概念。
这里先阐述下我自己的理解,仓储模式是处于业务和数据交互中间的,为业务服务,主要用来实现具体的查询、存储逻辑,即查谁,怎么查。而其中的泛型Repository接口是用来提取一些基础的公用的方法。在仓储模式中有一个概念,即业务需要什么我就提供什么,一切以业务为中心,这就是领域驱动。仓储模式就是基于此概念而出的。
理论好说,一到具体就犯愁了,我看了看代码,愣是感觉不到框架的特点,就拿传统三层作比较service=bll,Repository貌似和dal也差不多(看了很多博客都说他俩不一样,但都只是就理论而说)。而且对领域层这个概念我也很模糊,不知道对应到具体代码是哪儿块(难道是业务层?)。
求指点。
兄台,你们用的是ABP吗?
我们公司用的基础架构和你说的基本一样,底层是ABP的框架。首先说一下我的理解,仓储模式只是针对于DDD模式的开发而提出来的。所谓的领域驱动设计,只是想把整个软件设计的模型区分开,他的核心是强调由功能分类(即领域Domain)驱动设计的分层。从实际来看Domain层只是将ApplicationService和Repository独立开来,而仓储层实现了领域的接口来处理数据。
我个人也感觉领域设计和三层或者一般的多层结构的设计的区别是不很明显,从网上找到的好多资料对DDD的思想阐述都没有完全理解,我也比较困惑。
抱歉,在家的时候忘了账号密码了。
不是ABP,框架中没有工作单元、领域事件等概念。刚刚大概看了下ABP框架感觉这个更贴近领域概念,我们公司的估计还只是用了仓储而已。下班后我再仔细看下ABP。
多谢飘雪无痕兄弟分享自己的想法。
@七月随风: 我觉得其实就是三层架构的一个新的包装呈现而已。就如你所说的BLL-Service Dal-Repository.很多人其实都这么用,呈现的名称不一样而已。顺便问下了,你们多表查询如何实现,Repository都是对单表进行操作吧,那如果有需求多表联合查询呢,放在Service还是DAL来