浙江省嘉兴市建设局网站,网站seo诊断方案,海南住房与城乡建设部网站,网站建设一百万ABP的模块非常方便我们扩展自己的或使用ABP提供的模块功能#xff0c;对于ABP自身提供的模块间的依赖关系想一探究竟#xff0c;并且试着把不必要的模块拆掉#xff0c;找到那部分核心模块。本次使用的是AspNetBoilerplate。源码下载从Github下载ABP源码后#xff0c;进入s… ABP的模块非常方便我们扩展自己的或使用ABP提供的模块功能对于ABP自身提供的模块间的依赖关系想一探究竟并且试着把不必要的模块拆掉找到那部分核心模块。本次使用的是AspNetBoilerplate。源码下载从Github下载ABP源码后进入src文件夹提供的大部分模块都在此中。很多工具也经ABP封装个人认为是方便了集成使用且融入到ABP这个框架。src文件夹中的类库有几种类型如.net standard(为了兼容.net framework)、.net 5 、.net framework的。我的想法是最小的模块引用因此按照如下两个条件移除移除.net framework的只专注于.net core所需要的。移除Zero模块。精简模块整理后也就是剩下这部分这样看仍然感觉有很多模块但对于其中大部分来讲更多的是将一些工具封装了下比如从SignalRAutoMapperLog4NetDapperEFCore等等。通过整理这部分类库间的依赖关系(此图中去掉了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.Resolveapplicationpartmanager().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/AbpIntegrateDemo2021-08-19,望技术有成后能回来看见自己的脚步