首页 > Web开发 > 详细

.net core进阶之项目架构

时间:2019-09-21 10:56:51      阅读:84      评论:0      收藏:0      [点我收藏+]

在学习了.net core基础之后就需要对这些知识灵活运用了,代码不会写那么很简单,谷歌、必应、百度,总有一个能搜到的嘛,那么架构上的,似乎很少有这方面的资料,而且是在国内.net core资料本来就少的情况下,那我在这里就给大家分享一个架构,不管是.net core还是.net framework都可以用这个架构的:

技术分享图片

 

 想必有很大一部分人写代码是这样写的吧,每一个方法中去new一个bll对象出来,也可以在方法外部实例化这个对象,不管项目中服务层是叫BLL还是叫Service,其实都是同一个东西,如果分的再细一点的话,会有一个IBLL或者IService出现,当然这个在一些中小项目中用不到,而我要说的方式并不是这样,请看下面

技术分享图片

 

 这个Service是什么东西呢?再看

技术分享图片

 这样似乎就很好理解了吧,可能有人会说,为啥要静态的呢?那这里我来告诉大家,因为这个T类我是用来操作数据库的一个类,既然是操作数据库的,那么就需要释放这个对象,什么时候释放呢?我的做法是在请求结束返回结果前释放这个对象

技术分享图片

 

 因为每一个请求都是一个实例,请求结束的方法在过滤器中,而我并不可能在这里面去实例化一个BaseController,那么就需要将释放数据库实例的方法做成静态的,这样就可以直接调用了,或许又有人会说,这样不是耦合起来了吗?没错,是耦合了,但这个耦合并不涉及到业务的,都是同一层的两个类有一点小小的耦合罢了,相比于每个控制器都需要去实例化数据库操作对象的方式,我更喜欢用前者,不管是代码量还是架构方面。或许还有人说,你这种只适用于单业务的,也就是一个控制器只操作一张数据库表,那要有多个怎么办呢?我的解决方案是:在Service层中让他们自己耦合,不在web层做这种耦合

 

当然还有一种方式,那就是:依赖注入

在学习.net core的时候,了解到著名框架ABP,看了里面的代码发现,它的业务层就是通过注入的方式传到web层的。请看

技术分享图片

 

 

我个人觉得没必要用这种方式,我觉得注入的方式用于变化的需求,比如,有一个需求是数据库不定,也就是切换数据库,在controller的构造函数中传入一个对象,这个对象可能是sqlserver的,也可能是mysql的,还可能是Oracle的,那这个时候用注入的方式就很好了,需要切换的时候只是在注入的地方变化一下就好了,controller中的代码不需要任何变化,再或者说,有一个cache的controller,可能是管理redis的也可能是memcahe的,还可能是httpruntime的,这里用注入也是一样的道理,只需要变化一个地方就可以轻松实现切换了

 

如果你们有更好的方法欢迎留言评论??

.net core进阶之项目架构

原文:https://www.cnblogs.com/zlheb/p/11561273.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!