经常在一些技术社区看到这些的问题,一个.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。本文只是我个人的思考,欢迎理性讨论!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.