2016年11月,接受了一个工作,是对“悟空CRM”进行一些修补。这是一个不错的 CRM,开源,并提供一个 SaaS 的服务。正好微软的 .NET Core 和 ASP.NET Core 也发布了。于是就有了这个想法:使用 ASP.NET Core 来开发一个 CRM。当然这里面的私心是:朝后坦白讲,悟空CRM 的代码真的是不怎么样。大量的代码堆在 Controller 里,多个功能在一个 EndPoint 里混合。权限管理也有些乱来。View 里充满了“临时解决方案”。所以我真的是一边改,一边难受。由于11月我还在做一个 Xarmin 的小程序,所以对 CoreCRM 的开发就定在12月开始了。
因为修改悟空CRM,本来以为对业务的逻辑已经比较熟悉,先开始的时候照着悟空CRM的UI直接开始撸就可以了。在尝试了几个页面之后发现这样比自己直接写还麻烦。而在这中间,我的老毛病有犯了:在几种技术方案之间不停地权衡和尝试。这样,时间就一天天的浪费掉了。技术方案的选择经历了:VueJS + jQuery,React.NET,aspnetcore-spa (ReactJS + Redux),最后又回到 VueJS + jQuery。CSS 框架使用的是 Bootstrap 3.3.6,这个是一直没有变(虽然我也曾经想过使用4.0的alpha版,不过最后还是忍住了)。图标使用了font-awesome 4.7.0,也是没有改。一直折腾了一个月(这中间还有因为对 ASP.NET Core 不够熟悉而付出的学习成本),整个12月将要过完的时候,我才只完成了 Layout 和 Login。(其实原来的首页、结构架构也完成了,但只有UI的部分)。
关于技术选择
为什么要选择 ASP.NET Core?
我的一个基本判断是:带有类型检查的语言应该是未来的趋势。虽然从历史角度看,动态类型和静态类型总是交替上台表演的。不过,随着程度规模的不断变大(想当年一个 DOS 程序就几十,几百K,求伯君可以使用彙編擼一個 WPS 出來,而現在一個手機 App 也是几十MB),动态语言的一些不方便的方面是突显出来了。特别是多人协作开发的时候,因为没有类型的静态类型检查,很多错误都只能在运行的时候才能发现。其实这个问题如果配合上足够的单元测试,也是可以减轻一些的,然而到了2016年,还是有很多人把测试当成负担。结果就是大量的 bug 和安全漏洞,以及改了补了一个洞,又开了三个洞。
从现实情况看,PHP 7 已经引入了一些类型标注,Python 3.5 也有这样的东西,JS 系里有 TypeScript 这样的 Transpiler(而且,Angular 2 这样的框架已经开始在使用 TypeScript 进行开发了),以及 Facebook 的 flow。所以,动态语言在漫漫的静态化。虽然只是提供了类型的运行前检查,但也减少了很多运行时的问题。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式