作为一个.NET 开发者,怎么看待和选择层出不穷的新技术,新架构?

2018-06-24 10:29:44 +08:00
 kwklover

经常在一些技术社区看到这些的问题,一个.NET 开发者去求职,看到应聘的公司的技术栈还是比较老的 ASP.NET WEBFORM 的时候,希望了解未来会否使用 ASP.NET MVC 的时候,没有获得肯定答复,于是就放弃了这一份机会,以技术选企业,是否必要?

最近我在开发一个开源的微商城系统 OdnShop ( https://gitee.com/keke11/OdnShop ),发布之后,有些用户就问,怎么不是 ASP.NET MVC 的?不支持 MSSQL 吗?要上.NET CORE 了,诸如此类的问题。当然这些问题并没有标准答案,从技术本质来说,技术只是用来解决业务问题的一种手段,所以技术的新旧并不是考虑的核心,但开发效率,维护成本,稳定性等等确实必须考核,因为他会影响投入,影响收益。

所以,我想就.NET 程序员如何看待新技术,如何选择新技术,提供一种我的思考,希望大家理性思考,理性讨论,不要把某种框架,某种技术作为一种宗教信仰。

一,WEBFORM OR ASP.NET MVC ?

WEBFORM 的本意是很好的,就是希望把桌面开发的那一套拖拉控件的模式借鉴到了 WEB 开发,如果你开发过 WINFORM 就应该知道,拖拉控件实现 GUI 是很方便,当然了要实现很炫酷的 GUI 的时候,就不容易了,因为需要深入了解控件的原理以及 GDI 等技术,但是 WEB 就不同了,HTML+CSS 可以实现很美观的界面,只要想的到,都可以做的到,但是因为基于 HTML 标记语言,多了一个标记,界面就可能发生变化,而基于 WEBFROM 拖拉出来的控件,经常会生产出一堆的无用的标签导致页面效果达不到预期,为了达到预期目的,反而需要花很多时间了解控件的用法,甚至自己重写控件,这样就失去了原本的意义,开发门槛和开发效率反而没有得到提升。所以 ASP.NET MVC 就很成了大家希望的新选择了。

但是我想表达的是 MVC 是一种好的设计思想,但 MVC 并不等同与 ASP.NET MVC,ASP.NET MVC 只是官方提供的一种最佳实践的框架。而且 MS 的技术体系,有时候往往确实前后的连贯性,想想这些年,MS 推出了多少新技术,新框架,很多人花了很多时间去学习,最后可能连个像样的 DEMO 都没有做出来,那个技术,那个框架已经成为过去式了。

ASP.NET MVC 只是其中一个,我的观点是 MVC 依然是一种好的思想和理念,会一直存在和发展下来,但是 ASP.NET MVC1 到 ASP.NET MVC6,未来会走向何方,只有 MS 才知道,所以如果你计划做一个新项目,无论是选择 WEBFROM 还是 ASP.NET MVC 都是可以,那种技术你擅长,你熟悉,能否快速提供给客户一个稳定可用的解决方案,那就是一种好的技术,但是如果你计划研发一个产品,我认为 WEBFORM 和 ASP.NET MVC 都不是很好的选择,产品的生存周期往往比较长,而 MS 的技术更新换代就比较频繁,产品总不能年年都重构,年年换框架吧,且不说需要投入大量的人力时间,还可能引入一堆的 BUG。所以如何开发产品,我的观点是既可以使用 WEBFORM 好的一面(比如后台,用控件的方式,有时候开发效率非常高效的),也会借鉴 MVC 的优秀思想(在前端,更好的实现代码和界面分离等),但尽量不使用太多的框架,而是自己根据产品的发展和需要,自己去实现,比如 MVC,完全可以根据自己的需要,实现一种轻量级的 MVC 框架。

二,MSSQL OR MYSQL ?

一直以来,.NET + MSSQL 基本是标配,开发.NET 系统,基本都会搭配使用 MSSQL,但自从用了 MYSQL 之后,我就很少用回 MSSQL,不是说 MSSQL 不好,而是 MSSQL 太笨重,某些简单的问题,比如分页,MYSQL 就非常容易,MSSQL 早期版本还需要搞个存储过程来实现,新版本提供了新的语法,但是又无法向下兼容,但是 MYSQL 在一些复杂的联合查询是没有 MSSQL 强大的,具体特性我就不去比较了,毕竟每种数据库各有其优缺点,作为一个普通开发者,也没有办法完全去吃透两种数据库的所有特性,以我个人使用的经验,我觉得企业 MIS 选 MSSQL 会比较好,而互联网产品,选 MYSQL 会更好一些,因为轻量,资源友好型。

三,.NET OR .NET Core ?

一直以来,MS 的技术只能运行在 WIN 系统,自从.NET CORE 的推出,完全改变了旧有的技术观念,那么.NET CORE 是否值得选用,值得期待,我认为:值得!

首先,拥抱更加开放的技术符合时代潮流,多一种选择,总是好事,当然了,如果你是自己开发的产品,自己用,就只跑 WIN 也没啥不好!

其次,我曾经开发一个搜索产品,基于.NET 开发的,我遇到很多潜在客户来咨询,他们的网站是使用 PHP,跑在 Linux 上的,问能否支持 Linux,如果从开发产品的角度来说,能支持多一种操作系统,意味着更多的潜在客户。

再次,.NET CORE 会不会中途就不了了之,MS 的新 CEO 上台后,MS 的发展方向已经很清晰了,WIN 的地位已经下降了,公司营收越来越依赖云计算,这说明 MS 用不着把.NET 绑死在 WIN 上,VS 都有 MAC 版本了,MS 已经越来越开放了,不是 MS 想通了,要开放了,而是开放了能更赚钱,能帮助企业赚钱的方向,企业会放弃,不了了之吗?

总之,对待新技术,新框架,不要做一个宗教式的技术狂热者,而是做一个理性的实用主义者,慎重选择框架类技术,比如 WPF,ASP.NET MVC 等,积极拥抱大方向,比如.NET CORE。本文只是我个人的思考,欢迎理性讨论!

6404 次点击
所在节点    程序员
36 条回复
Raphael96
2018-06-24 10:49:17 +08:00
往.net core 迁移是趋势吧

最近找机会都是想着先找 .net core 而不是 asp.net mvc 这种岗位

反正都是写 CRUD,用什么不一样呢?
Sin
2018-06-24 10:52:46 +08:00
层出不穷的新技术……没入前端坑你就偷笑吧:doge:
poorcai
2018-06-24 12:05:08 +08:00
如果对方还在用 webform,我应该不会考虑
ddup
2018-06-24 12:16:44 +08:00
多看,多了解,多用,就知道什么情况下最适合什么了。
grewer
2018-06-24 12:18:12 +08:00
emmm 他强任他强?
Tlaster
2018-06-24 12:26:15 +08:00
我是.Net 桌面起步的,还是相当偏门的 winrt (现在应该叫 UWP 了),但是这东西没什么公司要,当时毕业的时候就一个爱奇艺,临近毕业的时候开始碰 Xamarin,把 Xamarin 当个桥熟悉了一下 Android,又正好 kotlin 起来了,直接开始弄 Android 开发,然后很容易就找到工作了。.Net 这一块也没有放,期间在 Windows store 上架了几个应用。再到现在开始弄前端这堆东西,vue 和 react 都写过也都有上线的。之前的东西也还是没有放弃,开始自己边研究边写跨平台框架,但是 iOS 还是不太熟,准备去搞一搞。
新技术这么多,.Net 上的还算比较少了,后端的东西就相对更少了,.Net 的社区这几年搞得新轮子很有潜力的有 AvaloniaUI,但是比起前端还真是小巫见大巫,前端还一天一个轮子,重构简直家常便饭,Airbnb 刚宣布放弃 react native,多半是又是自己造轮子了。
我觉得多出去看看外面的世界多好,不要老守着自己的一亩三分地。有时候不同思维的碰撞会带来更好的解决问题的思路。连微软都开始看外面的世界了,vs code 用的 electron,Skype 准备用 react native 重构,要换成以前多半是自己搞一个闭源的跨平台框架来用。
另外你以为我为什么没有放弃 UWP ?我在赌 HoloLens 成功带起 VR/AR 风潮,借着这风我就可以起飞了(滑稽
huiyadanli
2018-06-24 12:26:48 +08:00
反正微软爸爸给出完整解决方案跟着走就行了。。。你说的几种东西也都不是什么层出不穷的新技术。。。
WEBFORM 已经被遗弃,ASP.NET MVC 是主流解决方案。。MSSQL MYSQL 之争一直以来都有。
.NET Core 出来也几年了,就等着流行起来。
shijingshijing
2018-06-24 12:34:24 +08:00
其实最终能不能流行起来,跟技术本身高级不高级没多大关系,更大程度上是受商业上考虑的影响。Java 已经有那么完整的生态,运行环境也是开源的,数据库下可以用 MySQL,上可以 Oracle,招人也好招,一抓一大把价格还便宜,框架弄好了就是流水线操作,对人力要求也不高。反观你微软的东西,动不动就收费,底层还各种不透明,好不容易费劲巴拉弄清楚了一个,你又弃坑了,我的投入不要钱啊?长此以往,最终会被用户 /开发者 /厂商联合抛弃的。
chouchoui
2018-06-24 12:37:31 +08:00
我们项目组基本上在公司已经很乐意接触新技术了,组长用各种框架搭了数个可用稳定的后台,结果.Net Core 的那个是最不完善的,升级到 2.0 踩坑无数。
和其他组合作时候看到那些用着 webform 更有甚者一些遗老员工还在用 NVelocity,后端拼装 HTML 代码前端用。
feverzsj
2018-06-24 12:43:28 +08:00
.net 这么烂的生态圈,还有人坚持到现在?
zhchyu999
2018-06-24 12:47:33 +08:00
拿 MYSQL 和 MSSQL 比?你怎么不加上 oracle
mantout
2018-06-24 13:23:21 +08:00
微软的那套取名字也是奇葩,像 .NET ASP.NET C#,不仅对搜索引擎不友好,日常使用,尤其是发音的时候很为难,我有时发 dot net,有时发点 net,有人念 C 井,我一般念 C Sharp。
BenX
2018-06-24 13:28:37 +08:00
看好 dotNET core
Midnight
2018-06-24 13:49:36 +08:00
以上都是 非 .NET 系的开发者吧?

.NET Core 超越 Java 指日可待,Java 那么烂的语法还有那么多人用,我想知道有多少 Java 1.6 还在跑?
levon
2018-06-24 13:49:43 +08:00
楼主把项目技术栈更新到.net core,我保证 star 数量 double
opengps
2018-06-24 13:52:38 +08:00
我去了一家这样的,老旧技术企业。好处是轻松,坏处是趣味少
hjc4869
2018-06-24 14:07:48 +08:00
webforms 建议弃,这货 .NET Core 不支持。别的同意
kwklover
2018-06-24 14:12:47 +08:00
@levon 用 mysql 就有这方面考虑,只是目前还有些旧的库先替换掉之后,再迁移到 core 就不会那么多问题了
kwklover
2018-06-24 14:17:21 +08:00
@Midnight 学过 java,没做个项目,语法方面 c#还是优雅一些,不过生态还是 java 强,好多库都从 java 那边 port 过来的,比如 lucene 等,我没有深入用过 java,不好比较,只是语言好不好是一回事,生态也很关键吧。
kwklover
2018-06-24 14:20:36 +08:00
@huiyadanli 项目已经在计划去 webform,前端已经基本完成,后端还没有,但是也不计划用 asp.net mvc,这货能流行多久不好说,老迁移,升级框架费劲,准备自己搞一个简单的 mvc,不跟 ms 的节奏。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465382

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX