为什么那么多公司不用 .NET,而选择PHP、JSP,是 .NET有什么缺点吗?

牟海峰


本人5年自由职业程序员一枚,我来回答一下这个问题

.NET 和 PHP、JSP的区别

.NET是微软公司的一个平台,它的内容非常丰富,有丰富的框架,常用的C#语言语法糖非常的多,无论是编写大型平台和是小型网站都完全没有问题。PHP是一门后端语言,用于网站开发,无论从语言本身还是框架资源都没有 .NET丰富。JSP是一种网页技术,基于JAVA语言,JAVA语言语法糖也没有C#多,但是框架特别特别多。国内的情况是JAVA程序员是最多的,国外是C#程序员是最多的。

为什么那么多公司不用 .NET

.NET其实是一个非常好的平台,但是国内程序员数量没有JAVA多,招聘的难度要比JAVA大一些,如果是招聘JAVA很容易招人。其次就是很多小型网站根本用不到那么复杂的技术,万能军刀虽好,但是我只需要一把普通菜刀就能解决的问题就不需要军刀了。很多小型网站使用的都是PHP语言,因为有现成的CMS系统搭建网站只需要几个小时,而且不需要很深的技术。从经济效用上来讲,公司哪个能节约成本就用哪个。


低吟浅笑


做了7年的c#开发,4年多的java,c/c++,说说我的看法,主要有的区别:

一是开源和闭源的区别,.net早期完全闭源,开发也是完全傻瓜式的,微软的思想就是让开发更容易,所以无法看到底层实现,给人的感觉就是走一条胡同,很快到达目的地却无法知道墙内的东西,接触过java和c之后,感觉就像掉进了大海,原来海底也这么漂亮,有太多开源的软件和框架,你可以看到更深层的东西,比如我们看dubbo,看进去后看netty,netty看进去后看到Linux,select,epoll,看到epoll,看Linux相关的,感觉就是掉进了大海,太多东西需要学习,做这么多年开发依然在不断的学习,但也给了我更多兴趣和探知未知世界的乐趣,以前做.net的时候有种感觉就是,别让我做非.net的东西,我不会,对陌生的的东西很害怕,现在的感觉就是你让我写个控制原子弹的程序我也敢去写(比方)。

二是免费和收费的区别,所有的公司产品的成本是公司发展的最关键因素之一,.net全家桶成本太高,vs的版权+windows版权+sql server版权再加上其它支持类软件版权,成本非常高,相反linux完全免费开源,给你选你会选哪一个?同时linux或从Unix而来,但天生具有轻量级性能可以发挥到极致而且稳定的系统,而windows为个人和办公而设计,界面和系统其它资源就让系统占用一部分,感觉很笨重,上天做一个长连接测试,单台Linux轻松上几十万,当然由于内存原因,否则可以上百万,而windows就很难做到,而且Linux哪里不行你可以去改的,windows就不行了,所以一个稳定高效免费的还有一大堆开源支持的,和一个收费性能相比没有那么高效的,好多公司自然选择前者

三是开发效率,上面说两点都说.net处于下风,但.net不是一无是处,.net有自身的优点,那就是开发效率,.net在java之上做了改进,让开发人员更容易开发,语言优美,做企业应用开发是很好的工具,可以快速出结果,你用其它开发要么大炮打蚊子,要么不稳定,在工厂和企业就要求很快做出来,这是.net优势,所以有他的市场份额,说这么多发现没个图,有评论的传一张


清风飞雪326


先以开发者的角度:

PHP跟.net根本就不是一个级别的,.net无论是应用场合、开发环境、帮助文档、编写风格、运行效率全部吊打PHP;PHP之所以流行就是因为很多开源框架都是现成的,刚好符合国人拿来主义的精神,修修改改就能拿来卖钱了。

JAVA各方面体量大致跟.net旗鼓相当,Windows系统下还是.net的天下,企业应用方面JAVA占用率高些,移动开发方面因为安卓和苹果的原因,.net失去了先机。微软正在逐步赶超,unitiy、.net core都在表明微软的态度。

以成本的角度:

微软的产品哪都好,就是版权太贵,Windows系统要钱,office要钱,服务器要钱,sqlserver要钱,再高级点用用企业版、集群之类的,做一个项目下来才能挣多少钱,都给微软了。PHP之所以能存活,就是linux免费,MySQL免费,Apache免费,PHP免费,就连框架都免费;JAVA跟PHP差不多。这种生态下导致了代码资源非常丰富,天下一般抄,开发成本就更低了。所以不是微软的东西不好,是JAVA和PHP开发成本太低了。用过对比你会发现,贵有贵的道理,所有开发帮助文档中,没有比微软做的更详尽的。

如果你是一个独立开发者,首选.net,Windows桌面应用、Windows服务、Windows游戏、网站、webservice、unity游戏,除了安卓和苹果原生应用,.net都能胜任。如果微软可以在安卓下造出类似framework的东西,那就一统天下了。


自由践行


7年,net开发,不请自来。我认为在国内误解是其中一个原因,搜搜国外几大编程语言排行 c#一直排4 5 抛开解释性语言 和函数式语言不说, c#是java的直接对手 ,按比例基本3:1 ,其中英国 德国接近2比1 2019年12月份的数据 ,足可以说明.net挺优秀,为啥在国内就被说得不堪呢? 因为网上有铺天盖地的对.net陈旧观念的文章,误导很多新人。证明下 ,net core是夸平台的全栈平台 基于mit协议的全开源 开发工具社区办够用 免费 asp.net core做web服务端 wpf winform做pc客户端 xamarin做android和ios unity做游戏,对于企业来说这样一个全功能 完全免得开源的平台 值得尝试。 另外.net是一个完全从底层重写的 抛弃了历史的包袱 那个说跟java一样重的是胡说的 最大的问题是生态 既然.net framework那么多年都不死,国外还这么火, 现在这么开放 肯定会越来越好的 。一个全新的平台 未来很有希望。其实国内也不见得那么不堪 以北上广 51job搜索 跟java的岗位基本4比1 ,薪资java好些, 不过.net.找工作竞争小很多 看看培训机构就晓得了


变形精怪


这个答案有几点:

1、运行环境成本问题,在.net core出来之前,.net

需要的运行环境搭设成本高,windows服务器正版上万,用access做数据库也需要几千元的正版office,虽说sql express是免费的,但是阉割的太厉害。所以一般win虚拟主机或者服务器都基本上比linux的贵,尤其是海外注重版权地区,更是差至少一半,所以造成了php大行其道,因为他的运行环境几乎零成本,而且服务器需要的配置可以很低,甚至128m内存就可以跑php程序。

2、开发环境成本问题,一样的毛病,code出来之前,开发.net程序的工具首选visual studio,但是正版的也要几千上万,不是一般人承受的起的。而php和java的免费又好用的开发工具又很多,因此php又获得了先机。

3、学习成本问题,.net之前,微软平台应用系列的开发需要太多,vb,c,c++,而网页脚本语言是基于vbscript的asp,随着系统的发展,这些需要和脚本逐步跟不上时代对敏捷开发、更复杂系统开发的需求,因此推出了asp.net和c#、f#,vb.net等语言,网页方面使用asp.net开发又一直升级,.net 2.0,3.0,3.5,到现在的4.7.x,每次升级都带来了新的概念,如今为了抢回份额,推出了.net core 也是升级了好几个版本,所以.net的开发要不断的学习,学习,升级,升级。而php就不一样了,版本的升级基本上都是框架内的升级,学习成本明显低于.net

4、资源丰富问题,如上所述,由于成本问题,很多人选择了php开发,然后php的免费框架越来越多,程序员一般都懒,拿来修修改改就能上线,接着做下个项目就可以啦,而.net明显没那么多免费框架,市面上分许多.net框架是要授权费的。

不过目前微软的发力,也在着手改善这种问题,发布了visual studio code,visual studio community免费开发工具开发成本明显降低,.net code跨平台语言只要版本符合要求linux系统也可以运行.net code开发的程序了。如果能够有支持linux的文件型的数据库软件(例如office的access)发布就更好了。


魔码云


国内公司的惯用套路:国外的开源软件,改吧改吧,凑合着自己用了,或者当产品卖了。所以用某一套东西,取决于github或者说sourceforge下相关技术的开源的项目多不多。

微软.net、C#无疑在这些开源平台上相对java,node要少很多。为什么少呢?因为微软没有看清楚软件开发技术的发展趋势。这个趋势就是devops。

可能有很多人没有往这个方面考虑。其实devops从很早就在影响这个行业的。开发人员需要让他们写的程序更容易编译,bug更少,上线风险更低,就必然需要更为智能的依赖包管理机制、自动化测试机制,产品发布流程化机制。这些东西的先驱者是——java,其次新近崛起的nodejs,golang都一上来就提供了相关的解决方案。反观微软,可能在微软内部这些东西很健全,但是在外面,你要想搭建起一整套东西,这可不是一两个钱可以搞定的。

虽然国内早期都在肆无忌惮的使用微软盗版,但贫穷有固执的独立外国开发者们已经因为这些开始放弃微软了。所以微软的开发生态圈一直在缩小,甚至那个最大的微软开源社区——codeplex都被关闭了。这你让我们这些抄抄抄的程序员情何以堪呢?所以很多公司也就果断弃坑了。


信息扭曲力场


我自己当初学过.net,java,现在算是略有了解。就我个人理解,许多公司不用.net语言的根本原因,就是.net在最初的时候不开源,教程少,入门较难,而且最后正式发行程序什么,还要交钱,所以在许多公司中首选java这种开放语言,教程多,入门简单,基本不收费(不收费是关键,划重点)。这也算是开源与闭源软件之争吧,最终以java为首的开源软件获胜,得以普及。

后来,开源软件已经是大势所趋,这时候微软.net阵营已经做了许多改变。我最熟悉.net中的c#语言,我就以c#为例说说吧。

微软以前信奉闭环,所有语言都不支持跨平台,也就没有c#;后来java越来越发展壮大,.net感受到了巨大危险,于是就模仿java,.net提出了c#,借以打击java。c#很像java语言,而且和java一样能够跨平台,windows、linx、android、ios都可以编程,这就是微软做的改变。

如果大家用过c#或者vb,c++来编写窗口程序,就会发现,这些语言写出来的windows窗口太棒了,而用java写出来的窗口程序,不敢恭维,太丑了,这也就是我后来学习c#的原因。(这也就是为什么说跨平台只是一个美梦而已)。


跨平台、开源之后的.net,其实跟java的基础结构并不差多少,但不具备数量优势,也就是说:java由于之前用的人太多了,各个方面的创新、发展都比较完善,有着坚实的用户群体、应用基础;而.net,由于是后发,已经失去了太多的应用环境,自然现在许多公司在不考虑是专为windows开发的情况下,是不会太主动使用.net。


岁七夸父


归根到底就是没钱,微软的vs吊打一切野路子开发工具,虽然现在MyEclipse也收费了,但vs比它会几十倍,当然我也不相信有几个人真正为MyEclipse付费了。微软出的vs code免费的也吊打所有前端开发包括webstorm。vs从图形c/s到b/s通杀,.net core编译的exe自带运行环境可以跑API拖网站,不需要装tomcat,iis,apache,nginx,也可以挂在Linux上。高并发都是需要做集群,负载均衡和专门优化的,没有哪个语言可以让程序员不带脑子就可以写出好用的程序。


钱塘百晓生


倒奶的弱点很明显,一开始对开源社区的忽视是对商业化授权的强制导致了现在没有足够多和足够好的开源项目,windows环境下太贵,一般企业用不起,特别是现在对版权要求越来越严格,成都高新区甚至有了特警维权的案例以来,windows环境下价格不友好对开源项目不友好的短板越发严重。而倒奶core出来太晚,虽然能在Linux跑,但是开源项目稀少,没得选,而同平台下的java,PHP,python都是开源组件多如牛毛,互相还有竞争,自然质量数量均有保障,所以选择PHP而避开倒奶是很自然的选择毫不稀奇。


压力很大同志


说了这么多,其实最根本的原因是,在服务器操作系统方面,Linux占据了绝对的统治地位(90%以上)。而. net只能在Windows下运行,不能在Linux下运行(mono是一个开源平台,和微软的.net并不兼容。据我所知,没有哪个商业系统才用了mono),所以怎么会有公司选择. net呢?

那些还在使用. net的公司和系统,基本上都是因历史原因而遗留下来的。如果有一个好的契机,他们也会改用JAVA、php、Python…。


分享到:


相關文章: