我和ABP vNext 的故事
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课堂,欢迎大家一起来评估学习。
我和ABP vNext 的故事的更多相关文章
- [Abp vNext 源码分析] - 6. DDD 的应用层支持 (应用服务)
一.简要介绍 ABP vNext 针对于应用服务层,为我们单独设计了一个模块进行实现,即 Volo.Abp.Ddd.Application 模块. PS:最近博主也是在恶补 DDD 相关的知识,这里推 ...
- [Abp vNext 源码分析] - 文章目录
一.简要介绍 ABP vNext 是 ABP 框架作者所发起的新项目,截止目前 (2019 年 2 月 18 日) 已经拥有 1400 多个 Star,最新版本号为 v 0.16.0 ,但还属于预览版 ...
- [Abp vNext 源码分析] - 3. 依赖注入与拦截器
一.简要说明 ABP vNext 框架在使用依赖注入服务的时候,是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包.这里与原来的 ABP 框架 ...
- [Abp vNext 源码分析] - 2. 模块系统的变化
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...
- [Abp vNext 源码分析] - 1. 框架启动流程分析
一.简要说明 本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程,让大家了解整个 Abp vNext 框架是如何运作的.总的来说 ,Abp vNext 比起 ABP 框架 ...
- 自定义Visual Studio.net Extensions 开发符合ABP vnext框架代码生成插件[附源码]
介绍 我很早之前一直在做mvc5 scaffolder的开发功能做的已经非常完善,使用代码对mvc5的项目开发效率确实能成倍的提高,就算是刚进团队的新成员也能很快上手,如果你感兴趣 可以参考 http ...
- 用abp vNext快速开发Quartz.NET定时任务管理界面
今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...
- Abp vNext 切换MySql数据库
Abp vNext是Abp的下一代版本,目前还在经一步完善,代码已经全部重写了,好的东西保留了下来,去除了很多笨重的东西,从官宣来看,Abp vNext主要是为了以后微服务架构而诞生的. 从源码来看, ...
- [译]ABP vNext微服务演示,项目状态和路线图
译注: ABP的主要负责人hikalkan最近又发布了一篇博客, 说明了ABP vNext的微服务演示,项目状态和路线图.其中特意对ABP的中文社区进行了感谢! 本文翻译自该博客文章(https:// ...
随机推荐
- C/C++以及Linux文件操作备忘录
目录 C文件操作 文件开关 文件读写 C++文件操作 Linux文件操作 打开 C文件操作 #include<stdio.h> stdin, stdout, stderr 文件开关 /* ...
- maven依赖冲突以及解决方法
什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的.每个显式声明的类包都会依赖于一些其它的隐式类包, ...
- (二)、JAVA运行时数据区域
根据<Java 虚拟机规范(Java SE 7版)>规定,Java虚拟机所管理的内存,将会包括以下几个运行时数据区域: 注: 1.由所有线程共享的数据区: 对应 java内存模型的主内存, ...
- 入门大数据---PySpark
一.前言 前面我们学习的是使用Scala和Java开发Spark.最近补充了下Python基础,那么就用Python开发下Spark.Python开发Spark简称PySpark. 二.环境准备 1. ...
- 线上redis问题修复:JedisConnectionException: Unexpected end of stream.
经过: 项目上线后经常报 Unexpected end of stream.; nested exception is redis.clients.jedis.exceptions.JedisConn ...
- gdi和gdi+比较
http://www.360doc.com/content/10/1013/17/1066008_60709410.shtmlhttp://www.360doc.com/content/10/1013 ...
- 断路器Hystrix(Feign)
上一篇中我们讲了 断路器Hystrix(Ribbon) 本章讲解Feign+Hystrix已经Request请求传递,各种奇淫技巧…. - Hystrix Hystrix支持回退概念:当 断路器 打开 ...
- Java 从入门到进阶之路(二十八)
在之前的文章我们都是通过 Java 在内存中应用,本章开始我们来看一下 Java 在系统文件(硬盘)上的操作. 系统文件就是我们电脑中的文件,简单来说就是像 Windows 系统中 C D E 等各类 ...
- 前端走进机器学习生态,在 Node.js 中使用 Python
这次给大家带来一个好东西,它的主要用途就是能让大家在 Node.js 中使用 Python 的接口和函数.可能你看到这里会好奇,会疑惑,会不解,我 Node.js 大法那么好,干嘛要用 Python ...
- 使用Fiddler模拟Post请求
做了一个动态的GIF来做演示,应该更加直观些. (完)