首页 > 其他分享 >【DDD实战】ABP vNext框架

【DDD实战】ABP vNext框架

时间:2024-07-14 20:53:24浏览次数:8  
标签:vNext context 配置 ConfigureServices ABP 模块 dll options DDD

ABP vNext配置

1. 模块化配置(AbpModule)

  1. 可支持API、UI 扩展
  2. 可随意整合拆分
  3. 定制化需求 —— options

模块整合

下面是三种配置依赖模块的方式,分别是引用式、插件式、nuget

1. 引用式模块

需引用dll

配置步骤:

  1. 模块依赖 —— DependsOn(typeof(___Module)) 需避免循环依赖
  2. 配置DI —— ConfigureServices, 只需要标记,之后Abp框架会自动注入 详见3. IOC三种注册
  3. 初始化 —— 主模块的Configure中调用app.OnApplicationIntialization() —— 管道 中间件

2. 插件式模块

无需显示引用dll

配置步骤:

  1. 需依赖的模块编译生成dll
  2. 拷贝dll到对应目录如 /plugins/*.dll
  3. 在ConfigureServices中配置如下
context.Services.AddApplication<BookStoreApplicationModule>(
    options =>
    {
        options.PlugInSources.AddFolder(@"\plugins");
    }
);

3. nuget模块

TODO 需搭建nuget私服


模块拆分

TODO 动态C#客户端 —— 调用分布式服务如同调用本地类


配置swagger

public override void ConfigureServices(ServiceConfigurationContext context)
{
    context.services.AddAbpSwaggerGen(options =>
    {
        options.SwaggerDoc("v1", new OpenApiInfo { Title = "BookStore API", Version = "v1" });
        options.DocInclusionPredicate((docName, description) => true);
        options.CustomSchemaIds(type => type.FullName);
    });
}

// 或者是在Configure
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
    var app = context.GetApplicationBuilder();
    var env = context.GetEnvironment();

    //配置swagger中间件
    app.UseSwagger();
    app.UseAbpSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "BookStore API");
    });
   
}


程序启动的执行顺序

  1. ConfigureServices() —— 从
  2. Configure() —— 从
  3. ShutDown() —— 从

2. AutoAPI

AutoAPI是指——不用写controller,框架直接用application层

配置步骤:

  1. Configure中配置swagger
  2. ConfigureServices配置options —— ConventionalControllers.Create(typeof(ApplicationModule).Assembly)
public override void ConfigureServices(ServiceConfigurationContext context)
{
    Configure<AbpAspNetCoreMvcOptions>(options =>
    {
        options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly);
    });
}
  1. ApplicationService加上接口 IRemoteService

AutoAPI如何制定请求类型:

约定俗成的规则:
Alt text

自定义规则:
Alt text
Alt text

3. IOC三种注册

  1. 手动注册 —— CongigureServices中调用Add___()
  2. 接口自动注册 —— I___Dependency
  3. 特性自动注册 —— [Dependecncy(ServiceLifetime.___)]

done.

标签:vNext,context,配置,ConfigureServices,ABP,模块,dll,options,DDD
From: https://www.cnblogs.com/kyou/p/18301987

相关文章

  • abp框架必须移除的过滤器
    AbpExceptionFilter这个是abp默认异常处理过滤器,当我们需要统一返回结构时,需要移除AbpAutoValidateAntiforgeryTokenAttribute这个是abp身份验证过滤,当我们需要自定义jwt时需要移除移除代码示例:Configure<MvcOptions>(options=>{List<int>indexes=[];in......
  • 拯救中国足球,要不尝试一下DDD事件风暴?
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集张逸老师写了新文章《领域建模的常见问题及解决方案》,我来谈一谈对这篇文章的感想。(1)文章一开始,张逸老师大大地赞扬了事件风暴:图1摘自《领域建模的常见问题及解决方案》张逸老师......
  • python 识别图片验证码/滑块验证码准确率极高的 ddddocr 库
    前言验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。识别验证码的python库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库ddddocr(带带弟弟ocr)库.环境准备python版本要求小于等于python3.9版本pip安装pipin......
  • BP插件暴破验证码实战流程(BP+captcha-killer-modified+ddddocr)
    含有速成版本+工具介绍及问题=保姆级版一、验证码破解流程:BP插件暴破实战流程如下:1、下载安装插件captcha-killer2、启动本地验证码识别服务ddddocr --codereg.py3、抓验证码的包,发送到插件4、配置识别服务模板5、抓登录的包,payload选插件,单线程本次使用到工具如下......
  • abp 接入国产达梦8数据库
    1.修改数据库连接"Default":"server=host;port=5236;userid=ABP;password=1q2w3E*;database=ABP",建议用户名和数据库一样,后期便于处理2,添加达梦的ef库,sdk<PackageReferenceInclude="DM.Microsoft.EntityFrameworkCore"Version="3.1.0.20604&qu......
  • ABP之使用Hangfire
    首先ABP自带Hangfire,所以我们今天使用Volo.Abp.BackgroundJobs.HangFire1、在项目需要位置引入Nuget包(6.0.3)2、再引入基于内容的存储库:Hangfire.MemoryStorage(1.7.0)3、Hangfire.MemoryStorage不是abp封装的,所以可能会存在里面引用的Hangfire.Core版本和Volo.Abp.BackgroundJ......
  • YOLOv5改进 | 主干网络 | ODConv + ConvNeXt 增强目标特征提取能力
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 ......
  • 如何使用 Services.AddDistributedMemoryCache
    参考资料:https://www.cnblogs.com/RainFate/p/16920591.html AI生成:在.NETCore中,Services.AddDistributedMemoryCache()方法用于注册分布式内存缓存。这是一个内存中的缓存解决方案,适用于需要在多个服务器或服务之间共享缓存数据的分布式系统。如何使用AddDistributedMemory......
  • COLA架构初始化DDD项目
    使用COLA脚手架初始化项目实战代码:https://gitee.com/XuXiaoCong/cola-springboot-demoCOLA项目地址:https://github.com/alibaba/COLABiliBili视频创建项目使用COLA脚手架(Maven)创建COLA项目DgroupId:公司/组织名称DartifactId:项目名称Dversion:版本号Dpackage:包路......
  • 在IdentityServer4生成的JWT中添加一个自定义的Claim,用于ABP框架中要用到的token信息
    用过IdentityServer4或者熟悉ASP.NETCore认证的都应该知道有Claim,如何理解ids4中的Claim?这里可以理解为声明,我们每个用户都有多个Claim,每个Claim声明了用户的某个信息比如:Role=Admin,UserID=1000等等,这里Role,UserID每个都是用户的Claim,都是表示用户信息的单元 ,我们不妨把它称为......