广西平台网站建设报价,杭州职业能力建设网,茶叶网站flash模板,html制作百度登录页面#xff08; 且放白鹿青崖间#xff0c;须行即骑访名山 #xff09;终于还是要面对这个问题了#xff0c;一直想着可以逃避它#xff0c;自从18年就开始纠结这个问题#xff0c;后来看了DDD#xff0c;然后也收集了很多的设计思想#xff0c;发现一个框架除了稳定性 且放白鹿青崖间须行即骑访名山 终于还是要面对这个问题了一直想着可以逃避它自从18年就开始纠结这个问题后来看了DDD然后也收集了很多的设计思想发现一个框架除了稳定性可扩展性以外易操作无冗余也是很重要的看来今天是时候操作了。代码上传到weakrepo分支如果没有则表示已合并master,文末投票过半数三天内合并分支。看完本文后可以文末做一下投票说说你对本文这个操作的接受程度。仓储层存在的鸡肋首先要还是需要的。关于Blog.Core项目呢刚开始的时候我就为了记录代码怎么简单怎么来主要设计的是服务仓储接口模式面向抽象编程其实当时也是为了能让初学者更好的理解整体框架毕竟很像三层架构这样初学者就可以花更多的心思和精力去研究具体的知识点比如DI、AOP、Middleware、容器化、事务等。但是这个时候就埋下了一个伏笔就是很多人也发现了如果新建一个实体就会需要增加四层类文件服务/服务接口仓储/仓储接口如果再算上控制器提供API下一步打算设计将server层接口直接作为控制器api那就是需要五层文件前期还好如果实体多的话就显得很臃肿甚至被很多人吐槽苦不堪言后来我迫于压力设计了代码生成器可以一键生成五层文件这样可以大大的加快时间但是类文件还是很多其实服务文件还是很有必要的毕竟不是DDD设计重心还是要放到服务上这里的服务应该就是数据业务逻辑代码总不能放到控制器的。但是仓储文件就显得有点儿鸡肋了代码都是空的还需要两个cs文件就是一个中转的作用看着真的是没有什么必要一样然后就很多小伙伴针对这一点一直在提意见发问题甚至开怼无奈的我只能说服务层写的是业务逻辑仓储层是操作的DB两者是不一样的。但是有些苍白无力这几天打算Blog.Core和Blog.Idp认证中心打通发现如果使用多库模式下新建的实体类也需要四层文件这就是很尴尬了于是还是打算对仓储层动手了。弱化仓储层下面我就直接写操作步骤了比较简单用一句话概括就是用泛型仓储来代替具体仓储。具体的操作如下。容器中注册仓储基类这个就是文章标题说的内容了只需要这一行代码就行了builder.RegisterGeneric(typeof(BaseRepository))
.As(typeof(IBaseRepository)).InstancePerDependency();//注册仓储
就是这么简单但是现在一个最大的问题就是我之前说解耦了web层只引用接口层如果要这么注册的话就必须要修改引用了看自己的需要吧毕竟这个解耦好像并没有收到什么好处坏处倒是有很多那我们就退缩了吧web层直接引用Extension层Extension服务扩展层引用Service层Service层引用Repository层。PS服务扩展层只是对web层的一次剥离瘦身删掉所有无用的仓储文件就像上边举例的把空的仓储文件以及对应的接口文件都删除当然如果你后期想创建的话也可以新建我这里保留了一个示例自己可以查看我这里也把仓储接口层给删了毕竟没有几个文件修改服务实现层对仓储调用上边我们已经把仓储/接口都删除了那如何使用呢很简单直接用基类泛型注入就行了这里用一个Service文件来看看效果预览测试数据没有问题多库、读写分离、事务等也没有问题证明效果是一样的当然AOP事务也是没有问题的新增一条数据后手动异常执行回滚是不是瞬间就清爽了很多这里咱们说说优缺点。操作带来的优缺点优点1、大大减少文件量同时也会减少项目编译时间2、同时自己可以做自定义仓储扩展3、多库连接只需要写service层即可缺点1、大大弱化了仓储层可能对新用户接触不友好2、web层需要引用service层放弃了项目解耦理念其实缺点也不是缺点就是和之前讲的不一样罢了。预告下一步封装服务基类将视图模型封装进去。