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

点这里进入ABP系列文章总目录nbsp 基于 DDD 的现代 ASP NET 开发框架 ABP 系列之 1 ABP 总体介绍 nbsp ABP 是 ASP NETBoilerpla ASP NET 样板项目 的简称 ASP NETBoilerpla 是一个用最佳实践和流行技术开发现代 WEB 应用程序的新起点 它旨在成为一个通用的 WEB 应用程序框架和项目模板 ASP NETBoilerpla 基于 DDD 的经典

 

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

 

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

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

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

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

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

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

 

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

 

ASP.NET Boilerplate采用了以下技术:

服务器端:

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

客户端:

  • Bootstrap 
  • Less
  • AngularJs
  • jQuery
  • Modernizr
  • 其他JS库: jQuery.validate、jQuery.form、jQuery.blockUI、json2

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

  • 多语言/本地化支持
  • 多租户支持(每个租户的数据自动隔离,业务模块开发者不需要在保存和查询数据时写相应代码)
  • 软删除支持(继承相应的基类或实现相应接口,会自动实现软删除)
  • 统一的异常处理(应用层几乎不需要处理自己写异常处理代码)
  • 数据有效性验证(Asp.NET 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”的模块,实现了以下功能:

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

 

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

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

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

 

欢迎加ABP架构设计交流:    ABP架构设计交流群

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216708.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:15
下一篇 2026年3月18日 上午11:15


相关推荐

  • RabbitMQ入门:发布/订阅(Publish/Subscribe)[通俗易懂]

    在前面的两篇博客中RabbitMQ入门:HelloRabbitMQ代码实例RabbitMQ入门:工作队列(WorkQueue)遇到的实例都是一个消息只发送给一个消费者(工作者),他们的消息

    2022年2月16日
    45
  • f1 score java_F1 score「建议收藏」

    f1 score java_F1 score「建议收藏」项目中需要判断用户提交的多选题选项的正确率,比如正确答案应该为a,b,c,而用户选择的是a,d,那么如何判断他的正确率呢,这个场景就需要用到F1score来计算。FromWikipedia,thefreeencyclopediahttp://en.wikipedia.org/wiki/F1_scoreInstatisticalanalysisofBinaryclassi…

    2022年10月15日
    4
  • VMware 虚拟机如何连接网络「建议收藏」

    VMware 虚拟机如何连接网络「建议收藏」ps:本教程是针对虚拟机NAT模式连接网络一、首先查看自己的虚拟机服务有没有开启,选择电脑里面的服务查看;1.计算机点击右键选择管理2.进入管理选择VM开头的服务如果没有开启的话就右键开启二、虚拟机服务开启后就查看本地网络虚拟机的网卡启动没有1.电脑右下角网络标志右键进入网络和共享中心2.点击更改适配器,查看虚拟机的虚拟网卡启动没有,没有启动的话右键点击启动3.网卡开启后设置ip地址

    2022年4月20日
    2.8K
  • easyadmin笔记

    easyadmin笔记记录 easyadmin 相关小知识点 1 二级页面操作完成后 关闭当前页面 并刷新 index 页面表格 rksure function 确认入库 ea listen function data returndata function res ea msg success res msg function

    2026年3月19日
    2
  • C# SortedList类概念和示例

    SortedList类[C#]命名空间:System.Collections表示键/值对的集合,这些键和值按键排序并可按照键和索引访问。SortedList是Hashtable和A

    2021年12月21日
    41
  • SpringBoot重点详解–@Conditional注解

    SpringBoot重点详解–@Conditional注解目录 Conditional 注解自定义 ConditionalS 扩展注解在上一章 SpringBoot 重点详解配置文件 中曾简单介绍过如何利用 Profile 注解来根据指定 profile 是否被激活动态地决定是否要创建某一个 Bean 在这一章 我们将介绍另一种根据条件来装配 Bean 的新方法 使用 Conditional 注解 根据是否满足

    2025年10月14日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号