乐趣区

关于程序员:ABP-框架

ABP 框架基础知识

ABP 是一个开源且文档敌对的应用程序框架。ABP 不仅仅是一个框架,它还提供了一个最徍实际的基于畛域驱动设计 (DDD) 的体系结构模型,能够反对 .net framework 和 .net core 两种技术流派。

ABP 框架特点

  • 依赖注入,这个局部应用 Castle windsor(依赖注入容器)来实现依赖注入,这个也是咱们常常应用 IOC 来解决的形式;
  • Repository 仓储模式,已实现了 Entity Framework、NHibernate、MangoDB、内存数据库等,仓储模式能够疾速实现对数据接口的调用;
  • 身份验证与受权治理,能够应用申明个性的形式对用户是否登录,或者接口的权限进行验证,能够通过一个很细粒度的形式,对各个接口的调用权限进行设置;
  • 数据有效性验证,ABP 主动对接口的输出参数对象进行非空判断,并且能够依据属性的申请信息对属性的有效性进行校验;
  • 审计日志记录,也就是记录咱们对每个接口的调用记录,以及对记录的创立、批改、删除人员进行记录等解决;
  • Unit Of Work 工作单元模式,为应用层和仓储层的办法主动实现数据库事务,默认所有应用服务层的接口,都是以工作单元形式运行,即便它们调用了不同的存储对象解决,都是处于一个事务的逻辑外面;
  • 异样解决,ABP 框架提供了一整套比较完善的流程解决操作,能够很不便的对异样进行进行记录和传递;
  • 日志记录,我么能够利用 Log4Net 进行惯例的日志记录,不便咱们跟踪程序处理信息和错误信息;
  • 多语言 / 本地化反对,ABP 框架对多语言的解决也是比拟敌对的,提供了对 XML、JSON 语言信息的配置解决;
  • Auto Mapping 主动映射,这个是 ABP 的很重要的对象隔离概念,通过应用 AutoMaper 来实现域对象和 DTO 对象的属性映射,能够隔离两者的逻辑关系,然而又能轻松实现属性信息的赋值;
  • 动静 Web API 层,利用这个动静解决,能够把 Application Service 间接公布为 Web API 层,而不须要在累赘的为每个业务对象手工创立一个 Web API 的控制器,十分不便;
  • 动静 JavaScript 的 AJax 代理解决,能够主动创立 Javascript 的代理层来更方便使用 Web Api,这个在 Web 层应用。

ABP 框架特地的性能

  • 多租户反对(每个租户的数据主动隔离,业务模块开发者不须要在保留和查问数据时写相应代码;
  • 软删除反对(继承相应的基类或实现相应接口,会主动实现软删除)
  • 零碎设置存取治理(零碎级、租户级、用户级,作用范畴主动治理)
  • EventBus 实现畛域事件(Domain Events)
  • 模块以及模块的依赖关系实现插件化的模块解决等等

ABP 框架分层架构图

前后端拆散的思维,不仅仅能够利用在 Web 的 B / S 开发,同时实用于 C / S 开发

  • 前端 Web 端能够应用 Ant-Design(React)、IView(VUE)、Angular 等不同的前端技术来承载界面出现层
  • 前端 Client 桌面端能够应用 MaterialDesign 设计规范,依照 Prism 或者 MVMMLight 的 MVMVM 框架联合利用起来

WEB API 优先的架构

ABP 框架的外围次要以.NET 的后端技术栈为主线,尽管 ASP.NET CORE MVC 和 Web API 分成了两局部,然而他的动静公布为 Web API 无限的架构提供了更好的便当。

在当今风行的展示层中,越来越不依赖于后端的技术实现,而侧重于 Web API 标准化的对接,基于 JSON 数据的交互解决。不论是以 Ant-Design(React)、IView(VUE)、Angular 等技术利用的 Web 前端,咱们能够看到这些架构很容易实现对 Web API 的标准接口对接,在我较早提供的 Winform 混合框架外面,也是以 Web API 优先的策略进行云端利用的部署

ABP 框架的我的项目构造

ABP 框架蕴含了两个局部,一个根底的 ABP 框架,一个 ABP 根底框架上的扩大利用。提供了人员人员、角色、权限、会话、身份验证、多租户、日志记录等等内容,咱们个别指的 ABP 框架利用就是这个根底上扩大本人的业务我的项目。这个局部,咱们能够依据官网上进行肯定的选项配置,而后下载应用。

根底构造组成部分

Package Status
Abp NuGet version
Abp.AspNetCore NuGet version
Abp.Web.Common NuGet version
Abp.Web NuGet version
Abp.Web.Mvc NuGet version
Abp.Web.Api NuGet version
Abp.Web.Api.OData NuGet version
Abp.Web.Resources NuGet version
Abp.Web.SignalR NuGet version
Abp.Owin NuGet version
Abp.EntityFramework.Common NuGet version
Abp.EntityFramework NuGet version
Abp.EntityFramework.GraphDiff NuGet version
Abp.EntityFrameworkCore NuGet version
Abp.NHibernate NuGet version
Abp.Dapper NuGet version
Abp.FluentMigrator NuGet version
Abp.AspNetCore NuGet version
Abp.AspNetCore.SignalR NuGet version
Abp.AutoMapper NuGet version
Abp.HangFire NuGet version
Abp.HangFire.AspNetCore NuGet version
Abp.Castle.Log4Net NuGet version
Abp.RedisCache NuGet version
Abp.RedisCache.ProtoBuf NuGet version
Abp.MailKit NuGet version
Abp.Quartz NuGet version
Abp.TestBase NuGet version
Abp.AspNetCore.TestBase NuGet version

扩大利用模板款式如下,需到官网下载

下载.net core 我的项目后,其中后端局部的我的项目视图如下所示

咱们从这个我的项目外面能够看到,它次要是分为上面几个我的项目分层。

  • Application 应用层:应用层提供一些应用服务(Application Services)办法供展示层调用。一个应用服务办法接管一个 DTO(数据传输对象)作为输出参数,应用这个输出参数执行特定的畛域层操作,并依据须要可返回另一个 DTO。
  • Core 畛域核心层,畛域层就是业务层,是一个我的项目的外围,所有业务规定都应该在畛域层实现。这个我的项目外面,除了定义所需的畛域实体类外,其实能够定义咱们本人的自定义的仓储对象(相似 DAL/IDAL),以及定义本人的业务逻辑层(相似 BLL/IBLL),以及基于 AutoMapper 映射规定等内容。
  • EntityFrameworkCore 实体框架核心层,这个我的项目不须要批改太多内容,只须要在 DbContext 外面退出对应畛域对象的仓储对象即可。
  • Migrator 数据迁徙层,这个是一个辅助创立的控制台程序我的项目,如果基于 DB First,咱们能够利用它来创立咱们我的项目的初始化数据库。
  • Web.Core Web 核心层,基于 Web 或者 Web API 的核心层,提供了对身份登陆验证的根底解决,没有其余内容。
  • Web.Core.Host Web API 的宿主层,也是动静公布 Web API 的核心内容,另外在 Web API 外面整合了 Swagger,使得咱们能够不便对 Web API 的接口进行调试。
  • Tests 单元测试层,这个提供了一些应用层对象的模仿测试,其中测试的数据库应用的是 Entity Framework 的内存数据库,不影响理论数据库内容。
退出移动版