700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于DDD的现代ASP.NET开发框架--ABP系列之1 ABP总体介绍

基于DDD的现代ASP.NET开发框架--ABP系列之1 ABP总体介绍

时间:2019-10-19 10:41:10

相关推荐

基于DDD的现代ASP.NET开发框架--ABP系列之1 ABP总体介绍

点这里进入ABP系列文章总目录

基于DDD的现代开发框架--ABP系列之1、ABP总体介绍

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

Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。

Boilerplate 基于DDD的经典分层架构思想,实现了众多DDD的概念(但没有实现所有DDD的概念)。

ABP的官方网站

ABP在Github上的开源项目:/aspnetboilerplate

ABP框架于5月4日首次在Github开源,截止到5月25日,总共进行了1271次代码提交,49次版本发布,现在的版本号是0.6.1.1。

Boilerplate采用了以下技术:

服务器端:

MVC 5、Web API 2、C# 5.0DDD领域驱动设计 (Entities、Repositories、Domain Services、Domain Events、Application Services、DTOs等)Castle windsor (依赖注入容器)Entity Framework 6 \ NHibernate,数据迁移Log4Net(日志记录)AutoMapper(实现Dto类与实体类的双向自动转换)

客户端:

BootstrapLessAngularJsjQueryModernizr其他JS库: jQuery.validate、jQuery.form、jQuery.blockUI、json2

ABP框架已实现了以下特性:

多语言/本地化支持多租户支持(每个租户的数据自动隔离,业务模块开发者不需要在保存和查询数据时写相应代码)软删除支持(继承相应的基类或实现相应接口,会自动实现软删除)统一的异常处理(应用层几乎不需要处理自己写异常处理代码)数据有效性验证( MVC只能做到Action方法的参数验证,ABP实现了Application层方法的参数有效性验证)日志记录(自动记录程序异常)模块化开发(每个模块有独立的EF DbContext,可单独指定数据库)Repository仓储模式(已实现了Entity Framework、NHibernate、MangoDB、内存数据库)Unit Of Work工作单元模式(为应用层和仓储层的方法自动实现数据库事务)EventBus实现领域事件(Domain Events)DLL嵌入资源管理通过Application Services自动创建Web Api层(不需要写ApiController层了)自动创建Javascript 的代理层来更方便使用Web Api封装一些Javascript 函数,更方便地使用ajax、消息框、通知组件、忙状态的遮罩层等等

除ABP框架项目以外,还开发了名叫“Zero”的模块,实现了以下功能:

身份验证与授权管理(通过 Identity实现的)用户&角色管理系统设置存取管理(系统级、租户级、用户级,作用范围自动管理)审计日志(自动记录每一次接口的调用者和参数)

我在其他项目中看到的很多优秀设计,在ABP项目中也已存在,而且可能实现得更好。ABP框架的代码,都通过xUnit进行了单元测试。作者一直在用ABP框架开发他们的实际项目,从Github和他官方论坛上的信息可以看到,有很多国外的开发者在将ABP用作生产项目的基础框架。如果需要直接使用ABP组件,可以通过Nuget安装(在VS的Nuget包管理界面搜索Abp)。

为了更好地将ABP适用于自己的项目,我对ABP的源码做了一些修改,而没有直接使用ABP组件。

我的前篇文章中有介绍:新思想、新技术、新架构——更好更快的开发现代应用程序(续1)

我希望更多国内的架构师能关注到ABP这个项目,也许这其中有能帮助到您的地方,也许有您的参与,这个项目可以发展得更好。

今天只是作了一个大概介绍,希望有更多的朋友能去阅读源代码,然后参与讨论。

ABP适用的场景:中小规模WEB应用开发。(处理高并发并不是ABP的强项。需要非常高并发的DDD框架,建议去研究netfocus的ENode。)

欢迎加QQ群:

ABP架构设计交流群:134710707ABP架构设计交流2群: 579765441

点这里进入ABP系列文章总目录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。