ABP开发手记1 - 开篇

点这里进入ABP开发手记目录

基于DDD的现代ASP.NET开发框架 - ABP

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

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

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

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

ABP 的由来

“DRY——避免重复代码”是一个优秀的开发者在开发软件时所具备的最重要的思想之一。我们在开发企业WEB应用程序时都有一些类似的需求,例如:都需要登录页面、用户/角色管理、权限验证、数据有效性验证、多语言/本地化等等。一个高品质的大型软件都会运用一些最佳实践,例如分层体系结构、领域驱动设计、依赖注入等。我们也可能会采用ORM、数据库迁移(Database Migrations)、日志记录(Logging)等工具。

从零开始创建一个企业应用程序是一件繁琐的事,因为需要重复做很多常见的基础工作。许多公司都在开发自己的应用程序框架来重用于不同的项目,然后在框架的基础上开发一些新的功能。但并不是每个公司都有这样的实力。假如我们可以分享的更多,也许可以避免每个公司或每个项目的重复编写类似的代码。作者之所以把项目命名为“ASP.NET Boilerplate”,就是希望它能成为开发一般企业WEB应用的新起点,直接把ABP作为项目模板。

ABP是什么?

ABP是为新的现代Web应用程序使用最佳实践和使用最流行工具的一个起点。可作为一般用途的应用程序的基础框架或项目模板。它的功能包括:

服务器端:

  • 基于最新的.NET技术 (ASP.NET Core,EF Cor,ASP.NET MVC 5.x,EF6.x)
  • 实现领域驱动设计(实体、仓储、领域服务、领域事件、应用服务、数据传输对象,工作单元等等)
  • 实现分层体系结构(领域层,应用层,展现层和基础设施层)
  • 提供了一个基础架构来开发可重用可配置的模块
  • 集成一些最流行的开源框架/库,也许有些是你正在使用的
  • 提供了一个基础架构让我们很方便地使用依赖注入(使用Castle Windsor作为依赖注入的容器)
  • 提供Repository仓储模式支持不同的ORM(已实现Entity Framework 、NHibernate、MangoDb和内存数据库)
  • 支持并实现数据库迁移(EF 的 Code first)
  • 模块化开发(每个模块有独立的EF DbContext,可单独指定数据库)
  • 包括一个简单的和灵活的多语言/本地化系统
  • 包括一个 EventBus来实现服务器端全局的领域事件
  • 统一的异常处理(应用层几乎不需要处理自己写异常处理代码)
  • 数据有效性验证(Asp.NET MVC只能做到Action方法的参数验证,ABP实现了Application层方法的参数有效性验证)
  • 通过Application Services自动创建Web API层(不需要写APIController层了)
  • 提供基类和帮助类让我们方便地实现一些常见的任务
  • 使用“约定优于配置原则”

客户端:

  • Bootstrap、jQuery、Angular、Vue、React和其他JS库: jQuery.validate、jQuery.form、jQuery.blockUI、json2等
  • 为单页面应用程序(Angular,Vue,React)和多页面应用程序(Bootstrap+jQuery)提供了项目模板。
  • 自动创建Javascript 的代理层来更方便使用Web API
  • 封装一些Javascript 函数,更方便地使用ajax、消息框、通知组件、忙状态的遮罩层等等

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

  • 用户,角色,权限和组织单位管理界面。
  • 租户,版本和功能管理界面,租户订阅系统。
  • Xamarin移动应用程序。
  • 设置管理界面。
  • 动态语言管理用户界面,RTL支持。
  • 实时聊天和通知系统。
  • 审核日志报告用户界面。
  • 用户个人资料,帐户链接,模拟,社交登录等...
  • 基于Metronic的主题。

ABP不是什么?

ABP 提供了一个应用程序开发模型用于最佳实践。它拥有基础类、接口和工具使我们容易建立起可维护的大规模的应用程序。

然而:

它不是RAD工具之一,RAD工具的目的是无需编码创建应用程序。相反,ABP提供了一种编码的最佳实践。

它不是一个代码生成工具。在运行时虽然它有一些特性构建动态代码,但它不能生成代码。

它不是一个一体化的框架。相反,它使用流行的工具/库来完成特定的任务(例如用EF做ORM,用Log4Net做日志记录,使得Castle Windsor作为赖注入容器, AngularJs 用于SPA 框架)。

——

原文地址:https://www.cnblogs.com/IT-Evan/p/ABP1.html

时间: 2024-11-05 11:54:52

ABP开发手记1 - 开篇的相关文章

ABP开发手记2 - 体系架构

点这里进入ABP开发手记目录 ABP分层体系架构 介绍 应用程序代码库的分层是一种广泛接受的技术,可帮助降低复杂性并提高代码可重用性.为了实现分层体系结构,ASP.NET Boilerplate遵循域驱动设计的原理. 域驱动设计层 域驱动设计(DDD)有四个基本层: 展示层:为用户提供界面.使用应用程序层来实现用户交互. 应用层:在表示层和域层之间进行中介.编排业务对象以执行特定的应用程序任务. 领域层:包括业务对象及其规则.这是应用程序的核心. 基础设施层:提供通用技术功能,这些功能主要使用第

ABP开发手记3 - 解决方案

点这里进入ABP开发手记目录 创建项目 点这里进入ABP启动模板 如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!"即可创建项目. 解读项目 展示层 (JD.CRS.Web.Mvc) 提供一个用户界面,实现用户交互操作. ASP.NET Core MVC(模型-视图-控制器)可以视为展示层.它可以是物理层(通过HTTP API使用应用程序)或逻辑层(直接注入和使用应用程序服务).无论哪种情况,它都可以包括 本地化,导航,对

ABP开发手记4 - 初始化运行

点这里进入ABP开发手记目录 编译解决方案 重新生成解决方案,确保生成成功. 连接数据库 打开JD.CRS.Web.Host / appsettings.json,修改数据库连接设置ConnectionStrings. 打开JD.CRS.Web.Host / appsettings.json,做同样修改. 迁移数据库 方法一 设置JD.CRS.Web.Mvc为启始项目 打开工具 / NuGet包管理器 / 程序包管理器控制台 默认项目选择JD.CRS.EntityFrameworkCore 依次

ABP开发手记5 - 界面调整

点这里进入ABP开发手记目录 调整前 调整后 调整项 页面标题 把favicon.ico替换为指定Logo JD.CRS.Web.Mvc\wwwroot\favicon.ico 顶部工具栏 把logo.png替换为指定Logo JD.CRS.Web.Mvc\wwwroot\images\logo.png 左侧菜单栏 调整用户信息区布局 JD.CRS.Web.Mvc\Views\Shared\Components\SideBarUserArea\Default.cshtml 右侧内容区 调整右侧内

ABP开发手记8 - 应用层创建应用服务

点这里进入ABP开发手记目录 创建目录 在应用层(即JD.CRS.Application)下新建文件夹Course //用以存放Course相关应用服务 在JD.CRS.Application/Course下新建文件夹Dto //用以存放Course相关数据传输对象 创建数据传输对象 在JD.CRS.Application/Course/Dto下新建两个Dto 只读对象 CourseDto.cs //用于查询Course对象 贴上AutoMapFrom的特性 [AutoMapFrom(typeo

ABP开发手记6 - 领域层创建实体

点这里进入ABP开发手记目录 创建实体 在领域层(即JD.CRS.Core)下新建文件夹Entitys //用以存放实体对象添加一个实体类Course.cs //课程信息 1 using Abp.Domain.Entities; 2 using Abp.Domain.Entities.Auditing; 3 using Abp.Timing; 4 using System; 5 using System.Collections.Generic; 6 using System.ComponentM

ABP开发手记10 - 展示层实现增删改查-控制器

点这里进入ABP开发手记目录 创建视图模型 在展示层(即JD.CRS.Web.Mvc)的Controllers下新建一个控制器CourseController.cs 1 using Abp.Application.Services.Dto; 2 using Abp.AspNetCore.Mvc.Authorization; 3 using JD.CRS.Authorization; 4 using JD.CRS.Controllers; 5 using JD.CRS.Course; 6 usin

ABP开发手记9 - 展示层实现增删改查-视图模型

点这里进入ABP开发手记目录 创建视图模型 在展示层(即JD.CRS.Web.Mvc)的Models下新建文件夹Course //用以存放Course相关视图模型 在JD.CRS.Web.Mvc/Models/Course下新建两个视图模型 只读模型 CourseListViewModel.cs //用于查询Course视图模型 1 using System.Collections.Generic; 2 using JD.CRS.Course.Dto; 3 4 namespace JD.CRS.

ABP开发手记7 - 基础设施层更新数据库

点这里进入ABP开发手记目录 设置数据库 在基础设施层(即JD.CRS.EntityFrameworkCore)打开数据库环境设置 JD.CRS.EntityFrameworkCore/EntityFrameworkCore/CRSDbContext.cs添加一行 public DbSet<Course> Course { get; set; } //创建数据表Course 1 using Microsoft.EntityFrameworkCore; 2 using Abp.Zero.Enti