ABP基础架构深入探索攻略
ABP(Asp.Net Boilerplate)是一个基于ASP.NET Core的开源应用程序框架。
简介
为了实现跨平台开发,ABP采用了单体应用结构,将整个应用平台看作是一个大型的应用,将各个子系统与模块看作具备可独立可集成能力的组件,协同工作构建起整个应用生态架构。
ABP框架将应用程序分为四层:演示层(Presentation Layer)、业务层(Application Layer)、领域层(Domain Layer)和基础设施层(Infrastructure Layer)。
其中,演示层主要用于呈现数据,包括Web界面、移动端应用和桌面应用程序等;业务层实现应用程序的核心逻辑,封闭对低层次的领域层和基础设施层的依赖;领域层则主要用于实现具体的业务功能,封装了对基础设施层的依赖和对外部服务的调用;基础设施层实现数据持久化、缓存、日志等与平台无关的技术细节。
攻略
以下是ABP基础架构的深入探索攻略:
熟悉ABP的开发模式
ABP采用了DDD(领域驱动设计)的模式,将系统分为四个层次。以上述为例,快速入门并不会直接涉及所有的层次,我们仅需要熟悉掌握演示层(Presentation Layer)的相关知识,能够开发一些简单的业务流程即可。
熟练使用ABP的模块
ABP有很多实用的模块,例如:集成了IdentityServer的认证授权模块(Abp.IdentityServer)、多租户模块(Abp.MultiTenancy)等,可以让我们的开发变得更加轻松方便。
在使用这些套件之前,需要在startup里进行配置。例如:
Configure<AbpMultiTenancyOptions>(options =>
{
options.IsEnabled = MultiTenancyConsts.IsEnabled;
});
Configure<RazorPagesOptions>(options =>
{
options.Conventions.AuthorizeFolder("/");
});
熟悉ABP的插件
除了基础模块,还有一些扩展插件,例如:调度服务(Abp.Quartz)、邮件发送(Abp.MailKit)等。在使用这些插件之前,需要在startup里进行配置。
在使用这些插件之后,我们可以在应用程序中使用依赖注入,使用这些插件的服务。例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddQuartz(); // 添加Quartz
services.AddMailKit(); // 添加MailKit
}
示例
以下是使用ABP框架的两条实用示例:
示例1:使用Abp.IdentityServer模块实现认证授权
在startup.cs中进行配置:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services
.AddAuthentication()
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ApiName = "api1";
});
}
}
然后,我们就可以在代码中使用Authorize来稳妥接口:
[Authorize]
public class UsersController : ControllerBase
{
// ...
}
示例2:使用Abp.Quartz实现定时任务
public class BackgroundJob : ITransientDependency
{
private readonly IScheduler _scheduler;
public BackgroundJob(IScheduler scheduler)
{
_scheduler = scheduler;
}
public async Task ScheduleJobAsync()
{
var job = JobBuilder.Create<HiJob>().Build();
var trigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(20)
.RepeatForever())
.Build();
await _scheduler.ScheduleJob(job, trigger);
}
}
public class HiJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
await Console.Out.WriteLineAsync("Hi ABP!");
}
}
注意,使用Quartz前需要配置AbpQuartz模块。在startup.cs中进行配置:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddQuartz(); // 配置Abp.Quartz模块
}
结语
以上是ABP基础架构深入探索攻略,通过对ABP的了解,我们可以更加深入地理解ABP的设计理念,更快地开发出符合业务需求的高质量应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ABP基础架构深入探索 - Python技术站