【Blog.Core重要升级】:封装服务扩展层

2022-04-11 14:54:59 浏览数 (1)

昨天有群里小伙伴咨询了一个问题:

关于如何在Blog.Core项目中,实现多资源终端的问题,比如这样:

一个AdminMvc的管理后台(MVC项目),一个WebApi项目,一个ConsoleApp的控制台项目(比如可以用来做迁移或者定时器等工作)。

详细来说,目前的模式是一个webapi层然后搭配service repository 接口,repository主要操作分页,多表,CRUD等db操作,service主要负责:事务,缓存,发邮件等相关内容。其他的一些常用Helper操作都集中到了Common层。

除此之外呢,会有很多的中间件和服务扩展,那目前我放到了api层,用着也挺好,不过对于上边的这种多终端客户端的问题,很不友好,因为这样会导致很多文件必须拷贝多份,或者需要写很多遍。

那基于这个问题呢,我做了调整,把中间件和服务扩展单独封装了一层,这样就很容易实现上边的需求了,最终的结果是这样的:

相应的代码我放到了SpeExtensions项目分支(如果没有这个分支了,证明代码在主分支)。

这样就很好的弱化了我们的api层,也是对项目解耦进一步做了调整,记得把api层的不必要的nuget引用也去掉,毕竟都放到了扩展层了嘛。

这样看之前的api层,就清爽了很多,业务和逻辑依然很丰富:

还有没有其他扩展方案

当然,如果你感觉这种把扩展提出来还不能满足灵活的需求,可以再细致一下,针对每一个组件都做一个扩展,比如这样:

xxx.Swagger、xxx.MiniProfiler、xxx.Aop、xxx.SqlSugar

等等等等

这样的话,不仅仅当前项目使用,其他任何项目都可以使用,不过我个人感觉没什么必要,看自己的需求吧。

最后说一下,目前这种设计方案还在dev阶段,如果你使用的时候发现任何问题,可以GitHub上给我提issue,我基本都会改,如果两个星期没问题,我会覆盖master分支。

0 人点赞