V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kwklover
V2EX  ›  程序员

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

  •  
  •   kwklover · 2018-06-24 10:29:44 +08:00 · 6251 次点击
    这是一个创建于 2125 天前的主题,其中的信息可能已经有所发展或是发生改变。

    经常在一些技术社区看到这些的问题,一个.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。本文只是我个人的思考,欢迎理性讨论!

    36 条回复    2018-06-25 16:27:09 +08:00
    Raphael96
        1
    Raphael96  
       2018-06-24 10:49:17 +08:00
    往.net core 迁移是趋势吧

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

    反正都是写 CRUD,用什么不一样呢?
    Sin
        2
    Sin  
       2018-06-24 10:52:46 +08:00
    层出不穷的新技术……没入前端坑你就偷笑吧:doge:
    poorcai
        3
    poorcai  
       2018-06-24 12:05:08 +08:00 via iPhone   ❤️ 1
    如果对方还在用 webform,我应该不会考虑
    ddup
        4
    ddup  
       2018-06-24 12:16:44 +08:00
    多看,多了解,多用,就知道什么情况下最适合什么了。
    grewer
        5
    grewer  
       2018-06-24 12:18:12 +08:00
    emmm 他强任他强?
    Tlaster
        6
    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
        7
    huiyadanli  
       2018-06-24 12:26:48 +08:00
    反正微软爸爸给出完整解决方案跟着走就行了。。。你说的几种东西也都不是什么层出不穷的新技术。。。
    WEBFORM 已经被遗弃,ASP.NET MVC 是主流解决方案。。MSSQL MYSQL 之争一直以来都有。
    .NET Core 出来也几年了,就等着流行起来。
    shijingshijing
        8
    shijingshijing  
       2018-06-24 12:34:24 +08:00
    其实最终能不能流行起来,跟技术本身高级不高级没多大关系,更大程度上是受商业上考虑的影响。Java 已经有那么完整的生态,运行环境也是开源的,数据库下可以用 MySQL,上可以 Oracle,招人也好招,一抓一大把价格还便宜,框架弄好了就是流水线操作,对人力要求也不高。反观你微软的东西,动不动就收费,底层还各种不透明,好不容易费劲巴拉弄清楚了一个,你又弃坑了,我的投入不要钱啊?长此以往,最终会被用户 /开发者 /厂商联合抛弃的。
    chouchoui
        9
    chouchoui  
       2018-06-24 12:37:31 +08:00 via iPhone
    我们项目组基本上在公司已经很乐意接触新技术了,组长用各种框架搭了数个可用稳定的后台,结果.Net Core 的那个是最不完善的,升级到 2.0 踩坑无数。
    和其他组合作时候看到那些用着 webform 更有甚者一些遗老员工还在用 NVelocity,后端拼装 HTML 代码前端用。
    feverzsj
        10
    feverzsj  
       2018-06-24 12:43:28 +08:00
    .net 这么烂的生态圈,还有人坚持到现在?
    zhchyu999
        11
    zhchyu999  
       2018-06-24 12:47:33 +08:00
    拿 MYSQL 和 MSSQL 比?你怎么不加上 oracle
    mantout
        12
    mantout  
       2018-06-24 13:23:21 +08:00
    微软的那套取名字也是奇葩,像 .NET ASP.NET C#,不仅对搜索引擎不友好,日常使用,尤其是发音的时候很为难,我有时发 dot net,有时发点 net,有人念 C 井,我一般念 C Sharp。
    BenX
        13
    BenX  
       2018-06-24 13:28:37 +08:00
    看好 dotNET core
    Midnight
        14
    Midnight  
       2018-06-24 13:49:36 +08:00
    以上都是 非 .NET 系的开发者吧?

    .NET Core 超越 Java 指日可待,Java 那么烂的语法还有那么多人用,我想知道有多少 Java 1.6 还在跑?
    levon
        15
    levon  
       2018-06-24 13:49:43 +08:00
    楼主把项目技术栈更新到.net core,我保证 star 数量 double
    opengps
        16
    opengps  
       2018-06-24 13:52:38 +08:00 via Android
    我去了一家这样的,老旧技术企业。好处是轻松,坏处是趣味少
    hjc4869
        17
    hjc4869  
       2018-06-24 14:07:48 +08:00 via iPhone
    webforms 建议弃,这货 .NET Core 不支持。别的同意
    kwklover
        18
    kwklover  
    OP
       2018-06-24 14:12:47 +08:00 via Android
    @levon 用 mysql 就有这方面考虑,只是目前还有些旧的库先替换掉之后,再迁移到 core 就不会那么多问题了
    kwklover
        19
    kwklover  
    OP
       2018-06-24 14:17:21 +08:00 via Android
    @Midnight 学过 java,没做个项目,语法方面 c#还是优雅一些,不过生态还是 java 强,好多库都从 java 那边 port 过来的,比如 lucene 等,我没有深入用过 java,不好比较,只是语言好不好是一回事,生态也很关键吧。
    kwklover
        20
    kwklover  
    OP
       2018-06-24 14:20:36 +08:00 via Android
    @huiyadanli 项目已经在计划去 webform,前端已经基本完成,后端还没有,但是也不计划用 asp.net mvc,这货能流行多久不好说,老迁移,升级框架费劲,准备自己搞一个简单的 mvc,不跟 ms 的节奏。
    ruchee
        21
    ruchee  
       2018-06-24 14:22:12 +08:00 via iPhone
    苹果都如日中天了,却有人还以超越诺基亚为自己的终极目标。送给楼上的“超越 Java 指日可待”
    zkd8907
        22
    zkd8907  
       2018-06-24 14:26:27 +08:00
    =。= 前端开发也有这种疑问
    rocbomb
        23
    rocbomb  
       2018-06-24 14:30:36 +08:00
    Unity 火了 C#热度也高了起来
    daimazha
        24
    daimazha  
       2018-06-24 14:37:41 +08:00
    文章太长不看了,转 Java 有几年了,MVC 和 Mysql 都是主流的技术,并不是什么新技术,NET Core 是未来的主流。
    BigBunny
        25
    BigBunny  
       2018-06-24 16:34:02 +08:00
    没懂在说啥==
    GTim
        26
    GTim  
       2018-06-24 16:39:01 +08:00   ❤️ 1
    作为快要写完一份 .NET Core 教程的老程序员来说,.NET 程序员不要太幸福
    Midnight
        27
    Midnight  
       2018-06-24 16:47:14 +08:00
    @ruchee 哈哈
    Humorce
        28
    Humorce  
       2018-06-24 16:52:06 +08:00
    DOTNET CORE 很强
    kwklover
        29
    kwklover  
    OP
       2018-06-24 16:57:09 +08:00 via Android
    @GTim 分享一下?
    GTim
        30
    GTim  
       2018-06-24 17:16:53 +08:00   ❤️ 1
    @huiyadanli
    @shijingshijing

    其实流行不流行,真的不重要

    目前市面上的技术工作分为两大派:

    1. 用稳定的技术,比如 .NET Java
    2. 用最新的时髦的技术,比如 Nodejs Golang

    有差别吗?有,但,就像很多技术大会,技术交流会一样,想去吗?想去,给你机会去,去不? 不去

    使用 .NET 不能时髦吗? CNBLOGS.com 会服吗? 不会,那为什么,它还在用 .NET 构架

    作为一名曾经的程序员,我 cnblogs.com 官方发的每篇文章我都会预览,都会看看它们使用 .NET 除了啥问题,它们是怎么解决的

    我曾经作为已经程序员,现在是某个小领导,我 2015 年就开始运行一个网站叫简单教程,我不是为了运营教程而运营网站,我是为了写出这几年自己的想法,比如翻译 PHP PSR,比如翻译 HTTP,比如接下来要翻译的 .NET Core

    我一直想要了解的是,这些东西,是怎么基于那些最基本的东西做出来的。

    比如说中间件,那什么是中间件,怎么把中间件用在 HTTP 请求和响应中,各个框架,各个语言,各个解决方案又是怎么解决的

    比如同为 HTML,为啥会有那么多形形色色的框架模板和助手,为什么会有 Vue,会有 React,它们解决了什么问题,它们有衍生出了什么问题

    等等等等,只有去了解更多,知道更多,才能拓宽知识面


    至于公司选择一种构架放弃另一种构架,不是因为技术原因,而是因为技术人的原因

    京东一开始使用 .NET 构架,为什么呢?当时 .NET JavaEE 可是两大最热门的技术,但为什么后来慢慢转 Java 了,那是因为阿里的量起来了,阿里招聘也培养了很多 Java 程序员,它们,它们产生了规模效应,导致任何一个 Java 知识点很快就会被消化吸收,但是 .NET 没有这么体量的公司

    所以,不要慌,不要慌
    enhancer
        31
    enhancer  
       2018-06-24 23:06:38 +08:00
    看看是否能帮助你减轻工作量: https://enhancer.io
    Daming
        32
    Daming  
       2018-06-24 23:16:01 +08:00 via Android
    dotnet core 是未来,不过对比前端和 Java,.net 这块的新技术、新架构算不上层出不穷吧。
    cein
        33
    cein  
       2018-06-25 10:47:42 +08:00
    相比语法之类而言,C#的确实比 java 好,但这个东西,生态太凉,暂时几年想超过 java,基本个人感觉不存在的,.net 方面的话,webform 确实该弃了,个人推荐升级,.net core 是未来趋势,张队都说过,他已经几年没写.net 了,都是.net core,我自己的话从 core1.0 用到现在的 2.1,坑确实好多,然后,层出不穷的新技术来说,前端确实坑更多,入前端 emmmm
    PhpBestRubbish
        34
    PhpBestRubbish  
       2018-06-25 11:54:35 +08:00
    .net core 才是王道吧
    xuecat
        35
    xuecat  
       2018-06-25 12:30:45 +08:00
    .net core 吧,新技术肯定学不完,我司是主要看技术总监给大体方向, 项目方向自己玩。
    年前规定迁入亚马逊云,现在基本都迁移到 core 里面了。
    小项目的话,自己随便搞,也顺便学习!
    最近就想把一个 asp.net 的后台服务改写成 java 的微服务。
    yippees
        36
    yippees  
       2018-06-25 16:27:09 +08:00
    行进中开火
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5206 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:28 · PVG 17:28 · LAX 02:28 · JFK 05:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.