真不是我黑,快2020年了,.NET依然没多大卵用
首先说明,我是开发.NET的。所以,我最有资格喷.NET沙雕。
没错,.NET又火了,不过火的是.NET Core(新一代.NET,可跨平台,写网站,机器学习,搞进容器,做微服务,写移动应用,嵌入式,还可以在一定程度上替代.NET Framework)。oh, my god!简直十项全能!听起来就很屌屌的,有木有??
但是恕我直言,在了解了一段时间之后,我还是觉得很鸡肋,没什么卵用。
1,在.NET Core 3 出来之前,.NET Core最大的作用就是写写ASP。没错,这对搞B/S应用的来说,似乎听起来很振奋。毕竟ASP网站终于可以跟IIS说拜拜了。用上容器,自此可以更方便地在Linux之间移动(虽然从Windows Server 2016开始,容器也可用在Windows Server上,但是Linux容器免费啊!而且完全定制!),自此告别Windows Server授权费,也不用因为使用盗版Server而良心愧疚了呀!但是,在高呼.NET Core牛B的同时,也要注意到它的局限性。跟PHP简洁的语法相比,ASP的语法明显啰里八嗦,臃肿不堪。虽然.NET Core 3推出Blazor,声称不必了解JS就可以搞网站(实际上为了制作B/S应用,会不得不调用JS相关的库,也完全做不到全然不用)。但是Razor语法简直莫名其妙,网站结构很不直观(也许看多看顺眼了就不觉得)。没错,能搞,但我讨厌这么搞。最最关键的是,ASP毕竟太古老,即使今天自我革命,但要面临的是已经占据B/S端开发大部分市场份额的其它动态开发语言的竞争。我不看好。
2、能写移动应用。Xamarin+C#,就能搞出跑在Android和IOS上的APP。一次开发,到处运行,好厉害的样子啊。没卵用。用Xamarin开发,如果我完全不懂Android开发或者IOS开发,用Xamarin开发仍然会遇到与Android或IOS相关的问题,可是我完全不懂Android,甚至连Activity是什么都不知道,我连布局界面都是问题,更别谈再遇到其他与Android或IOS相关的问题了。所以,是能搞,但我不看好这么搞。有学Xamarin的精力,还不如直接上手Android或IOS,它们的市场占有率比Xamarin高那么多,况且能提供更过就业岗位。
3、能机器学习。哇塞,好牛逼。我.NET/C#也能搞这么前沿的技术了啊!我不想说什么,就拿github上star数来说,tensorflow是139k,http://ML.NET是6.6k。谁火爆,谁主流,一目了然。没错,是能搞,但不怎么火啊。既然如此,我为什么不选python+tensorflow的方式,而非要选不怎么火的ML.NET+C#的方式呢?前者还那么简洁直观?
4、能搞嵌入式。我搞嵌入式为什么用C#?有QT C++,即使不用什么QT C++,我完全可以用纯正的C++或C,为什么要选性能差的C#呢?仅仅是编码简单易维护吗?对,是能搞,我为什么要放弃C++用C#搞呢?我需要一个合理的解释。
5、替代.NET Framework。没错,.NET Core 3发布后,是可以开发Winform,WPF应用。据说要停止更新.NET Framework,统一到.NET 5版本。先不说现在用.NET Core开发Winform和WPF的略微鸡肋,就说一个现实问题:我的winform和WPF应用在.NET Framework下运行得好好的,为什么要移动到.NET Core?你说性能好?拿出证据来。如果性能差别不很明显,我有理由拒绝用.NET Core重写.NET Framework应用。而且,传统的WCF应用怎么办?毕竟.NET Core还不支持WCF。我的WCF应用跑得好好的,为什么要找另一种替代方案重搞一遍?
总结一下,就是能搞,但是搞得理由不充分,且市场不够火热。2020会不会更火?其实,不止2020,在.NET Core没有充分理由赢得市场青睐之前,都没有持续火下去的正向动力。希望吧,毕竟.NET在革新,虽然有补功课的嫌疑。