总听.NETer羡慕Java有SSM框架,其实.NET也有ABP,极度优秀的开源应用程序框架,支持.NET Framework和.NET Core。
羡慕Java有SpringCloud,其实.NET也有ABP.vNext,由ABP团队全新打造的.NET Core+微服务架构开源框架,获得众多.NET大佬的推崇,也有很多企业招聘明确要求ABP了,你get了吗?
本文为.NET Core下ABP框架篇(干货长文),包括ABP介绍,核心内容,以及ABP实战,最后还有彩蛋哟!ABP.vNext门槛较高,下一篇见!
ABP介绍
ABP是ASP.NET Boilerplate的简称,是一个开源且文档友好的应用程序框架,还提供了基于领域驱动设计(DDD)的体系结构模型。
初次了解ABP框架,就被惊艳到了,基本上是.NET 领域架构的集大成者,几乎囊括了我们.NET领域的各种技术,支持.NET Framework和.NET Core双平台。
ABP官方网站:http://www.aspnetboilerplate.com,有详细的案例和文档说明(学习福音)。
GitHub源码:https://github.com/aspnetboilerplate,网址可以下载整个基础的框架内容,以及相关的样板案例代码。
笔者使用ABP框架有好几年了,下面给大家捋一捋ABP的核心内容,一方面让大家看看ABP能为你带来什么,大家在用的时候也能有个方向。
ABP核心内容
ABP框架提供的开发必备内容:
依赖注入,ABP用的是 Castle windsor 来实现依赖注入,也支持扩展autofac;
Repository仓储模式,支持Entity Framework、NHibernate、MangoDB、内存数据库等;
身份验证与授权管理,可以使用声明特性的方式对用户是否登录,或者接口的权限进行验证,细粒度完成各个接口的调用权限设置;
数据有效性验证,ABP可以根据属性的信息对属性的有效性进行校验;
审计日志记录,记录对每个接口的调用记录,以及对记录的创建、修改、删除人员进行记录等处理;
Unit Of Work工作单元模式,为应用层和仓储层的方法自动实现数据库事务;
除了上述的还有这些:
异常处理,有一整套比较完善的流程处理操作,可以很方便的对异常进行进行记录和传递;
日志记录,可以利用Log4Net进行常规的日志记录,方便我们跟踪程序处理信息和错误信息;
多语言/本地化支持,ABP框架对多语言的处理也是比较友好的;
Auto Mapping自动映射,来实现域对象和DTO对象隔离和数据绑定;
动态Web API层,一个很酷的应用,自动生成服务而不需要WebApi控制器,非常方便;
动态JavaScript的AJax代理处理,自动创建Javascript 的代理层来更方便使用WebApi。
ABP框架提供的一些特别内容:
多租户支持,每个租户的数据自动隔离,业务模块开发者不需要在保存和查询数据时写相应代码;
软删除支持,继承相应的基类或实现相应接口,会自动实现软删除;
系统设置存取管理,系统级、租户级、用户级,作用范围自动管理;
EventBus实现领域事件(Domain Events)
插件化模块处理,支持模块拆分以及模块的依赖关系等
ABP框架主要还是基于领域驱动的理念来构建整个架构的,其中领域驱动包含的概念有域对象Entities、仓储对象Repositories、域服务接口层Domain Services、域事件Domain Events、应用服务接口Application Services、数据传输对象DTO等。对于很多没有用过ABP的小伙伴儿来说,上手还是很懵的。
下面给大家准备了为期3天的《ABP跨平台电商实战》专题训练营,扫码免费学习,搞定ABP实战!
ABP跨平台电商实战
Day1
Asp.Net Core接入ABP框架,理解DDD领域驱动设计,解读ABP项目结构,基于CodeFirst模式完成数据初始化,动态API提供数据管理。
Day2
搭建Vue+动态Core WebApi前后分离架构,完成商品页加载,基于Axios数据交互,手写搜索排序等核心功能实现。
Day3
继续商品详情页核心功能实现:多属性选择筛选、数量自动监听、购物车功能等,动态API原理解剖和调优,前端-后端-数据库一体化打通。
彩蛋-送福利
ABP框架是.NET技术的集大成者,里面整合了非常多的东西,要完成ABP跨平台实战,你还需要以下预习资料,扫码自取,手快有手慢无!(由于领取人数众多,添加微信:18672997769 也可
微软MVP组建的.Net社区
你加入了吗?
微软MVP:Eleven组建
国内首屈一指的.Net活跃社区
完整配套的学习资料
最新最热的技术文章
社区内优质岗位直推
全部免费奉送给大家
优质内容持续更新中
戳以下文章立即获取
????????????