前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Blog.Core重要升级】:封装服务扩展层

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

作者头像
老张的哲学
发布2022-04-11 14:54:59
3840
发布2022-04-11 14:54:59
举报
文章被收录于专栏:NetCore 从壹开始

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

关于如何在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分支。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档