这个话题有点自黑的意思,我从.NET 1.1开始玩.NET,到现在已经11年了,我是看着.NET成长起来,在中国壮大的,也见证了近几年.NET被各种嫌弃,其实说到底还是中国的架构师太少,我是说真正懂行的架构师,一个资深的架构师是不会直接攻击一门语言或者嫌弃一门语言的,而是会从操作系统、服务器应用容器层面是分析性能、实现成本以及有多少坑。

我其实和很多客户、IT经理、高级软件工程师、架构师聊过,所以对事实有一定的了解。首先呢在中国技术圈氛围就是很浮躁的,浮躁到什么程度,还是中国人的老毛病,喜欢跟风、喜欢一窝蜂,人家用node.js,我们就用node.js;人家用docker,我们也用docker;人家用CloudFoundry,我们也用CloudFoundry,总之人家的东西比我们家先进,所以我们一定要跟上。拿docker来说,其实很多传统企业根本没有用,也就是几家互联网大厂对它情有独钟;Node.js我承认它性能好,但毕竟是弱语言编程,其实代码的维护成本并不低,而且你需要雇佣很资深的Javascript开发人员,薪水自然是水涨船高。其实很多所谓的架构师、IT经理考虑的不是迁移成本、运维成本,而是怎么找点事做,这样才能体现出自己的价值,我总结为四个字“无中生有”。

.NET中的C#语言(我的最爱)其实从1.0发展到6.0,目前已经非常成熟了,特别是语言层面的异步编程支持,已经部分超越了Java,那为什么还是没有公司愿意选它呢?从我的角度看,有几方面的原因。

首先微软的IDE实在是太好用了,好用到基本上找个应届生,就算不懂编程,1-2天内也能写个控制台程序,当然是简单的;但如果是Eclipse,配环境也要好一会儿,但这意味着什么知道吗?门槛!人的门槛!越好用的东西聚集的人相对越Low,当然并不是说用.NET的人烂,而是说平均而言,真正懂.NET的开发人员相对于懂Java的开发人员要少,因为人家的IDE用起来各种不舒服,还不如用Notepad++和Java.exe做编译。这就导致了Java的工程师很多时候必须知其然知其所以然,否则它没法干活,比如jar打包。但很多.NET的程序员估计连怎么用命令行编译程序都不会,这就是问题。

其次一些号称懂.NET的架构师觉得.NET简单,所以他们不愿意给.NET开发高工资,这也间接导致了很多.NET开发人员开始转向其他语言,其实这种模式就是个恶性循环。到最后的结果就是,大量潜在的优秀开发人员放弃.NET,毕竟现在是向钱看的年代。.NET从我的角度看是非常适合做后端,这么多年技术的积淀使得.NET得到了社区广泛认可,其实在国外懂.NET还是很吃香的,根本不愁找不到工作,所以国内一些公司的逻辑我觉得很奇怪,甚至觉得神奇,反正我就是不招.NET工程师,我公司比较高大上,所以只有高达上的Java、Node.js 才能配得上我司,我只能说,不作不死。

再者,.NET可以抄的现成架构并不多,而真正懂.NET的资深架构师在中国基本属于稀有物种,因为这些公司的所谓架构师水平有限,他们自己用.NET写不出好的架构代码(我通常喜欢叫他们集成师,即不会写代码或者写不好代码的架构师),最终还是选Java,因为Java有一大堆架构可以抄,而且很多是开源的,就算不会也至少能抄个4-5成吧。当然咯,从项目风险可控角度这是可以接受的,但其实资深架构师是可以解决这些问题的,在国外很多架构牛人基本都是自己写框架的,这也就能解释为什么优秀且流行的框架基本上都是洋人写的,比如Java的Structs、Spring framework, .NET的Orchard、DNN、ASP.NET Biolerplate等。

最后,微软作为.NET亲爹自然难辞其咎,自从纳总上台后,更是拼命推行拥抱开源政策,拥抱了一堆非.NET系语言,尽管推出了跨平台.NET即.NET Core,但在.NET市场布局和推广方面与过去并没有什么明显不同,说白了就是表现对.NET份额出无所谓的态度。不过微软一直是行业中比较傲娇的公司,它觉得只要自己想推什么肯定能成功,所以对市场份额从来表现的不太看重,他觉得根本不需要在意,迟早是微软的。然并卵,微软手机的失败让微软感受到了自己能力的有限,最近貌似在调整策略,其实回过头来看代价非常高,单收购诺基亚就花了85亿,我只能赞叹微软真土豪,有钱任性,呵呵。

我必须承认近2年.NET的中国市场份额在不断下降,很大程度上与.NET的市场推广策略有关,给行业内一种中低端编程语言的假象,在语言推广初期,这种策略没有什么错误,便于用户上手和接受,但是如今都10年了,重新树立.NET高大上技术的形象非常必要。

有人可能要说我属于老王卖瓜自卖自夸了,我举几个真实的.NET案例你就懂了,沪牌拍牌系统后台是.NET写的,并发至少几千每秒,这个大家懂的;Stackoverflow核心是.NET写的,网站并发 3000每秒,数据库并发 8000每秒;摩根斯坦利交易客户端以及协议是.NET写的;NASDAQ的交易系统是.NET写的,后台跑的SQL Server;腾讯有大量后台系统用.NET写,腾讯甚至已经使用跨平台.NET(Mono)很多年,部署于它的TLinux系统集群中;携程有大量系统用.NET写成,日均动态PV是3千万。

事实胜于雄辩,我就不多说了,你们懂的。


新开了个QQ群(239210135),可直接扫下面的二维码加入,看完帖子,咱们继续群里共商.NET大计。

.NET技术在中国为什么老被人嫌弃的更多相关文章

  1. 端口映射工具 redir/socat/xinetd - 运维技术 - 开源中国社区

    端口映射工具 redir/socat/xinetd - 运维技术 - 开源中国社区 端口映射工具 redir/socat/xinetd    10人收藏此文章, 我要收藏 发表于3天前(2013-08 ...

  2. [No000030]程序员节发点别的:中国教育整个把人脑子搞坏了-易中天

    导读 在易中天看来,中国教育和中国文化的问题一样,是弱智化.搞坏的原因是什么?是我们的教育评价目标就是"成王败寇"四个字.他明确提出反对励志,反对培优,反对成功学,反对望子成龙.他 ...

  3. 微软开放技术(中国)携 CKAN 和 OData 技术引入基于 Azure 的开放数据平台

    今天,微软开放技术(中国)通过微软公有云Azure引入一个全新的开放数据平台,该平台基于开源数据门户解决方案 CKAN,以及由微软开放技术(中国)特别针对中国市场优化的ODATA插件来增强其国际化和本 ...

  4. 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区

    突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

  5. VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人]

    VRay 2.0 SP1 2.10.01 for 3ds max 9/2008/2009/2010/2011/2012 32/64位 顶渲简体中文版+英文版[中国室内设计论坛-室内人] 对最新版本的V ...

  6. 投资人的能量往往大多远远不仅于此,他能站在不同的角度和高度看问题(要早点拿投资,要舍得让出股份)——最好不要让 Leader 一边做技术、一边做管理,人的能力是有限的,精力也是有限的

      摘要:在创业三年时间里作为联合创始人,虽然拿着大家均等的股份,我始终是没有什么话语权的,但是,这也给了我从旁观者的角度看清整个局面的机会.创业公司的成败绝大程度取决于技术大牛和公司 Leader, ...

  7. 4星|《超级技术:改变未来社会和商业的技术趋势》:AI对人友好吗

    超级技术:改变未来社会和商业的技术趋势 多位专家或经济学人编辑关于未来的预测,梅琳达·盖茨写了其中一章.在同类书中属于水平比较高的,专家只写自己熟悉的领域,分析与预测有理有据而不仅仅是畅想性质. 以下 ...

  8. 【Web Shell】- 技术剖析中国菜刀 - Part II

    在第一部分,简单描述了中国菜刀的基本功能.本文我将剖析中国菜刀的平台多功能性.传输机制.交互模式和检测.我希望通过我的讲解,您能够根据您的环境检测出并清除它. 平台 那么中国菜刀可以在哪些平台上运行? ...

  9. 【Web Shell】- 技术剖析中国菜刀 – Part I

    这里的中国菜刀不是指切菜做饭的工具,而是中国安全圈内使用非常广泛的一款Webshell管理工具,想买菜刀请出门左拐东门菜市场王铁匠处.中国菜刀用途十分广泛,支持多种语言,小巧实用,据说是一位中国军人退 ...

随机推荐

  1. mysql自增列导致主键重复问题分析。。。

    前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下.以免以后有童鞋遇到类似问题百思不得其解,难 ...

  2. Web环境使用相对路径发布Webservice

    常我们的Webservice服务的发布地址都将是一个相对路径,在与Spring一起使用时我们需要引入Cxf配置Webservice的schema,如jaxws,用以定义对应的Webservice. & ...

  3. Java 工程转 C#

    一.  前言 由于要用c#写点东西,但是我不会c#啊,所以就只能先用Java写好,然后再看看 Java 和C# 的差别,再一点一点转嘛,谁知道,google一下,有软件可以直接把 Java 工程转为C ...

  4. shell脚本学习指南

    一.UNIX各个工具所支持的正则表达式: 二.使用sed在某一目录下建立一份目录备份: find /home/foo/ -type d -print | #找出/home/foo/目录下所有目录文件 ...

  5. AStar算法的学习

    摘自:http://www.cnblogs.com/hxsyl/p/3994730.html A*算法的java实现 import java.util.ArrayList; import java.u ...

  6. Java设计模式之代理模式

    代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式: 人如其名,代理相 ...

  7. REST架构

    网络上的所有事物都被抽象为资源(resource): 每个资源对应一个唯一的资源标识符(resource identifier): 通过通用的连接器接口(generic connector inter ...

  8. Maven学习(九)插件介绍

    我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...

  9. Oracle死锁查询及处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错.二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更 ...

  10. iOS NSFileManager 使用详解

    使用NSFileManager 文件系统接口 允许访问文件夹内容 创建 重命名 删除文件 修改文件和文件属性,以及Finder对所有文件系统任务执行的一般操作. 访问NSFileManager,使用共 ...