我的技术回顾那些与ABP框架有关的故事-2018年

我的技术回顾那些与ABP框架有关的故事-2018年

今天准备想写18年的,但是发现我从19年开始就在逐渐淡出社区,因为生活、工作的缘故吧。所以也没什么特别罗列的,就合并下吧。

时间真的是可以磨平太多东西了,如果我不去整理资料的话,我会以为有太多事情发生在2017年,结果他们都发生在2018年或2019年。

写到这篇的时候,我发现我的技术轨迹也从单纯的.NET 技术栈开始多元化,接触前端(angular)、数据库、架构、集群、Devops、容器化的方案了。

社区所提供的ABP后端+Vue、React模板方案

2018年,随着ABP框架被越来越多的人使用,前端的方案在国内变化基本上都是vue。同时ABP官网并不打算提供vue方案的支持。

所以社区人员就提供了Vue的前端模板。

下图为vue的 Pull Requests记录。

76ea68fd59aa346986d0f17653858b2c.png

下图为react的 Pull Requests记录。

081895e6c08194bb11c24908a544a252.png

所以采用abp框架的功能模板是非常健全的,无论是angular、vue、react你都可以依据你的喜好选择。

所以很多人吐槽ABP框架功能不全,那仅仅是因为前端的功能没有做出来罢了。当然伸手党是也是常态。

开始着手52ABP官网的成立

我大约是在18年,谋划了想自己独立建站的想法,其实中途也有人搭建过一个abpbbs的论坛,但是也因为运营者和人气的关系,浅尝辄止。

所以到了我这里的时候,我就在想我要如何做,怎么做。公司内,我基本上已经变成了一个非常纯粹的管理者了,基本上不用写什么业务代码,更多的时候做做技术选型架构设计。

但是人啊,不打算彻底转型当管理的话,不能脱离一线啊,尤其是我们开发人员,加上我一直想做点不一样的东西。所以谋划了很久。

最初的目的ABP框架国内镜像网站

最开始的时候,单纯的想做成一个国内的镜像网站。毕竟很多朋友没有“科学上网”工具,导致访问ABP官网很慢。所以想加速下的网站的CDN速度。开始方便国内的小伙伴大家的下载和使用。

我也利用空余时间录制了几个快速入门的视频,放到几个网易云课程和腾讯课堂上。

然后情况就开始发生了一些变化。。。就是发现这个视频的基础照顾的不太好,导致很多基础不是很好的程序员,体验性很糟糕,评论也很好玩,两极分化严重。

有好有坏,比如

b22e09adfed09e0ce098a430e6d51ba9.png

因为这两个平台来的大多都是仅学过C#和传统.NET Framework的学生,连.NET Core都没有接触过,更别说是Angular了,所以导致很长一段时间,我都有点自闭,觉得ABP门槛太高了,后来才想明白是单纯的教材少,大多数人没我这么强迫症把做的东西通用化。

而这时很多人加群的目的也开始起了变化,不是单纯的学习和讨论技术了,ABP官方有一个商业版本,包含了一个干净的前后端完整功能模板即:ABPZero,很多人都想使用获取这个模板来接私活,但是又有很多人玩不转这个模板,所以不少人选择了放弃,然后转头骂ABP难用,还不如Ado.NET。

.NET Core版本的52Abp框架

我又开始了新的尝试,而当时正值AntDesign 官方也推出了Angular版本的组件库:NgZorro。

然后机缘之下接触到了卡色的Ng-alain,然后进行了集成和适配。但是因为版本太早,无论是Ng-alain还是ng-zorro,在当时生态相比react的版本都不那么成熟。

所以在中途发生了好多次破坏式升级。这个也是让我体会到了如何做最大的兼容性对于框架的设计者来说挑战才是最大的。

这也是非常佩服土牛的模块化设计思想。

只有我一个人的话,工作量太庞大了,就找到了熊猫一起搞这个事情,然后历时两个月,我们推出了第一个版本,在小范围给大家使用了下。然后大家表示喜欢。然后我们就将它提交到了52ABP网站上,方便大家下载为属于自己的解决方案。

52ABP在2019年,做了太多对于Angular下的适配了,尤其是NG-Zorro的官方组件过于残缺,但是已经上车了就坚持搞了下去,好在仅两年ng-zorro的官方组件生态库越来越完善和齐备。Angular对于开发管理系统来说熟悉了时候,会非常的得心应手。

当这个我们内部完成了之后,购买了52abp的域名后,开始上线试运营的时候,才知道ABP还是一个动作电影的系列。说实话,现在想来是真的尴尬。尤其时不时进来的关键字。

不过好歹是上线了,而且不管怎么说也坚持到了现在(2022年)。

如何保障网站的持续运转-资金

当网站开始运转了之后,网站最开始部署在一台1核心2G的Linux服务器上。起初流量就群里的人用,还算好。后来因为人太多,撑不住了。开始慢,然后大家就以为是ABP框架慢,然后就开始在群里喷ABP框架有多么的不好。。巴拉巴拉的到最后到人身攻击的都有。

所以菜鸡到处都是,不要妄自菲薄,我们要自信。

这个就比较坑了,同时这个不是我们要做这个事情的初衷,毕竟是为了推广ABP,而不是给ABP框架抹黑,所以当时要么关站,要么想其他办法。我们晚点再说

2018年上海紫荆谷ABP分享会

适逢一次去上海找钢网参观学习的机会(找钢网没有上市,可惜了),我在群里说要去出差,问问有没有人聚聚,本以为只会有10来个人活动。但是大家都在踊跃报名要来参加,从小活动变成了非常正式的技术分享会了。

那次应该是群里神聊的网友,能来的都来了,大家在线下见了面,也认识了很多新的朋友,比如老渠(从南通驱车来的),当然这又是另外一个支线故事了。

e3ee98c00c660d0b2f57312416cf973d.png

d830a9687bed209846eaac00876ee95a.png

第一次非常正式的和ABP官方沟通

为了解决网站运营资金的问题,我就想和ABP的作者沟通,说了下我想52ABP来干嘛。

然后就通过马立明联系到了ABP官方作者,给他写了一封邮件,告知他是否可以考虑下国内市场。

马立明 我是和他在北京认识的,后来他频繁活跃在ABP官方仓库中,然后就全职作为ABP框架的核心开发人员之一,后面梁仕伟也加入了ABP框架团队。

ABP的作者也回复给我了一封邮件,大体的内容是因为国内盗版官方版本的太多,所以不考虑。并且告诉我他现在的重心开始转移到ABP.IO,也就是ABPVnext的版本中。

680ba75d81dc172ab7622a7afad06d0a.png

这个时候,我就陷入了比较尴尬的状态。毕竟这个服务器是要掏钱的,我们已经牺牲了很多的休息时间来做52ABP的网站和模板。这个项目让我把它腰斩,这个是我不愿意的。

既然ABP官方不考虑国内市场,那我就搞吧。觉得新浪微博可以抄Twitter。那我就来折腾个本土版本的ABP吧。尴尬的问题就是,ABP官方的模板都是盗版的,更别说有人愿意来付费买本土版本的ABP框架吧。

尴尬而又不失礼貌的微笑

所以我们得感谢那些付费买课程的客户

这个时候,我就想到了卖课程,也在群里问了,好多都在说出了课程没人买,后来给我的教育就是不要把程序员的思维代入商业行为。

但是我还是坚持搞了,我还算行动力不错的人,就开始搞了,准备了个大纲,问了一些人意见就开始搞。

这个课程出来后上架到了网易云课堂。目前来看销量还可以。但是录制视频实在是太累了。当时天天熬夜到凌晨2-3点来录制视频内容。现在想起来仍然心有余悸。不过结果是很好的,因为大家付费了,支持52ABP网站的运营的经费有了。然后我们也推出了一个学习版的52ABP目标框架,里面的功能就比较多了。和当时的ABPZero功能差不多。然后很多人学了之后,就拿去做公司内部的商业项目了。

市场中总有一双看不见的手

我想你可能猜到了。事情又起了变化。现在看来让我想起了**经济学家凯恩斯在他的著作《国富论》**中提到的那句话“市场中总有一双看不见的手”推动着你走。

那就是有一些公司联系到我,问我学习版或者企业版会不会可以持续更新。讲道理,如果是17年问我,我肯定回答说没问题。但是经历了上面那么多的事情之后。也见过了很多基于ABP框架也好,模板也好的开源项目。

因为各种原因难产后,我明白坚持更新是一件很难的事情。就如

  • ABP官方也是靠ABPZERO 的销售来养活这个公司的。

  • 后来也因为有了资金才会有更大的梦想来做ABPVnext这样的项目。

所以我的回答是如果你们愿意付费的话,我就坚持更新。那么有一些公司就说花钱就算了,我们公司有程序员,自己可以改。你都微软MVP了还收费。打着MVP的名头去收钱。当然更难听的也有。

当然我终于遇到了第一家愿意付费的公司,因为这个价格实在是太便宜了。当然收费后,我也一直坚持更新这个模板。

从.NET Core 2.1升级到2.1,升级到3.1。然后Angular从6到8到9,慢慢到现在的angular12。

尤其52ABP代码生成器的推出,很多人给我反馈说,开发效率提高了70%以上,也有不少公司参考代码生成器做了一个属于自己公司内部的代码生成器。

小结

如果说2016、2017年是我个人技术能力进行了快速提升的话,18年起我更多在考虑如何带来持续稳定的收入来维护一个网站,毕竟它不是一个博客网站,记录我个人的技术内容。

那么这就不是技术能帮助我解决的了,同时经历了周围很多经营的公司重组、破产、运营模式的问题等等。而我呆的是积微物联因为运营模式,加上我的项目因为政策、运营模式都比较新,见到了太多用技术无法解决的事物了之后,所以我就要去思考,52ABP到底要怎么搞,才能长久的做下去。

推荐

《深入浅出ASP.NET Core 》书籍配套源代码与视频下载

0b309913adf8e01df37c7c2fad78a325.png

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

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

相关文章

IOS内存等信息

1. 获取IOS APP占用的内存 #import <mach/mach.h>// ...void report_memory(void) {struct task_basic_info info;mach_msg_type_number_t size sizeof(info);kern_return_t kerr task_info(mach_task_self(),TASK_BASIC_INFO,(task_info_t)&info,&size);if( k…

iOS 开发之--使用AFNetWorking3.1.0上传单张/多张图片

在调试接口的时候&#xff0c;遇到一个问题&#xff0c;就是多张图片上传的时候&#xff0c;不管我上传多少张&#xff0c;只会上传成功最后一张&#xff0c;也就是说只有一张图片上传成功了&#xff0c;针对这个问题&#xff0c;通过查找资料&#xff0c;找到了原因&#xff0…

SVN之如何解决从一个svn路径下载项目快速提交到其它svn路径

1、问题 每次做定制的时候&#xff0c;需要从svn checkout项目&#xff0c;然后去除.svn ,然后再去放到自己需要上库的文件夹去&#xff0c;然后这样在windows平台操作非常麻烦&#xff08;配置比较差&#xff09;&#xff0c;然后现在在linux平台解决这个慢的问题&#xff08…

wpa_supplicant 无线网络配置

为什么80%的码农都做不了架构师&#xff1f;>>> 安装wpa_supplicant后&#xff0c;修改服务&#xff0c;编辑 /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service 将下面的 [D-BUS Service] Namefi.epitest.hostap.WPASupplicant Exec/s…

计算机专业技能考核方案,计算机专业技能课教学目标考核方案教程.doc

计算机专业技能课教学目标考核方案教程惠州市宝山职校计算机专业学生培养目标量化考核方案考核项目计算机办公应用方向  [A]        动画制作方向   [B]硬件维护方向     [C]图形图像处理方向   [D]             二、考核标准计算机专业(计算机…

Java数据库编程

ava与数据库交互的主要API是jdbc。jdbc的主要目的是&#xff1a;1.通过使用SQL或者专有的SQL扩展&#xff0c;程序员可以利用java语言开发访问数据的应用。2.数据库开发商或者数据库工具开发商改进数据库驱动程序jdbc通用的使用方式如下&#xff1a;Class.forName(jdbcDriverNa…

Avalonia跨平台入门第六篇之Grid动态分割

前面玩耍了ListBox多选,今天在他的基础上对Grid进行动态分割;这个效果其实在Xamarin中已经实现过了;其实都没太大区别;直接看效果吧:在ListBox中选择了具体的布局后进行Grid布局分割:具体分割的方法和原来在移动端没啥区别:下一篇就是控件的拖放了;最终简单的效果先这样吧;以后…

Python打包方法基本应用方式介绍

Python编程语言是一款功能强大的免费开源的通用型计算机程序应用语言&#xff0c;对于经验丰富的开发人员来说&#xff0c;掌握这样一款语言在其程序开发中是一个比较重要的选择。我们今天就先来了解一下python打包方法的相关应用。Python查找重复文件相关操作方式分享四种Pyth…

使用ABBYY FineReader进行自动图像预处理

2019独角兽企业重金招聘Python工程师标准>>> 扫描图像和数码照片中常见的扭曲文本行、歪斜、噪声和其他缺陷可能会降低识别质量&#xff0c;ABBYY FineReader可自动消除这些缺陷&#xff0c;也允许手动消除。 ABBYY FineReader有几个图像预处理功能&#xff0c;如果…

Android之在launcher里面动态加载桌面图标

1、在手机桌面加载图标方式 1&#xff09;、动态加载 Launcher.java private void addSourceList() {Intent launchIntent new Intent(this, RcGrpActivity.class);launchIntent.setAction(Intent.ACTION_MAIN);launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);Intent …

计算机与交通工程论文,交通工程论文.doc

淮 阴 工 学 院毕业设计(论文)系 部&#xff1a; 交 通 工 程 系专 业&#xff1a; 交 通 工 程学生姓名: 徐东成 学 号:设计(论文)题目&#xff1a; 城市交通信息系统功能研究起 迄 日 期: 2006年 2 月 20日 ~ 06月10日设计(论文) 地点: 大学城指 导 教 师: 夏晶晶专 业 负 责…

Avalonia跨平台入门第五篇之ListBox多选

前面我也提前预告了今天要实现的效果;不过中间被卡了一下;今天赶紧去弥补上次要做的效果,其实在WPF效果中已经实现过了,看效果吧:ListBox的前台布局代码:使用的附加属性和WPF好相似:子项模板(绑定写法简化了好多):多值转换器(少了一个ConvertBack):最终简单的效果先这样吧;以后…

Android之android.os.NewWorkOnMainThreadException解决办法

1、问题 用别人提供的的sdk的Demo出现android.os.NewWorkOnMainThreadException 2、解决办法 网络请求开启一个线程请求或者开启异步任务都行 3、总结 1、 之前就看到过这种android.os.NewWorkOnMainThreadException异常&#xff0c;时间很久了&#xff0c;自己也没反映过来&a…

mediawiki 搭建

[1] http://www.cnblogs.com/mchina/archive/2012/11/28/2778779.html转载于:https://www.cnblogs.com/deepblueme/p/4665610.html

金蝶K/3 WISE 12.3订单跟踪SQL报表

金蝶K3一直缺少完整的跟踪报表&#xff0c;所以我们开发了一张完整的跟踪报表&#xff0c;通过查询分析工具直接生成。代码&#xff08;WIN2008 R2SQL 2008 R2环境&#xff0c;K3 WISE 12.3&#xff09;&#xff1a;select t1.fname1 客户,t1.fname2 业务员,t1.f_102 款号,t1.f…

计算机与人脑的异同作文,小学信息技术3-6年级全册教案.pdf

清华版小学信息技术 3-6 年级全册教案三年级上册教学计划课 题 1、芝麻开门1、了解计算机的组成和用途&#xff0c;认识计算机的桌面。教学目标2 、鼠标的基本操作。教 学初步学会使用鼠标的移动、指向、单击。重难点PowerPoint教具软件、多媒体电脑一、引入&#xff1a;教 同学…

Fragment 键盘弹出方式设置

由于在FragmentActivity中配置SoftInputMode不好使&#xff0c;所以要在Fragment 中设定&#xff1a;getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);转载于:https://www.cnblogs.com/chenlong-50954265/p/3924094.html

开源绘画应用 Pinta 已移植到GTK 3和.NET 6

Pinta [1]是一款开源绘画应用&#xff0c;适用于 Linux、Windows 和 macOS。你可以用它来进行自由手绘/素描。你也可以用它在现有的图片上添加箭头、方框、文字等。年初发布了 Pinta 2.0.2 版本&#xff0c;这是我看到的第一款桌面的dotnet6 和 gtksharp的 应用。Pinta是一个小…

Druid源码分析系列1:dataSource.init()的准备工作

2019独角兽企业重金招聘Python工程师标准>>> 本节&#xff0c;讲解 dataSource.init(); 打断点在 stop in com.alibaba.druid.pool.DruidDataSource.init 好&#xff0c;开始研究代码 public void init() throws SQLException {// 首先确定没有initedif (inited) {r…

软件测试推荐专业,软件测试专业老师推荐信

尊敬的领导&#xff1a;您好&#xff01;首先感谢您在百忙之中抽出时间来阅读我学生XX的推荐信&#xff01;该生是XX大学软件测试专业应届毕业生&#xff0c;自进入XX大学以来&#xff0c;凭借自身扎实的基础和顽强拼搏的奋斗精神&#xff0c;经过几年不断的学习&#xff0c;在…