[Architect] ABP(现代ASP.NET样板开发框架) 翻译
所有翻译文档,将上传word文档至GitHub
本节目录:
- 简介
- 代码示例
- 支持的功能
- 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至简)



说明:
之所以一边英文,一边中文是由于某些词英文表达更好,或者是由于ABP已自带相关内容链接.
[Architect] ABP(现代ASP.NET样板开发框架) 翻译的更多相关文章
- ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...
- ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...
- ABP(现代ASP.NET样板开发框架)系列之4、ABP模块系统
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之4.ABP模块系统 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP(现代ASP.NET样板开发框架)系列之5、ABP启动配置
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之5.ABP启动配置 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP(现代ASP.NET样板开发框架)系列之6、ABP依赖注入
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之6.ABP依赖注入 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP(现代ASP.NET样板开发框架)系列之9、ABP设置管理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之9.ABP设置管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...
- ABP(现代ASP.NET样板开发框架)系列之11、ABP领域层——仓储(Repositories)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之11.ABP领域层——仓储(Repositories) ABP是“ASP.NET Boilerplate Proj ...
随机推荐
- jackson json转实体 允许特殊字符和转义字符 单引号
//允许出现特殊字符和转义符 mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ; //允许出现单引号 mapper.confi ...
- Mac OS X Terminal 101:终端使用初级教程
Mac OS X Terminal 101:终端使用初级教程 发表于 2012 年 7 月 29 日 由 Renfei Song | 文章目录 1 为什么要使用命令行/如何开启命令行? 2 初识Com ...
- [原创]实现android知乎、一览等的开场动画图片放大效果
代码下载地址: https://github.com/Carbs0126/AutoZoomInImageView 知乎等app的开场动画为:一张图片被显示到屏幕的正中央,并充满整个屏幕,过一小段时间后 ...
- 使用U盘代替光盘来刻录ISO镜像文件的方法
原文链接: http://jingyan.baidu.com/article/d3b74d64aa4a6a1f77e60932.html 1.以管理员身份运行UltraISO,点击“文件”菜单下的“打 ...
- linux 笔试题
一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来 ...
- POJ 2078 Matrix
Matrix Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 3239 Accepted: 1680 Descriptio ...
- 跟随标准与Webkit源码探究DOM -- 获取元素之getElementsByTagName
按照标签名获取元素 -- getElementsByTagName 标准 DOM 1在Element和Document两个interface中均有定义,原型NodeList getElementsBy ...
- Android开发常见问题
1. android模拟机上不能加文件提示read only file system 先:adb shell 后:mount -o remount ,rw /就行不需要附加多余的东西 就上面两行,解决 ...
- viewWithTag获取subview规则详解
通常我们在view层级里面对subView的操作可以通过两种方式:1.保留一个subview的引用,然后在类中通过该引用对该subview进行操作,但是要注意在适当的位置添加内存维护的代码,退出前手动 ...
- python 字符串比较
cmp方法比较两个对象,并根据结果返回一个整数.cmp(x,y)如果X< Y,返回值是负数 如果X>Y 返回的值为正数. sStr1 = 'strch'sStr2 = 'strchr'pr ...