[Architect] ABP(现代ASP.NET样板开发框架)(1) 介绍

本节目录:

  • 简介
  • 代码示例
  • 支持的功能
  • GitHub

简介

ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称。

ABP不仅仅是1个框架,更提供了一个基于DDD和最佳实践方案

ABP的官方网站:http://www.aspnetboilerplate.com

ABP在Github上的开源项目:https://github.com/aspnetboilerplate

代码示例

(Application层代码示例)

public class TaskAppService : ApplicationService, ITaskAppService
{
    private readonly IRepository<Task> _taskRepository;

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

    [AbpAuthorize(MyPermissions.UpdatingTasks)]
    public async Task UpdateTask(UpdateTaskInput input)
    {
        Logger.Info("Updating a task for input: " + input);

        var task = await _taskRepository.FirstOrDefaultAsync(input.TaskId);
        if (task == null)
        {
            throw new UserFriendlyException(L("CouldNotFoundTheTaskMessage"));
        }

        input.MapTo(task);
    }
}

  

支持的功能

  • Dependency Injection: 继承了application service的每个类, 都会注册到容器中 as transient (created per request). 并会自动注入所有依赖.
  • Repository: ABP 会创建1个 default repository for each entity. Default repository 有很多实用的方法. 我们也可以自定义repository的方法.
  • Authorization: ABP 会检查权限. 如果用户没有登录或者没有UpdatingTasks权限,在上面的例子中,则会自动阻止执行.通过添加特性标签实现权限.
  • Validation: ABP 会自动验证input参数是否为null.并根据(data annotation attributes and custom validation rules)对所有属性做验证.如果验证不通过,会抛出异常.
  • Audit Logging: User, browser, IP address, calling service, method, parameters等信息会自动记录下
  • Unit Of Work: 在ABP中, 每个application service 方法默认都会开启事务.在方法开始的时候,自动创建1个数据库连接和开启事务,方法没有异常的执行完会自动提交事务.
  • Exception Handling: 在ABP中,我们几乎不需要处理异常.ABP会自动记录,并通过合适的方法返回给客户端.
  • Logging: 可以通过Logger属性 write logs.Log4Net 是默认的日志框架,并且可配置替换成其他日志框架.
  • Localization: 当抛异常的时候,可以调用L方法,会自动使用本地化语言配置.
  • Auto Mapping: ABP定义1个MapTo扩展方法,使用AutoMapper方便我们做实体映射.
  • Dynamic Web API Layer: 通过配置,ABP会在运行的时候,自动将application service methods 生成Web API.
  • Dynamic Javascript AJAX Proxy: ABP自动创建javascript proxy methods可以直接调用application service methods.
  • Modularity: 提供了完善的基础设施层来生成可复用的模块.
  • Data Filters: 提供自动过滤,如软删除,多租户.
  • Multi Tenancy: 提供单数据库 多用户方式的多租户.
  • Setting Management: 提供了完善的基础设施层来获取更改 application, tenant and user level 设置信息.
  • Unit & Integration Testing: 提供了基类简化单元和集成测试.
  • ...

GitHub

(图片引用tkb至简)

时间: 2024-10-20 07:44:38

[Architect] ABP(现代ASP.NET样板开发框架)(1) 介绍的相关文章

[Architect] ABP(现代ASP.NET样板开发框架)(2) 分层架构

本节目录 介绍 Domain Layer Application Layer Infrastructure Layer Web Layer SPA & MPA frameworks/libraries 其他 介绍 为了减少复杂性和提高代码的可重用性,采用分层架构是一种被广泛接受的技术. ABP遵循Domain Driven Design,在DDD中,会有4个基础分层. Presentation(展现层): 引用 Application Layer ,提供用户界面. Application(应用层

[Architect] ABP(现代ASP.NET样板开发框架)(7) 依赖注入

本节目录: 什么是依赖 传统方式的问题 解决方案 构造函数注入 属性注入 注入框架 Abp依赖注入框架 注册 通常注册 帮助接口 自定义注册 解析 构造函数 & 属性注入 IIocResolver & IIocManager 扩展 IShouldInitialize ASP.NET MVC & ASP.NET Web API注入 什么是依赖 如果你已经知道依赖注入思想,构造函数和属性注入模式,你可以跳到下节. 维基:"依赖注入是1种软件设计模式,在这种模式下,1个或多个依

[Architect] ABP(现代ASP.NET样板开发框架)(9) Caching

本节目录 介绍 ICacheManager WARNING: GetCache Method ICache ITypedCache Configuration 介绍 Abp提供了1个缓存的抽象.内部使用这个缓存抽象.虽然默认的实现使用MemoryCache,但是可以切换成其他的缓存. ICacheManager 提供缓存的接口为ICacheManager.我们可以注入并使用他.如: public class TestAppService : ApplicationService { privat

ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证

点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 几乎所有的企业级应用程序都会有不同级别的权限验证.权限验证是用于检查用户是否允许某些指定操作.

ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi

点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 建立动态WebApi控制器 Abp框架能够通过应用层自动生成web api: pu

ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 本文由台湾-小张提供翻译 仓储定义:“在领域层和数据映射层的中

ABP(现代ASP.NET样板开发框架)系列之23、ABP展现层——异常处理

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之23.ABP展现层——异常处理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 在 web 应用程序中,异常通常是在 MVC Controller actions 和

ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 通用连接和事务管理方法 连接和事务管理是使用数据库的应用程

ABP(现代ASP.NET样板开发框架)主题线下交流会(上海)开始报名了!

点这里进入ABP系列文章总目录 ABP主题线下交流会(上海)开始报名了 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称.它是采用最佳实践和流行技术开发现代WEB应用程序的新起点. 对ABP还不够了解的朋友,可以先看看<基于DDD的现代ASP.NET开发框架--ABP系列之1.ABP总体介绍> 活动简介 大家期待已久的ABP线下交流活动马上就要开始了,请大家确认一下时间和地点,请确保能来参加再报名. 本次交流会的目的: 互相学习ABP相关经验