我和ABP vNext 的故事
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课堂,欢迎大家一起来评估学习。
原文地址:https://www.cnblogs.com/wl-blog/p/15009554.html
- 以大数据之名,变身!——In big data we trust
- 90%家长都不知道关于少儿编程的这些疑题!
- 常用SQL语句和语法汇总
- Python学习笔记1——斐波那契数列
- 视觉传感器几大技术要点详解!
- Spark之搜狗日志查询实战
- 区块链与数字货币是什么关系呢?
- 保存数据到MySql数据库——我用scrapy写爬虫(二)
- 人工智能将取代人类?危机亦或是新的机遇
- 大数据驱动的未来网络:体系架构与应用场景(下)网络架构与场景详解
- 冷静点,NVIDIA 禁止 Geforce 进数据中心想限制的并不是深度学习
- 智能机器人崛起背后的中国力量
- 企业微服务架构转型-实施步骤
- Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 防火墙(iptables)
- 短视频商城源码,安卓几种弹窗方法
- Automl框架katib浅析
- NAS Network Attached Storage
- es6 随性学习之 字符串 String
- MongoDB内核:副本集选举过程分析
- MongoDB内核:主从同步之源码剖析
- OpenGL ES 帧缓冲区位块传送
- OAuth 2.0 单元测试解决方案
- 「性能提升」扩展 Spring Cache 支持多级缓存
- 如何以源码形式运行Nacos Server
- Spring Boot 2.4 配置文件将加载机制大变化
- OpenGL ES 多目标渲染(MRT)
- R包:gtable包用于处理ggplot2图像
- Sight——杀手级提升Laravel开发速度的组件现在开源了!