本文主要是介绍ABP VNext学习日记25,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.域名解析器流程
解析:
2.Volo.Abp.BackgroundWorkers
解析:应用程序初始化时启动,应用程序关闭时销毁,单例实现,适合执行长周期或周期性任务。
[1]IBackgroundWorker
[2]PeriodicBackgroundWorkerBase
[3]IBackgroundWorkerManager
[4]AbpBackgroundWorkerOptions
3.Volo.Abp.BackgroundWorkers.Quartz[集成Quartz]
解析:Quartz并发执行,但是可以设置不让并发执行:
[1]工作者在Quartz集群中执行
[2]单例实现
[3]适合周期性任务
[4]需要注意Quartz并发问题
[5]QuartzBackgroundWorkerBase
[6]QuartzBackgroundWorkerManager
[7]AbpBackgroundWorkerQuartzOptions
4.使用AbpApplicationFactory创建app
解析:
using (var app = AbpApplicationFactory.Create<AppModule>(c => c.UseAutofac()))
{app.Initialize();await app.ServiceProvider.GetRequiredService<IBackgroundWorkerManager>().StartAsync();app.Shutdown();await Task.Delay(1000);
}
5.Volo.Abp.BackgroundJobs
解析:
[1]由后台任务调度器创建示例并启动
[2]任务结束后销毁
[3]临时对象实现
[4]适合执行一次性任务
[5]IBackgroundJob<in TArgs>
[6]BackgroundJobWorker
[7]DefaultBackgroundJobManager
[8]BackgroundJobExecuter
6.Volo.Abp.BackgroundJobs.Quarts[集成Quartz]
解析:
[1]任务在Quartz集群中执行
[2]临时对象实现
[3]QuartzJobExecutionAdapter<TArgs>
[4]QuartzBackgroundJobManager
[5]AbpBackgroundJobQuartzOptions[重拾次数及重试时间间隔]
7.Volo.Abp.BackgroundJobs.Hangfire[Hangfire集成]
解析:
[1]任务在Hangfire托管中执行
[2]临时对象实现
[3]HangfireJobExecutionAdapter<TArgs>
[4]HangfireBackgroundJobManager
8.Abp Validation
解析:
[1]基于ASP.NET Core Validation
[2]验证特定的Controller或Service的方法
[3]可用于Non-Web项目的Validation
[4]Data Annotation Attributes
[5]IValidatableObject
[6]IValidationEnabled
[7]DisableValidation
[8]IObjectValidator
[9]IMethodInvocationValidator
[10]FluentValidation
9.ABP Audit
解析:
[1]可扩展的审计日志系统
[2]数据库提供程序支持
[3]ASP.NET Core Request Audit
[4]Service Invoke Audit
[5]Entity change history
[6]审计日志贡献者
[7]IAuditLogScope
[8]IAuditingManager
[9]审计日志模块
10.AuditLogInfo
解析:
11.ABP异常
解析:
[1]异常处理
[2]自动异常处理:错误消息格式,日志
[3]业务异常
[4]异常本地化:用户友好异常,使用错误代码,使用消息的格式化参数
[5]HTTP状态代码映射:自定义映射
[6]内置的异常
12.ABP分布式缓存
解析:
[1]基于ASP.NET Core IDistributedCache扩展
[2]IDistributedCache<TCacheItem>
[3]IDistributedCache<TCacheItem, TCacheKey>
[4]UnitOfWork关注:在UoW提交时更新实际缓存值
[5]Redis实现:基于ASP.NET Core Redis分布式缓存实现
13.身份认证管理
解析:
[1]用户
[2]角色
14.Claim、ClaimIdentity和ClaimPrincipal
解析:登录就是身份认证过程:
[1]Claim:由Key和Value组成的声明
[2]ClaimIdentity:由声明组成一张身份证
[3]ClaimPrincipal:管理多张身份证
15.权限值提供者
解析:继承自PermissionValueProvider[或实现IPermissionValueProvider]的任何类都可以参与权限检查:
[1]UserPermissionValueProvider:从当前的声明中拿到当前用户ID并检查用户授权,用户声明由AbpClaimTypes.UserId静态属性定义
[2]RolePermissionValueProvider:从当前的声明中拿到授予当前用户的角色集合并且判断角色是否具有指定的权限,角色声明由AbpClaimTypes.Role静态属性定义
[3]ClientPermissionValueProvider:从当前声明中拿到当前客户端并检查客户端是否具有指定的权限,这在没有当前登录用户的客户端交互特别有用,客户端声明由AbpClaimTypes.ClientId静态属性定义
16.PermissionValueProvider的CheckAsync返回值
解析:
[1]PermissionGrantResult.Granted:授予用户权限,如果没有其它的授权值提供程序返回Prohibited,那么最后会返回Granted
[2]PermissionGrantResult.Prohibited:禁止授权用户,任何一个授权值提供程序返回了Prohibited,那么其它的提供程序返回的值都不再重要
[3]PermissionGrantResult.Undefined:代表当前无法确定是否授予或禁止权限,返回UnDefined由其它权限值提供程序检查权限
17.AlwaysAllowAuthorizationService
解析:通常用于在需要禁用授权系统的集成测试中。
18.实现IHasExtraProperties接口默认基类
解析:
[1]由AggregateRoot类实现
[2]由ExtensibleEntityDto,ExtensibleAuditedEntityDto…DTO基类实现
[3]由ExtensibleObject实现,它是一个简单的基类,任何类型的对象都可以继承
19.IRemoteService接口
解析:如果一个类实现了IRemoteService接口,那么它会被自动选择为API控制器。
20.ImethodInvocationValidator
解析:IMethodInvocationValidator用于验证方法调用,它在内部使用IObjectValidator来验证传递给方法调用的对象。由于框架会自动使用此服务,通常并不需要此服务,但在少数情况下可能在应用程序中重用或替换它。
21.TypePredicate选项
解析:通过提供TypePedicate选项进一步过滤类以成为API控制器:
services.Configure<AbpAspNetCoreMvcOptions>(options =>
{options.ConventionalControllers.Create(typeof(BookStoreApplicationModule).Assembly, opts =>{opts.TypePredicate = type => { return true; };});
});
如果不想将此类型公开为API控制器,那么可以在类型检查时返回false。
22.[RemoteService(IsMetadataEnabled = false)]
解析:
[1]API Explorer可以由客户端获取API结构的服务,Swagger使用它为endpoint创建文档和test UI。
[2]默认情况下,HTTPAPI控制器会自动启用API Explorer,可以使用RemoteService按类或方法的级别控制它
[3]禁用IsMetadataEnabled从而从APIExplorer中隐藏此服务,并且无法被发现。但是它仍然可以被知道确切API路径/路由的客户端使用。
23.创建动态客户端代理
解析:AddHttpClientproxies方法获得一个程序集,找到这个程序集中所有的服务接口,创建并注册代理类。
[DependsOn(typeof(AbpHttpClientModule), //用来创建客户端代理typeof(BookStoreApplicationContractsModule) //包含应用服务接口)]
public class MyClientAppModule : AbpModule
{public override void ConfigureServices(ServiceConfigurationContext context){// 创建动态客户端代理context.Services.AddHttpClientProxies(typeof(BookStoreApplicationContractsModule).Assembly);}
}
24.动态C# API客户端
解析:ABP可以自动创建C# API客户端代理来调用远程HTTP服务,不需要通过HttpClient或者其它低级的HTTP功能调用远程服务并获取数据。
25.Endpoint配置
解析:appsettings.json文件中的RemoteServices节点被用来设置默认的服务地址:
{"RemoteServices": {"Default": {"BaseUrl": "http://localhost:53929/"} }
}
通过AbpRemoteServiceOptions获取更多详细配置。
这篇关于ABP VNext学习日记25的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!