ABP框架

ABP简介

我们根据不同的需求,会开发出各种应用程序。但是在不同系统开发的过程中,我们总会遇到很多具有通用性的程序结构。例如授权、认证、异常处理、日志、本地化、数据库链接、配置管理、审计日志等具有通用性的程序结构。软件工程师们通过分层、模块化架构、领域驱动设计、依赖注入等方法追寻着最佳实践相关的软件架构。同时会基于一些良好的习惯进行程序开发。

在以前,以上所述的工作会耗费大量时间,并且很难从每个项目中解耦分离,很多公司搭建了自己的框架,用于快速开发及调试程序。事实上,并不是每一家公司都能够有搭建优质框架的能力,以及整理相关文档、对其进行维护

ASP.NET Boilerplate (ABP)是一个开源且文档丰富的应用框架,ABP的愿景是成为一个能够适用于所有公司和所有开发人员的通用框架。它的意义不仅仅是一个程序框架,同时也提供了一种健壮的、基于领域驱动设计及最佳实践架构模型

快速入门

通过一个简单的示例来体验ABP的特性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class TaskAppService : Application, ITaskAppService
{
private readonly IRepository<Task> _taskRepository;

public TaskAppService(IRepository<Task> taskRepository)
{
_taskRepository = taskRepository;
}

[AbpAuthorize(MyPermission.UpdatingTasks)]
public async Task UpdateTask(UpdateTaskInput input)
{
Logger.Info("更新任务信息情况:" + input);

var task = await _taskRepository.FirstOrDefaultAsync(input.TaskId);
if(task == null)
{
throw new UserFriendlyException(L("未找到任务信息"));
}

input.MapTo(task);
}
}

我们展示了应用层的一个方法。在领域驱动设计中,应用层的作用是为展现层实现其相关的用例。我们可以认为UpdateTask这个方法会通过AJAX被调用。而ABP具有如下特性:

  • 依赖注入
  • 仓储
  • 授权
  • 验证
  • 审计日志
  • 工作单元
  • 异常处理
  • 日志
  • 本地化
  • 自动映射
  • 动态WebApi层
  • 动态AJAX代理

我们通过这个简单的示例就可以看到这些特性。这些工作通常需要大量的时间,但是现在它们都由ABP框架自动处理。