其实.net平台没这么糟

2013-05-17 23:33:36 +08:00
 Ricepig
近两年来经常听到说,.net及微软体系开发的网站/程序/应用很难扩展,容易遇到性能问题,低效等等类似的话,也有不少仇视微软平台的。对于C#语言,也因为出身不好,地位可能还不如java吧(就语言本身来说)。极端一点的,觉得用微软平台或开发语言就是坏品味的代表。

但是,我发现许多人对这个问题的看法并不直接来自于自己的经验,而是通过阅读一些文章而得到。对此,我经常表示无奈。在一些日子以前,我看到了老赵(@JefferyZhao)的一些语言比较的文章,非常客观地说明了C#语言的优点。

今天,我无意中阅读了Javaeye站长Robbin的一篇文章:http://robbinfan.com/blog/43/rid-off-dotnet-experience。写的很好,给大家推荐了。

其中,他写道:“简单说来,就是单纯让.net做应用层的编程语言和框架,其他都交给Linux平台的开源解决方案。而.net框架单纯做应用层,无论ASP.net MVC的开发效率,还是.net CLR虚拟机的运行效率都非常好,目前我们单台Windows服务器上跑几百万的动态请求毫无压力,而且应用层架构是可以横向扩展的:如果请求负载非常高,只需要添加更多Windows服务器即可。总之,做到了扬长避短。”

Robin前几年亲自将JavaEye从java改成ror实现,深深体会到ror的优势,现在他能够说.net开发效率和运行效率都很好,是有一定说服力的。

当然,微软平台的开放性一般,而且收费较贵,这个是无法规避的缺点。但是其中一部分也是可以克服的。

最后,还是要再赞一下Visual Studio,我心目中最强的IDE,没有之一。免费阉割版的Express都很良心。这也是我为什么还眷恋windows而没法完全转向osx的重要原因之一。
16472 次点击
所在节点    程序员
149 条回复
vigoss
2013-05-18 13:37:02 +08:00
@keakon 你是怎么测的呢?这个qps也太高了吧?io应该受不了才对。
vigoss
2013-05-18 13:46:54 +08:00
@keakon 看到你博客了,是redis看到数据库我就以为是mysql了
youdu
2013-05-18 13:59:59 +08:00
设计师觉得wpf挺强,就是.Net的程序员少。
xupefei
2013-05-18 14:14:02 +08:00
楼上很多人说 .NET 接触不到底层,限制了开发者的视野。请问说这些话的同学有几位用过 C# 的 unsafe 标识符呢?.NET 可以接触底层,可以直接用 IL 写代码,可以用指针操作非托管内存。如果这还不算底层,那什么才算呢?汇编语言么?
效率方面不用多说,看看 .NET 里字符串相关的函数的源代码就能了解一二(代码里大量使用了指针)。不过如果你拿 C 语言来比的话我也没办法。
还有人说跨平台方面。举个例子,现在很多手机游戏都是拿 C#(Mono) 开发的(例如 MonoGame 框架),一套代码一句话不用改就能跑全平台,敢问其他哪种语言比这更 NB?正在内战的 HTML5?

To 楼上某位同学:不要觉得鄙视一个平台很有优越感,不要觉得自己看到的就是全部。世界比你想象的要大很多。
ipconfiger
2013-05-18 14:26:09 +08:00
@Ricepig

.NET 的原罪,在中国最大的一条任然是盗版,然后就是封闭,大而全,full stack 。所谓的底层,IL,仍然是在微软的圈圈里转,就跟 锡安任然是Matrix的一部分一样,呆在里面的人想当然的以为自由了,其实不过依然是个幻觉。

微软不是一无是处的废物,不然不可能几十年屹立至今,不过那是个不同的圈子,微软需要的是圈养的程序员,用统一配发的工具(VS.NET),去为微软攻城略地。而作为需要呼吸自由空气的自由派来说,是忍受不了这种味道的。有些人呆久了,就产生了奴性,听不得人说不好(比如说某些D员)。

其实JAVA依然是如此,但是JAVA的亲爹没有微软会玩生态圈,空握着如日中天的第一开发语言,却只会去卖服务器,结果嗝屁了。后爹IBM打着靠开源大杀四方的想法,所以投钱给Eclipse,给Apache,大力给Java输血。但是毕竟不是亲生的,而且战略不同,微软靠卖软件,IBM靠卖服务,所以对于开源IBM反而更加的看得开,所以现在Java在开源领域还是很有地位。至于老赵批评Java语言僵化不思进取,那没法的事情了,后爹只想着靠这孩子挣钱,没空去搞科研,而且步子迈太大扯着蛋就不好了,毕竟这么多人靠它吃饭呢。

怎么说呢,如果用.NET,要么在微软的亲妈环境里,windows系统,IIS,那是相当的舒适的,但是呢,外围的很多东西都没有。其实也不能说是什么都没有,而是什么都需要花钱的,biztalk什么的很强大,但是就是死贵。如果在后妈mono下运行,那么也就是后妈的娃了,稳定性且不说,外围环境也是一个问题,很多库也缺乏,要知道如Python一般这么慢的语言还能这么流行,人家库多啊,啥都有,拿来就用,ruby,node.js也是有各自的粉丝为其贡献各种库,且都有各自的在线包管理工具,添加一个库喝水般容易,测试部署都有全套的方案。

从程序员的角度来说,微软系的程序员多是讨论下wpf啊各种微软的玩意儿如何操作啊,写手册。如老赵般拿着语言细节来指点江山的只是少数。
而开源系的程序员可以把满地零件凑吧凑吧弄一东西出来就能各种大会上分享了,还能开个github的reponsitory等着别人来fork,然后那你的东西当零件再凑吧凑吧弄出另外一个东西出来。
换个方式来比喻一下就是,微软系程序员就好比拿着高帅富爹买的电动汽车出来跑一圈给大家看,看,车子可以这么开。而开源系的程序员就是拿着穷爹地乐高积木自己搭了一辆车开出来,给大家看自己是怎么把这台车子搭出来的。相比之下大家会觉得穷小孩的乐高积木车更加有才一点。在各种技术大会上这个区别是如此的明显,同样是分享开发一个网站,开源系的各种炫技,看我72变,各种搭配。而微软系的同学怎么分享呢?恩,IIS,ASP.NET.......没了wpf?no,no,这个小jj微软爹地自己把它割掉了


作为一个开发者,更愿意在工作中体现出自己创造的价值,而开源社区的坏境更容易突出个体开发者的个性,更有利于开发人员自身的成长。而微软需要的攻城略地的士兵,而不是个人英雄主义的牛仔。根本性的出发点上酝酿出了各自生态圈不同的特点。

而好的程序员的共性是奔放的,追求自由和真理的,所以开源才是程序员最终的归宿,哪怕你现在在微软笼子里觉得很舒适,但是当你羽翼丰满的时候,终有一天会打破笼子来到外面的世界,robin为csdn的程序员打开了笼子,而你呢?
xupefei
2013-05-18 14:27:30 +08:00
@breeswish Sliverlight 是 WPF 的子集(可理解为 WPF Lite);Win 8 里 HTML5 只是给一些非程序员提供一条写应用的途径而已。真正的开发还得靠 C++ 和 WPF。

你同学大概是因为 C# 什么都能写太好用了才固执的吧(笑
tuoxie007
2013-05-18 15:11:15 +08:00
.net糟不糟俺不晓得,因为没用过,因为windows就很糟
zicjin
2013-05-18 15:30:07 +08:00
这地方对.NET的偏见、愚昧太夸张了~~~ 看的我触目惊心。

麻烦说要写批处理脚本的去看看powershell,去看看tfs持续集成。

麻烦说要买sql server的去看看entityframework对mysql的支持成熟度。

麻烦说mono支持的库少的童鞋去看可以直接用Mono Migration Analyzer测试一下你手上有什么库是无法迁移的。

麻烦说windwos server死贵的看看你自己手上有上千台机器的项目么?标准版1k美金包含5个授权,抵得上你一个月工资么?麻烦再去看看阿里云部署windows还需要额外授权费么?

还有说什么xcode比vs好的人,我看到了简直天雷滚滚。我两个都用,当然烂的那个用的少。很诚实冷静地说,根本不是一个级别的。这里面的差距从技术到软件工程的架构、理解是全方位的。
zicjin
2013-05-18 15:34:55 +08:00
另外,这都什么年代了,还在提.NET开源的问题?

微软框架做的多做的快的时候,你们说他更新太快不尊重程序员学习成本?完了回过头来又说我们能在开源世界里凑吧凑吧“各种炫技,看我72变,各种搭配”。用老赵的话来说,这双重标准端的真是熟练。
feikaras
2013-05-18 15:42:36 +08:00
@webflier 不理解。你既然说要开阔视野,那么第一件事情是用新环境肯定没错的。没玩过c#就去玩玩。没玩过python就去玩玩不是么?
也许说这话的人是有过。net经验的过来人呢?
当然东西自然有好坏。而很多事情大部分人停留在一个相对心理安全但是实质上是一个很差的平台上的可能性是最大的。不是么?
raptor
2013-05-18 15:57:55 +08:00
其实归根到底一句话:
万一,我是说万一,哪天你发现.net里有个什么东西你很不爽的时候,你除了等微软改以外,还有什么办法?
我害怕这种不确定性,所以在我做了将近十年的Windows平台开发以后,投奔开源世界。
的确,论不爽之处,开源世界比Windows平台多多了,但至少在这里,我可以很明确,这一定有解决办法,不复杂的问题自己改源码,改不了的话,大不了换个东西,选择多得很,而且开源世界换来换去的多了,换东西的解决方案也都是现成的。
.net……好吧……我用过的最后一个.net版本貌似是2.0……已经是很久很久以前的事情了……
raptor
2013-05-18 16:03:11 +08:00
@zicjin 你太激动了。powershell我还真是不希说它。VS是好,可惜它只能在windows下跑。你说windows便宜,那是你机器太少。我用的机器里跑ubuntu桌面的有三台,Mac一台,FreeBSD服务器一台VPS一台,还有两台Linux VPS。全换Windows,加上全套应用软件需要多少钱麻烦算一下……
这不是双重标准,微软换框架,程序员全都得跟着换,开源东西多,你可以自由选择,爱换不换。所以微软必然挨骂。
zhangdawei
2013-05-18 16:26:44 +08:00
我从c#转行c的原因是无可适从,
微软的框架换的太勤(这里会有人说你不用就是了,问题是用不用不是我说了算的啊),既要伺候老板也要伺候微软,太累,
换到c,伺候老板就够了。
Ricepig
2013-05-18 16:55:45 +08:00
@raptor 可以多看看现在的新版本,另外再看看nuget中的各种开源库,很多.net里不太爽的地方,都有人做出开源的方案了,NPOI,NHibernate,这些都是。

微软并没有封死开源,或者说自己做底层的可能,但是往往微软官方的相关产品足够好了,而大家拼拼凑凑的东西已经不如官方了,所以。。。。
mayokaze
2013-05-18 16:55:58 +08:00
Mono game? 哈哈哈哈让我笑5分钟。这玩意也许写写2d小游戏还行,3d的?醒醒吧,不是所有游戏都是hello world 。还有刚刚学完xna就听到xna被微软砍掉的消息我没有一丝惊讶与不满,嗯ˊ_>ˋ
zhouquanbest
2013-05-18 16:56:28 +08:00
学生党表示用过全系列.NET盗版
Eclipse、IDEA确实不如VS 现在还在照顾“程序员用户体验”的估计就只有Microsoft了吧
那个速度和动画效果实在是太棒了 WPF写GUI也很爽

不过.NET也主要用于Windows开发(坑爹的HUST什么东西都要求交Windows GUI版本)
Server还是Linux舒服 Windows配起来太难受 没Shell就发慌

就C#来说 个人感觉是最优雅的静态语言 .NET的库确实强大 不过开源的好东西就没JAVA多了

争论哪个平台好也没啥异议 各有所需 我反正是各大平台都用 个人感觉受益匪浅
ayang23
2013-05-18 16:56:31 +08:00
有一次帮人弄了一下windows服务器下的php网站配置,差点没累死,我的天,远程桌面,用鼠标一下一下的点,用记事本编辑配置文件,我真不知道搞微软服务器运维的人是如何忍受的。我需要的是shell,vim。所以,后来再找我坚决不给弄了。
Ricepig
2013-05-18 16:58:33 +08:00
@raptor vs觉得贵可以vs express,微软新框架出来,并不意味着老框架就被禁止了,这也是爱换不换。不是说WPF出来了,winform就不让你用了。反而微软的某些向下兼容性是比较好的。看看xcode,看看ruby,版本升级以后,对已有的程序要怎么折腾就不说了。。。

所以说你是双重标准。
Ricepig
2013-05-18 17:00:13 +08:00
@ayang23 开ssh上去装emacs,然后用emacs自己的shell,哈哈
swulling
2013-05-18 17:02:33 +08:00
很好奇如何管理>100台的windows server

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69250

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX