Abp VNext是Abp的.NET Core 版本,但它不仅仅只是代码重写了。Abp团队在过去多年社区和商业版本的反馈上做了很多的改进。包括性能、底层的框架设计,它融合了更多优雅的设计实践。不管你是自己需要快速上手项目、或者是公司的研发团队没有足够的能力去完整地开发一套稳定且功能全面的快速开发框架;对于.NET 系的开发者和公司来说,Abp目前就是你目前最好的选择。2020年7月15日和腾飞Jesse、计节做了一次《我和ABP vNext的故事》直播,期间我分享时间超时,占用了25分钟,也就是这次直播分享时间超过我们预定的一小时。直播回看地址:https://wxc2160346e3bc5861.h5.xiaoe-tech.com/v1/course/video/v_5f0f9c39e4b04349896c2370?type=2。
2018年我从腾讯离职开始创业至今,马上就满2年时间了,在这两年时间里我一直在伴随ABP vNext这个项目成长,我的分享主题就是下面这三点,这三点也是大家非常关心的为什么我要选择ABP vNext。
ABP vNext 的前身是aspnetboilerplate, 2017年开始基于.NET Core 进行重构,新的框架名称定义为ABP,目前已经发布3.0.4 版本。在国内ABP ,很多人可能对这个ABP vNext不太了解,很多人使用过的abp更多是老版本的aspnetboilerplate ,老版本的aspnetboilerplate 其实我也没有深入使用过,我只用它做过一个简单Demo,来自国内社区的使用体验是臃肿复杂,性能差。ABP vNext 我从0.5版本开始使用,2018年底我就在一家外企项目中导入了ABP vNext,后面还有好几个客户项目也是导入了ABP vNext。ABP vNext 采用敏捷的开发模式,每个月发布一个版本。最初的0.5版本时,底层的模块化等基础框架已经具备可用性,所以那时候采用的ABP vNext的模式和腾飞后面给大家介绍的使用方式是一致的。2019年11月在上海举办的首届中国dotnet开发者峰会上也预约了2位讲师介绍ABP vNext相关内容,其中土牛(土耳其大牛)简单介绍Abp.io,分享对.NET Core和ABP框架的看法值得大家回顾一下:
还有另外一位讲师粱士伟讲的《下一代ASP.NET Core开源应用程序框架》,现在他是全职开发ABP vNext的国内开发者,在国内远程工作,拿美元工资。目前在国内有两位全职的ABP vNext开源开发者。
说起ABP vNext就不得不和老的aspnetboilerplate 进行比较。ABP vNext 和 aspnetboilerplate 关系类似.NET Core和 .NET Framework的关系,ABP vNext是在aspnetboilerplate 项目多年经验的基础上针对.NET Core的特性重写的聚焦于微服务的模块化框架。在我开始使用ABP vNext项目之前,我也在github上创建了一个整合.NET 社区开源项目的胶水代码项目NanoFabric,后面我再具体介绍这个项目的具体情况。2018年底我离职创业后不久我就发现了ABP vNext这个项目,他们还有一个专业的团队在开发,我也就融入了这个ABP vNext社区, ABP vNext 在模块化软件开发方面达到了新的层次,非常类似于乐高这样搭积木体系, 我现在开发的大量项目都是才作用这种模块化的搭积木体系来进行,可以单体也可以微服务,非常的灵活,重用性方面也非常好,结合ABP vNext的商业版,可以做到从前端到后端的模块化重用。
我们开发软件的时候都希望能够使用快速开发框架来帮我们加快开发速度,也就是可重用的应用程序开发框架,对于这样的一个可重用的应用程序框架并不简单,从开发体验方面,开发框架的不断保持更新,完善的文档支持,开发人员的培训支持等方面都需要做出非常大努力。ABP vNext 也是这样的一个可重用的应用程序框架。在.NET社区里一直有声音是期望有一个Spring Boot这样的项目,现在我可以告诉大家ABP vNext 可以媲美Spring Boot这样的项目, ABP vNext 融合了大量.NET社区的开源项目,让你在开发项目的过程中选择不同的开源项目组合起来,大大降低你使用相关开源项目的门槛,最明显的例子就是IdentityServer4, IdentityServer4是一个OpenID Connect 规范实现的开源框架,它还无法做到开箱即用这样的一个层度,那么ABP vNext 将IdentityServer4封装成一个IdentityServer模块,你就可以做到开箱即用。
上面给大家介绍ABP 是什么,前面也提到了aspnetboilerplate 体验也并不好,为什么我选择使用ABP vNext。大家都在寻找一个好用的业务开发框架,这种开源业务开发框架也很多,大家都知道我们国内开发者一起组织发展的https://github.com/dotnetcore ,在这个社区里已经有好几个功能完善的应用开发框架,比如https://github.com/dotnetcore/Util,https://github.com/dotnetcore/OSharp,https://github.com/dotnetcore/WTM。这些开发框架我都没有选择的原因在于我的关注点在于微服务开发框架,基于k8s 的云原生应用开发是未来的趋势,去年我也一直在推广.NET Core在k8s 运行, 我们的很多公司的团队都很小,有的只有3-4个人,大的有几百号人。我们要以云原生的方式来开发应用,如何在不同规模的团队之间平衡,如何在小团队时采用单体架构,当团队规模扩大后优雅的拆分成微服务架构,还有SaaS 在云原生环境下的架构挑战等。这几个方面ABP vNext 都很好的解决了,上面提到几个框架没有很好的解决微服务场景下的应用开发框架,只做到了单体开发的模块化。
大家看到了ppt上这个项目NanoFabric,这个项目始于2017.2.2,这期间我有做过一次简单分享,2018年10月份我就把它设置为只读状态,后面我就没有继续更新了,从此之后我就把这个项目的相关内容转为使用ABP vNext,可以看到这个项目的star还在增长,说明有很多同学还在关注这个项目,有很多同学私下找我聊的时候我都是推荐他们使用ABP vNext,今年年出又发现了一新的组织https://github.com/easyabp ,因此我也加入了这一组织,现在我们有6位同学,主要是ABP 官方之外的使用ABP 的同学组成,大部分是国内使用ABP vNext的同学,也有国外社区,欢迎大家参与这个组织的发展,目标是帮助大家更容易的使用ABP vNext。今年年初的时候ABP vNext已经发布了2.0版本,已经比较成熟了,因此我也特意在这个项目的介绍上留下了这么一段话,推荐大家转到使用ABP vNext。
我已经使用ABP vNext将近2年时间,ABP vNext 目前在github的star 也超过了4000, ABP vNext相对于aspnetboilerplate 使用门槛相对提高,同时ABP Zero也很成熟,对应的就是ABP商业版 https://commercial.abp.io/, 粱桐铭同学搞的52ABP 也是有声有色。类似于52ABP的ABP的本地化内容也是我们Easyabp 社区组织让大家更好的使用,比如对微信,支付宝,阿里云,腾讯云等本地资源的适配,在easyabp 里有一个仓库 https://github.com/EasyAbp/awesome-abp 汇集了abp的相关资源。同时Easyabp 提供了类似于ABP 商业版的Abp suite工具,辅助我们快速开发应用。ABP vNext 现在也是我公司的应用开发框架,我公司网站上也有一个专门介绍ABP vNext的页面 http://www.weyhd.com/abpvnext
今年年初我给腾飞介绍ABP vNext, 他开始接触 Abp VNext的时候,就被它优雅的模块化和组件化设计吸引了。以前的Abp给人的感觉臃肿,现在Abp提供的多个功能你都可以在使用的时候自己选择组合。基于横切关注点的设计思路,可以很好的使用Abp所提供的一些基础模块 。上半年腾飞给一些企业做过关于Abp的培训,所接触到的一些中小企业,包括我现在所在的企业研发团队在80人以内都很难有足够的能力去研发一套如何功能完整且稳定快速开发框架。与其自己投入大量的人力和时间造轮子,为什么不选择一套成熟稳定的开源产品呢?因此他还特意录制一个系列的视频课程,放在dotnet课堂,欢迎大家一起来评估学习。