为什么要使用Mono?

时间:2009-02-22 00:06:30

标签: java .net linux mono

使用Mono over Java(或任何其他“免费”或Linux友好语言/运行时)的主要好处是什么?

Mono将始终落后于.NET框架的最新发展,你为什么要使用Mono而不是其他传统的开源语言/框架(Java)呢?

编辑: 就像下面提到的人一样,我想根本问题是,你为什么要在Linux平台上使用.NET?

13 个答案:

答案 0 :(得分:62)

答案非常明显:因为你想在Linux上使用.Net。

这当然引出了一个问题(我认为这就是你所得到的):你为什么要在Linux上使用.Net(通过Java)?

很多原因:

  • 您的服务器与WPF或Winforms应用程序之间的通用代码;
  • 使用特定的.Net语言,如F#;
  • 不在Java中的语言功能(闭包,运算符重载,部分类,运行时泛型,索引器,委托,LINQ,var类型等等);
  • 您的技能或团队成员已经使用C#;

答案 1 :(得分:11)

就个人而言,我更信任Linux平台作为服务器,但希望使用C#作为程序语言。

答案 2 :(得分:8)

你想在未来的某些时候在iPhone,Wii和Android上使用C#。看到这个链接。 http://arstechnica.com/open-source/news/2009/01/open-source-mono-framework-brings-c-to-iphone-and-wii.ars

答案 3 :(得分:7)

有些人比C#更喜欢C#。另外,考虑到C#是ISO标准语言而Java不是。也许你想在Linux服务器上运行ASP.NET代码?真的有很多原因。

答案 4 :(得分:4)

我认为这取决于个人偏好。我对c#很满意,我想开发可以在我的Ubuntu笔记本电脑或Vista笔记本电脑上运行的应用程序。因此,我使用mono。如果我对Java更熟悉,那么这可能就是我使用的。

只需2美分。

答案 5 :(得分:2)

我曾在一家公司工作,其主要产品是用ASP.NET编写的。他们意识到,如果他们能够在Linux服务器上运行他们的产品,他们可能会增加他们的市场份额。如果不是Mono,这当然会很困难。我被赋予了花一些时间查看他们的代码在Mono下运行多少(如果有的话)的任务。这可能是大约2年前 - 大部分都是编译过来的,但当时Mono对仿制药的支持还有点不尽如人意。我认为它从那时起已经成熟,但有些代码甚至都不会解析。代码还使用p / invoke来调用本机代码,这样也使得事情变得有趣。不过,尝试让它运行肯定很有趣。

答案 6 :(得分:2)

由于Microsoft在制作之前提交了对C#ISO标准的更改,理论上Mono并不需要跟踪.NET。实际上,大老的MS预算首先进入终点。

答案 7 :(得分:2)

正如大家所说,“在Linux上运行C#”或“跨平台运行”或其他什么。

我之所以对单声道感兴趣 - 而且我还没有被说服接触它 - 是否有可能利用.Net提供的所有Java所没有的东西。基本上你的问题确实归结为Java与.Net的比较,而且我不会开始在它们之间进行百万分之间的比较(在Google中你会发现J2EE与ASP.NET的比较,这是一部分,Java与C#,这是另一部分。

但.Net和Java之间的最大区别是什么?它与.Net(微软和Novell试图将其转换为其他平台)或Java的多供应商方法背后的单一力量有关。只是选择App Server的过程可能足以让某些人选择Mono。

像微软这样的大型单片厂商给你的Java似乎没有什么:

  1. 集中文档(“非常好的文档,全部在一个地方”但有几个人告诉我我错了)
  2. 无需进行单独的平台选择(例如,ASP.NET或ASP.NET,而不是servlet + JSP + JSTL?+ Axis)
  3. 我遗忘的其他东西
  4. 然后还有其他巨大差异:Java是单一语言,而Mono(我认为)可以运行各种语言的CLR编译代码。

答案 8 :(得分:2)

Mono在一些事情方面落后,但在其他方面领先一步。例如,Mono支持SSE并且提前完成编译 - 内置。另一方面......它将需要Mono来实现即将发布的.net版本中所有即将发布的新内容......例子......相当广泛的并行库。

答案 9 :(得分:1)

用一个词?跨平台的

答案 10 :(得分:1)

使用Mono的任何人都面临微软的软件专利危险。

这就是为什么不应该只为新应用程序避免使用Mono,而是首先考虑C#。

迁移到Mono只有在你已经坚持使用Windows并希望逃脱时才有意义。

Why free software shouldn't depend on Mono or C#

答案 11 :(得分:0)

为什么没有人提到Linux是免费的?

答案 12 :(得分:0)

我实际上使用mono作为交叉编译器。我在现有的java / ant构建文件中添加了一些“exec”行来调用mono作为编译器,因此有一个完整的命令行构建过程。

我必须在我们的java-on-linux代码库必须使用的一些PC代码周围写一个C#包装层,但我不能让自己要求启动Visual Studio(在单独的计算机上)来做签出和构建过程。