昨天有群里小伙伴咨询了一个问题:
关于如何在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分支。
本文分享自 NetCore 从壹开始 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!