Linux上的Mono与Windows上的.NET相比,哪个更可靠?

14

我正在考虑在基于Linux的网站中使用Mono与C#或Python(Django)。我对C#的担忧是Mono可能没有.NET稳定可靠。有人有相关经验吗?


4
你是如何衡量可靠性的? - i_am_jorf
我从未遇到在Mono上出现的问题,在.NET上也不会遇到,现在Mono和.NET之间的速度差异已经不再显著。 - Callum Rogers
Mono最严重的问题是GC。如果您的网站流量很高,您可能需要定期重新启动mod_mono。我们希望在2.6或2.8版本中大部分问题都能得到解决。Java或基于JVM的语言更适合Linux环境。 - sirmak
5个回答

13

我使用Linux上的Mono/C#开发各种项目- 所有项目都在Windows机器上编译。

我做过服务、网站、控制台应用,无所不能。除非你做一些真正极端的事情,否则应该没有任何问题。

我还运行使用Lighttpd + FastCGI + Mono的网站,没有任何问题。我喜欢它。


一个使用Linux-Mono编译的项目是否比Windows更快?速度有多快? - Babak

4

考虑到开发资源和用户基数的大小,我认为在Windows上,Mono的可靠性肯定比.NET低。具体差距有多大是个无法确定的问题。

Miguel de Icaza的这篇博客文章展示了使用Mono时可能会遇到的问题。

但是我无法对Mono和Python进行比较。


4
仅供读者参考:目前sgen垃圾回收机制非常稳定,因此在链接的博客文章中提出的问题已不再相关。 - cdhowie

2
这取决于你正在做什么。如果你正在创建一个非企业网站,那么使用Ether应该是可以的。我听说过Mono很好用。使用Mono的问题在于它不断追赶微软,并且必须支持多个平台,而微软则不需要。我已经用Mono编写了桌面应用程序,但我从未在网站相关方面使用过它。对于C#和Windows平台,你最好使用微软的实现。我的建议是使用Python。
我无法对Django的支持性、可靠性等进行评估,但Python已经存在一段时间了,并且在Linux/Unix上表现良好。

2
个人而言,如果你的目标是Linux,我会建议你不要使用C#(Mono)。
  • 任何平台问题都可能导致你的开发社区非常小;虽然有很多C#开发人员,但使用Mono的人数相对较少1
  • 根据我的经验,即使是在Linux上找到最新版本的Mono也存在很多问题,除非你运行SUSE2
  • 尽管Mono可能拥有你想要的功能和可靠性(我不能评论,因为我仍在使用1.x!),但如果你预计会有大量使用,你也需要考虑速度。
  • 如果你计划部署到更多机器上(特别是如果你无法克隆它们),这些问题将更加严重;如果只是一个服务器,它们的影响会稍微小一些3
  • 有些人担心Mono技术可能面临诉讼威胁,以及如果出现这种情况,最终用户(你和你的用户)可能会遭受什么样的影响。从我所了解的情况来看,我并不过分担心,但我不是律师。

祝你好运。

  1. 我可能错了;我没有查看Mono的下载量,尽管那将是上限。
  2. Ubuntu Karmic(9.10)有Mono 2.4,但后悔从Jaunty(9.04)升级,因为它有1.9。
  3. 从源代码构建可能会很费力。还有其他来源可以获取Mono 2.X二进制文件,但它们不容易找到。

2
关于Mono的合法性 - 完全没有什么可担心的。微软已经针对该技术发布了“社区承诺许可证”,并正在积极与Novell合作开发Mono和公共语言运行时。http://en.wikipedia.org/wiki/Microsoft_Open_Specification_Promise - “微软在2006年9月发布的不可撤销承诺,承诺不会对包含在技术列表中的某些微软专利的实现主张法律权利。” - Callum Rogers
2
抱歉,对于ASP.NET或ADO.NET没有任何承诺。一个平台不能依赖于承诺。 - sirmak
2
我预测,某个富有的公司很快就会雇佣Miguel离开Mono,然后Mono就会慢慢消亡。(我知道他不是唯一的开发者,但他似乎是它的核心 - NVRAM
6
你的预测就到此为止了 ;) - Igor Brejc

1
这可能是纯粹的猜测,但这是我的经验。我使用ubuntu,而mono(以及monodevelop)的版本比当前版本落后2年。你可以编译更新的版本,但那会很痛苦。我在三个兴趣项目中使用了它,这是我的结论:与微软实现相比,它存在漏洞、内存泄漏和速度较慢。好吧,大多数时候它会工作,但如果你压力测试你的软件,你会发现问题。我希望我像C#一样擅长C++,这样我就可以在linux上使用它。所有内容都适用于v. 2.10及以下版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接