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

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

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

  1. 以Blog.Core的方式来打开Abp.vNext

    (发现Abp这个logo真像佐助写轮眼) 最近自己的框架已经基本的成型了,当然还有很多质疑的地方,比如这些人是这么说的,基本都是原文: 你的教程太乱了,和框架代码都不一样(???) 文章还行,代码规范 ...

  2. OSS.Core基于Dapper封装(表达式解析+Emit)仓储层的构思及实现

    最近趁着不忙,在构思一个搭建一个开源的完整项目,至于原因以及整个项目框架后边文章我再说明.既然要起一个完整的项目,那么数据仓储访问就必不可少,这篇文章我主要介绍这个新项目(OSS.Core)中我对仓储 ...

  3. 【Blog.Core开源】快速升级.NET 6.0

    BCVP 只要贡献,就不分大小,每个人都是这个时代最璀璨的星! 一个以开源项目主导的社区组织. <Blog.Core>开源项目已经3年,期间收获了很多很多,同时也收到了很多小伙伴的支持和鼓 ...

  4. 【Blog.Core开源】将Program升级为.NET6.0版本

    大家假期好,好久不见,之前忙于其他事情,公众号暂时搁置了一个月了,新的一年开始了,很多小伙伴开始催更了,粉丝的要求必须满足. 2022年打算重点推广BCVP社区,所以还是希望有愿意投稿的小伙伴,积极投 ...

  5. 【Blog.Core开源】网关自定义认证鉴权与传参

    书接上文,上回咱们说到了<[Blog.Core开源]网关统一集成下游服务文档>,已经将多个下游服务统一集成到了网关里,并且也把接口文档Swagger给集成了,那今天就说一下认证和鉴权相关的 ...

  6. 从壹开始学习 NetCore 新篇章 ║ Blog.Core 开发社之招募计划书

    宫 哈喽大家好,国庆马上就要来了,在新的第四季度来临之际,祝大家年末能顺顺利利,解决所有的难题.大家可能从我的标题里也能看的出来,老张又要耍花样,搞事情了,近来随着 netcore 3.0 的正式推出 ...

  7. 企业数字化转型必备利器之微服务扩展

    导读:本系列文章将通过介绍一个真实大型企业数字化转型过程中遇到的层层困难,以及微服务架构如何落地,涉及到的各种真实的解决方案.不空谈,不泛谈,讲事实是本系列文章的原则. 企业数字化转型是近些年来非常火 ...

  8. WCF 项目应用连载[6] - 升级Lig服务 - 设计ILigger 构建一个完善的Lig版本

    前面我们已经搞定了对ChannelFactory与ServiceHost的扩展,形成了我们自己用的两个类: public class LWCF<T> public class LServi ...

  9. ASP.Net Core创建STK WMTS服务

    在前面文章中,介绍了如何在STK中,通过插件(ArcGIS REST Client插件和Web Map Services插件),使得STK中的3D窗口(2D窗口目前不支持)可直接自动加载网络地图.详见 ...

最新文章

  1. 读一个文件的java程序_java 读文件的几种方法(一)
  2. 浏览器保存密码后自动填充问题
  3. 不明白点积的几何意义
  4. 圆圈在动吗?这个骗过人眼的动图火了,LeCun解释原理:和CNN对抗攻击类似
  5. Python 数据结构视频教程五
  6. strace 哇,好多系统调用
  7. leetcode c程序总提示主函数_Matlab系列之函数嵌套
  8. 信息学奥赛一本通(1408:素数回文数的个数)
  9. 九度OJ 1207 质因数的个数
  10. 《Algorithms》Comparable 实现快速排序三向切分的快速排序
  11. 什么导致了android.os.NetworkOnMainThreadException异常
  12. Iris数据集免费下载
  13. 家居行业如何做好私域布局?
  14. 关于C#操作WPS和office兼容性的问题
  15. matlab中创建txt文件,在MATLAB中创建填充了任意数据的大型txt文件
  16. 【预训练语言模型】MacBERT: Revisiting Pre-trained Models for Chinese Natural Language Processing
  17. 知乎热议最丑陋的数学公式:「四次方程求根」高票当选
  18. Python:整数的阶乘
  19. 记录CTF命令执行练习中遇到的几道题(一些PHP命令过滤的绕过方法)
  20. 牛客小白月赛4 D.郊区春游

热门文章

  1. 程序员求职之道(《程序员面试笔试宝典》)之学业与求职,孰轻孰重?
  2. Debian7 apt源设置
  3. Asp.net 2.0 发送电子邮件
  4. 如何在iPhone和iPad上允许“不受信任的快捷方式”
  5. 新垣结衣自拍照_如何阻止自拍照出现在iPhone的自拍照专辑中
  6. kbone-cli初始化项目,提示‘模板xx不存在’
  7. AspectJ学习笔记
  8. 原生sql实现restful接口调用
  9. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  10. 思科三层交换机充当路由器实现全网互通