经常在一些技术社区看到这些的问题,一个.NET开发者去求职,看到应聘的公司的技术栈还是比较老的ASP.NET WEBFORM的时候,希望了解未来会否使用ASP.NET MVC的时候,没有获得肯定答复,于是就放弃了这一份机会,以技术选企业,是否必要?
最近我在开发一个开源的微商城系统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。本文只是我个人的思考,欢迎理性讨论!