第60篇 abp结构介绍
abp是一个开源且文档友爱的运用程序结构,供给了一个依据范畴驱动规划(DDD)的体系结构模型,能够支撑.net core和.net framework两种技能门户。
1.abp结构特色
1.1 依靠注入
这个部分运用 Castle windsor (依靠注入容器)来完成依靠注入,这个也是咱们常常运用IOC来处理的办法;
1.2 Repository仓储形式
已完成了Entity Framework、NHibernate、MangoDB、内存数据库等,仓储形式能够快速完成对数据接口的调用;
1.3 身份验证与授权办理
能够运用声明特性的办法对用户是否登录,或许接口的权限进行验证,能够经过一个很细粒度的办法,对各个接口的调用权限进行设置;
1.4 数据有效性验证
ABP主动对接口的输入参数目标进行非空判别,而且能够依据特点的请求信息对特点的有效性进行校验;
1.5 审计日志记载
记载咱们对每个接口的调用记载,以及对记载的创立、修正、删去人员进行记载等处理;
1.6 Unit Of Work作业单元形式
为运用层和仓储层的办法主动完成数据库事务,默许一切运用服务层的接口,都是以作业单元办法运转,即便它们调用了不同的存储目标处理,都是处于一个事务的逻辑里边;
1.7 反常处理
abp结构供给了一整套比较完善的流程处理操作,能够很便当的对反常进行进行记载和传递;
1.8 日志记载
能够运用Log4Net进行惯例的日志记载,便当咱们盯梢程序处理信息和错误信息;
1.9 多言语/本地化支撑
abp结构对多言语的处理也是比较友爱的,供给了对XML、JSON言语信息的装备处理;
2.0 Auto Mapping主动映射
这个是ABP的很重要的目标阻隔概念,经过运用AutoMaper来完成域目标和DTO目标的特点映射,能够阻隔两者的逻辑关系,可是又能轻松完成特点信息的赋值;
2.1 动态Web API层
运用这个动态处理,能够把Application Service 直接发布为Web API层,而不需要在负担的为每个事务目标手艺创立一个Web API的控制器,十分便当;
2.2 动态JavaScript的AJax署理处理
能够主动创立Javascript 的署理层来更便当运用Web Api,这个在Web层运用。
2.abp结构特别的功用
2.1 多租户支撑
(每个租户的数据主动阻隔,事务模块开发者不需要在保存和查询数据时写相应代码;
2.2 软删去支撑
承继相应的基类或完成相应接口,会主动完成软删去
2.3 体系设置存取办理
体系级、租户级、用户级,效果规模主动办理
2.4 EventBus事情总线
完成范畴事情(Domain Events)
3 abp结构分层架构图
项目程序分层架构图(范畴驱动规划)
不只能够适用web开发,也合适c/s开发;
- 前端Web端能够运用Ant-Design(React)、IView(VUE)、Angular等不同的前端技能来承载界面出现层
- 前端Client 桌面端能够运用MaterialDesign 规划规范,依照Prism或许MVMMLight 的MVVM结构结合运用起来
4 web api优先结构
ABP 结构的中心主要以.NET的后端技能栈为主线,尽管ASP.NET CORE MVC和 Web API 分成了两部分,可是他的动态发布为Web API有限的架构供给了更好的便当。
在当今盛行的展示层中,越来越不依靠于后端的技能完成,而侧重于Web API标准化的对接,依据JSON数据的交互处理。不论是以Ant-Design(React)、IView(VUE)、Angular等技能运用的Web前端,咱们能够看到这些架构很简单完成对Web API的标准接口对接。
5 abp结构的项目结构
ABP 结构包含了两个部分,一个根底的ABP结构,一个ABP根底结构上的扩展运用。供给了人员人员、人物、权限、会话、身份验证、多租户、日志记载等等内容,咱们一般指的ABP结构运用便是这个根底上扩展自己的事务项目。这个部分,咱们能够依据官网上进行必定的选项装备,然后下载运用。
根底结构组成部分:
扩展运用模板款式如下,需到官网下载
下载.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 的内存数据库,不影响实践数据库内容。
文档转载自:https://zhuanlan.zhihu.com/p/338971621