我和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课堂,欢迎大家一起来评估学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软为 Visual Studio 推出新的 Razor 编辑器

随着 Visual Studio 最新版本的发布,微软推出了一款新的 Razor 编辑器,用于使用 MVC、Razor Pages 和 Blazor 进行本地开发。该工具目前还处于实验状态。Razor 是一种基于 HTML 和 C# 的模板语言,可以用来为 .NET Web 应用程序创建动态内容。…

禁用了云服务器的网卡怎么办?

点击上方关注“汪宇杰博客” ^_^导语我们平时管理云服务器时,难免误操作把网卡给禁用了,于是再也无法远程连接了。这时候怎么办呢?如果有虚拟机快照,能够恢复到上一个良好的时刻,但通常会损失这个时间段内的数据和应用…

[SpringBoot2]@MatrixVariableUrlPathHelper

场景 页面开发,cookie禁用了,session里面的内容怎么使用: session.set(a,b)—>jessionid—>cookie—>每次发请求携带 此时cookie禁用了,我们要怎么得到session里面的内容呢? url重写:/abc;jse…

WebBenchmark之动态数据测试

对于很多WebApi管理工具来说,针对接口的性能测试都拿固定的数据进行一个循环式的测试;这种测试只能确保当前数据下的有效性,但在性能测试中往往需要压测不同的数据分布,这样能够更准确地反映在不同数据下系统的处理能力。WebBench…

[SpringBoot2]Thymeleaf

引入starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>自动配置好了thymeleaf Configuration(proxyBeanMethods false) EnableConfigurationPrope…

【Ids4实战】分模块保护资源API

(毕竟西湖六月中)书接上文&#xff0c;上回书咱们说到了IdentityServer4&#xff08;下文统称Ids4&#xff09;官方已经从v3更新升级到了v4版本&#xff0c;我的Blog.Idp项目也做了同步更新&#xff0c;主要是针对快速启动UI做的对应修改&#xff0c;毕竟Ids4类库nuget包更新就…

[SpringBoot2]拦截器

拦截器 1.编写一个拦截器实现HandlerInterceptor接口2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)3.指定拦截规则[如果是拦截所有&#xff0c;静态资源也会被拦截] 1、HandlerInterceptor 接口 /*** 登录检查* 1、配置好拦截器要拦截哪些请求* 2、把这些配…

数据结构与算法专题——第九题 鸡尾酒排序

这篇我们来聊一下鸡尾酒排序&#xff0c;为了知道为啥取名为鸡尾酒&#xff0c;特意看了下百科&#xff0c;见框框的话&#xff0c;也只能勉强这么说了。要是文艺点的话&#xff0c;可以说是搅拌排序&#xff0c;通俗易懂点的话&#xff0c;就叫“双向冒泡排序”&#xff0c;我…

[SpringBoot2]错误处理_默认规则

错误处理 默认规则 ● 默认情况下&#xff0c;Spring Boot提供/error处理所有错误的映射 ● 对于机器客户端&#xff0c;它将生成JSON响应&#xff0c;其中包含错误&#xff0c;HTTP状态和异常消息的详细信息。对于浏览器客户端&#xff0c;响应一个“ whitelabel”错误视图&…

C#高级技师语法,你会吗?

【导读】呀&#xff0c;最近太忙了&#xff0c;没什么时间去看和学习&#xff0c;既然长篇文章一时半会吐不出来&#xff0c;短篇还是可以搞搞&#xff0c;操作系统绝不会断更。本文我们来搞点C#中高逼格语法。>这玩意从C&#xff03;6开始支持方法&#xff0c;运算符和只读…

将终结点图添加到你的ASP.NET Core应用程序中

在本文中&#xff0c;我将展示如何使用DfaGraphWriter服务在ASP.NET Core 3.0应用程序中可视化你的终结点路由。上面文章我向您演示了如何生成一个有向图&#xff08;如我上篇文章[译]使用DOT语言和GraphvizOnline来可视化你的ASP.NETCore3.0终结点01中所示&#xff09;&#x…

再见,RabbitMQ,你好,Kafka!

容器、Kubernetes、DevOps、微服务、云原生&#xff0c;这些技术名词的频繁出现&#xff0c;预兆着新的互联网技术时代的到来&#xff0c;大数据高并发将不再遥远&#xff0c;而是大部分项目都必须具备的能力了&#xff0c;而消息队列是必备的了。成熟的消息队列产品很多&#…

[SpringBoot2]数据访问_数据库场景的自动配置分析和整合测试

数据访问 1、导入jdbc场景 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>数据库驱动&#xff1f; 为什么导入JDBC场景&#xff0c;官方不导入驱动&…

【视频回放与课件】搭上AI快车-在线公益课堂:基于移动应用的人工智能开发...

今天&#xff0c;受广州图书馆邀请&#xff0c;通过腾讯会议推出搭上AI快车系列在线公益讲座第三讲《基于移动应用的人工智能开发》&#xff0c;本次课程实时参与参与直播互动人数超过300人&#xff0c;虽然课程10点钟才正式开始&#xff0c;但是9点已经有许多小伙伴已经进来直…

dotNET:怎样处理程序中的异常(理论篇)?

平时在软件开发的过程中&#xff0c;首先是要保证功能可以正常运行&#xff0c;满足业务需求&#xff0c;除此之外&#xff0c;还需要考虑代码在异常的时候怎么处理&#xff0c;让程序能够健壮地运行。正确合理地处理异常可以减少程序的 Bug、保证代码质量&#xff0c;当然也不…

[Spring5]IOC容器_底层原理

IOC的概念和原理 什么是IOC 1.控制反转&#xff0c;把对象创建和对象之间的调用过程&#xff0c;交给Spring进行管理 2.使用IOC目的&#xff1a;为了耦合度减低 IOC底层原理 xml解析工厂模式反射 底层原理示例图 目的&#xff1a;将耦合度降低到最低限度 IOC过程 1.xml…

使用Azure DevOps Pipeline实现.Net Core程序的CI

上次介绍了Azure Application Insights&#xff0c;实现了.net core程序的监控功能。这次让我们来看看Azure DevOps Pipeline功能。Azure DevOps Pipeline 是Azure DevOps里面的一个组件&#xff0c;对于12个月试用账号同样永久免费。持续集成CI持续集成指的是&#xff0c;频繁…

Blazor带我重玩前端(四)

布局Blazor中的布局和MVC中的布局是类似的。创建布局新建一个Razor页面&#xff0c;所有新增的布局都要继承LayoutComponentBase&#xff0c;同时标识自定义内容的输出位置&#xff0c;即标识Body的位置。如图所示&#xff1a;应用布局我们修改一下index.razor页面中的代码&…

kubernetes+Azure DevOps实现.Net Core项目的自动化部署均衡负载

1. 前言前前后后学习kubernetes也有一个来月了&#xff0c;关于kubernetes的博客也写了有十多篇。但是技术如果无法落地到实际的应用场景终归是纸上谈兵&#xff0c;所以就有了这一出&#xff1a;通过结合kubernetes和azure devops实现项目的CI/CD以及均衡负载写完这篇后kubern…

ASP.NET Core 消息传递:MediatR

MediatR[1] 是参考中介者模式实现的一个 .NET 工具类库&#xff0c;支持在进程内以单播或多播的形式进行消息传递&#xff0c;通过使用 MediatR 可实现消息的发送和处理充分解耦。在介绍 MediatR 之前&#xff0c;先简单了解下中介者模式。中介者模式主要是指定义一个中介对象来…