精简ABP的模块依赖

ABP的模块非常方便我们扩展自己的或使用ABP提供的模块功能,对于ABP自身提供的模块间的依赖关系想一探究竟,并且试着把不必要的模块拆掉,找到那部分核心模块。本次使用的是AspNetBoilerplate。

源码下载

从Github下载ABP源码后,进入src文件夹,提供的大部分模块都在此中。很多工具也经ABP封装,个人认为是方便了集成使用且融入到ABP这个框架。

src文件夹中的类库有几种类型如.net standard(为了兼容.net framework)、.net 5 、.net framework的。

我的想法是最小的模块引用,因此按照如下两个条件移除

  • 移除.net framework的,只专注于.net core所需要的。

  • 移除Zero模块。

精简模块

整理后也就是剩下这部分,这样看仍然感觉有很多模块,但对于其中大部分来讲更多的是将一些工具封装了下,比如从SignalR,AutoMapper,Log4Net,Dapper,EFCore等等。

通过整理这部分类库间的依赖关系,(此图中去掉了Dapper、NHibernate、MemoryDB和MongoDb),如此一来分类便清晰许多,一眼便可以识别出Abp这一核心模块。哪些模块的提供的功能是什么,这样也方便查看。

我们再来建立一个项目来直接对该部分类库引用,而不是走Nuget包的方式。先依赖需要的最基本的模块,比如Abp、Abp.WebCommon和Abp.AspNetCore等几个模块,能够保障最基本的请求功能,甚至于读取数据库的ORM工具都不纳入进来。

依赖核心模块

此处将Log4Net作为需要的模块纳入进来,因为Abp中部分地方记录日志时候需要相应的实现类,当然也可以使用其他日志组件如NLog等,但需要实现Abp中封装好的抽象类,可参考如下链接:https://www.cnblogs.com/donaldtdz/p/8213440.html

新建一个空白解决方案AbpIntegrationDemo.sln

  • 建立一个module文件夹用于放置上述最基本模块。

  • 建立一个src文件夹中用于搭建分层结构。

对于src中的每一层所依赖的项目按照层次关系及依赖关系,其中核心层Domain依赖Abp模块,Application和Infrastructure都依赖核心层也就都对Abp模块有了依赖关系了。

如此一来,最为基本的依赖便完成了,各层内增加相应的Module,按照Abp模块化构建方式将这些模块贯穿起来。比如AbpIntegrationDemo.Admin,将依赖的模块,需要注入的、配置的东西加入进来,此处部分直接从Abp start up中搬过来的,还可以再精简一下,部分内容目前是没有用到的。

[DependsOn(typeof(AbpIntegrationApplicationModule),typeof(AbpIntegrationInfrastructureModule),typeof(AbpAspNetCoreModule))]
public class AbpIntegrationAdminModule : AbpModule
{private readonly IWebHostEnvironment _env;private readonly IConfiguration _appConfiguration;public AbpIntegrationAdminModule(IWebHostEnvironment env, IConfiguration appConfiguration){_env = env;_appConfiguration = appConfiguration;}public override void PreInitialize(){Configuration.DefaultNameOrConnectionString = _appConfiguration.GetConnectionString(AbpIntegrationDomainConsts.ConnectionStringName);Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = false;}public override void Initialize(){IocManager.RegisterAssemblyByConvention(typeof(AbpIntegrationAdminModule).GetAssembly());}public override void PostInitialize(){IocManager.Resolve<applicationpartmanager>().AddApplicationPartsIfNotAddedBefore(typeof(AbpIntegrationAdminModule).Assembly);}public override void Shutdown(){base.Shutdown();}
}

在此基础上,按照需要的模块,如EF Core、Redis、Hangfire、AutoMapper等等,也只需要引用进来了,至少到现有地步,对于Abp模块的依赖及最为核心的模块应该是清楚了,而对于看到很多人说Abp重的说法,个人感觉是不是看到依赖的模块太多而有种复杂的感觉,实则有很多是工具模块,即使不使用Abp,实际开发中也会使用进来。
https://gitee.com/530521314/Partner.TreasureChest/tree/master/AbpIntegrateDemo

2021-08-19,望技术有成后能回来看见自己的脚步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你这飞机会爆炸吗?航空公司含泪甩卖49元机票,却被超模君挖出秘密!

全世界只有3.14 % 的人关注了爆炸吧知识制作团队制作人 超模君编剧 恐恐恐插画 杨羊羊 友情出演 超模君 章小天……小天吐槽时刻……超模君之后还会采访谁呢小天有小道消息哦扫描这个二维码你将会有机会见识到超模君的科普沙雕网友们一起斗图↓↓↓↓…

linux nginx mysql php 5.5._搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

之前的Web服务器都是通过yum搭建的&#xff0c;想要添加新模块或者更新某些软件都很不方便(牵一发而动全身啊&#xff01;)。所以&#xff0c;现在准备将环境改为源码编译安装&#xff0c;这样便于调整&#xff0c;性能上也会比yum方式好很多。以下是我的安装步骤&#xff0c;我…

ASP 缩略图 (纠错版)

网上很多缩略的代码&#xff0c;不过很多都是错误的。 这个是纠正版&#xff0c;本人已修改。 Code<%Function PicReSize(picURL)FileName1Mid(picURL,13,22)Set Jpeg Server.CreateObject("Persits.Jpeg") 获取源图片路径Path Server.MapPath(picURL) 打开源图…

Blazor Server 应用程序中进行 HTTP 请求

翻译自 Waqas Anwar 2021年5月4日的文章 《Making HTTP Requests in Blazor Server Apps》 [1]Blazor Server 应用使用标准的 ASP.NET Core 应用程序&#xff0c;在服务端执行 .NET 代码。在 Blazor Server 应用程序中&#xff0c;我们可以像在 ASP.NET Core Web 应用程序中那样…

遍历属性动态展示列

为什么80%的码农都做不了架构师&#xff1f;>>> 前端根据后台返回json对象(Map)进行动态列展示。 javascript属性遍历和访问&#xff1a; //var obj {name:"h2do",age:0,sex:"男"}; function User(){this.name "h2do";this.age 0…

厉害了!这几位小学生竟然在艺术界掀起一阵风暴,简直是灵魂画手无疑.........

全世界只有3.14 % 的人关注了爆炸吧知识高能预警&#xff01;请查阅全文&#xff01;在孩子们的眼中&#xff0c;世间万物都被赋予了无限的想象力&#xff0c;而绘画是他们独特想法和思维的表达。一支小小的画笔&#xff0c;便能创造一个千奇百怪的世界。为鼓励孩子们拿起画笔&…

花开的声音 - 张靓颖

姓名&#xff1a;张靓颖 / Jane Zhang性别&#xff1a;女 地区&#xff1a;内地 职业&#xff1a;歌手 星座&#xff1a;天秤座 血型&#xff1a;O 身高&#xff1a;162cm张靓颖&#xff0c;中国女歌手&#xff0c;四川成都人。2005年参加湖南卫视…

基于事件驱动架构构建微服务第5部分:容器化(Web Api Core 和 SQL Server Linux)

原文链接&#xff1a;https://logcorner.com/building-microservices-through-event-driven-architecture-part5-dockerization-web-api-core-and-sql-server-linux/在本文中&#xff0c;我将谈谈web api和sql server linux数据库的容器化Web API将发布并上线&#xff0c;它需要…

爆笑!物理书上的照片能不能好好选选啊喂!

全世界只有3.14 % 的人关注了爆炸吧知识在物理书里&#xff0c;有各种物理大佬的照片。他们正襟危坐&#xff0c;他们不苟言笑&#xff0c;他们看起来就很“物理”。但是&#xff0c;知识君想说&#xff0c;谁不是个有血有肉的人啊&#xff1f;&#xff01;选照片的时候给我好好…

计算机网络体系结构概述

1.Internet结构 2.计算机网络的体系结构 1&#xff09;网路协议主要由以下三要素组成&#xff1a; 语法&#xff0c;即数据与控制信息的结构或格式&#xff1b; 语义&#xff0c;即需要发出何种控制信息&#xff0c;完成何种动作以及做出何种响应&#xff1b; 同步&#xff0c;…

.NET 6 全新指标 System.Diagnostics.Metrics 介绍

前言工友们, .NET 6 Preview 7 已经在8月10号发布了, 除了众多的功能更新和性能改进之外, 在 preview 7 版本中, 也新增了全新的指标API, System.Diagnostics.Metrics, 为了让应用能有更好的可观测性, 在之前的发布的.NET 5中, 也把 Activity 增强为 ActivitySource, 主要原因还…

42张动图带你走进神奇的物理世界,超震撼!

全世界只有3.14 % 的人关注了爆炸吧知识世界之大&#xff0c;无奇不有。生活中其实有许多神奇的物理化学现象。下面就一起来看看吧&#xff01;图片加载慢稍加等待即可哦~神 奇 的 物 理 反 应1.锤击被液氮冻上的康乃馨&#xff0c;求康乃馨的心理阴影面积。2.比重比空气还大的…

Linux优化之IO子系统监控与调优

Linux优化之IO子系统作为服务器主机来讲&#xff0c;最大的两个IO类型 &#xff1a;1.磁盘IO 2.网络IO这是我们调整最多的两个部分所在磁盘IO是如何实现的在内存调优中&#xff0c;一直在讲到为了加速性能&#xff0c;linux内核一般情况下都会尝试将磁盘上的慢速设备上的文件缓…

用3年时间破解学界200多年难题,年仅21岁的天才竟因谈了一场恋爱挂掉了.........

全世界只有3.14 % 的人关注了爆炸吧知识俗话说&#xff0c;英雄难过美人关&#xff0c;即便是智商超群的数学天才也毫不例外。破得了百年的世界难题&#xff0c;却解不开一个小小的爱情谜团......没错&#xff0c;这位为情所困的数学天才&#xff0c;便是今天的主人公——伽罗瓦…

投影变换与视口变换

一些说明&#xff1a; 0. 投影变换&#xff1a;描述如何指定视景体(viewing volume)的形状和方向。视口变换&#xff1a;解释如何控制三维模型坐标到屏幕坐标的变换。 1. 无论是透视投影还是平行投影&#xff08;正交投影&#xff09;&#xff0c;只有在视景体中的物体才可见。…

java 按钮设置图片_Java中如何设置带图片按钮的大小

在java部分需要用到图形界面编程的项目中&#xff0c;经常会使用图片设置对按钮进行美化&#xff0c;但是使用时会出现一个很麻烦的问题&#xff0c; 按照方法&#xff1a;JButton jb1 new JButton();jb1.setBounds(0, 0, 25, 20);ImageIcon ii new ImageIcon("images/x…

JAVA 异常库

为什么80%的码农都做不了架构师&#xff1f;>>> 1.java.lang.NumberFormatException: multiple points已解决 多线程方法中使用了共享变量SimpleDateFormat&#xff0c;报如下错误&#xff1a; java.lang.NumberFormatException: multiple points at sun.misc.Floa…

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换

WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换独立观察员 2021 年 8 月 23 日我们平常在 WPF 中进行资源绑定操作&#xff0c;一般就是用 StaticResource 或者 DynamicResource 后面跟上资源的 key 这种形式&#xff0c;能满足大部分需求。但是有的时候&am…

你一直憋着的那个屁,放出来时真的有人知道吗?我先告诉你憋着不放的屁会到哪去……...

全世界只有3.14 % 的人关注了爆炸吧知识制作团队制作人 超模君编剧 恐恐恐插画 杨羊羊友情出演 超模君 想增加更多的奇怪知识&#xff1f;带你入学↓↓↓关注“爆炸吧知识”日增怪知识&#xff01;

Android中View绘制流程

2019独角兽企业重金招聘Python工程师标准>>> 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的&#xff0c;该函数做的执行过程可简单概况为 根据之前设置的状态&#xff0c;判断是否需要重新计算视图大小(measure)、是否重新需要安置视图的…