Windows上的Mono有什么意义?
这可能是一个愚蠢的问题......但我只是在研究Mono项目,他们有一个关于在Windows上安装Mono的部分。 但是,由于Windows显然已经有了.NET运行时,任何人都可以告诉我Mono for Windows的意义何在? 它对跨平台开发有帮助吗?
由于Mono不像MS.Net Framework那样实现.Net 100%,所以你可以在Mono上进行测试,而无需在Linux上运行。 Mono也有绑定来使用MS不支持的GTK格式。
Mono有一些.NET没有的功能。
单声道是高度模块化的。 您可以将它拆分成小块,只准确部署所需的部分。 不想要System.Xml? 好吧,它消失了。
单声道是可嵌入的。 您可以将其托管在C / C ++应用程序中,以允许用户从安全的托管沙箱环境编写脚本。 这方面最着名的例子就是mod_mono,它承载着Apache网络服务器中的Mono,例如,在Mono中如何实现ASP.NET。 这个功能与上面提到的模块化一起很好。
这已经被提到:静态链接。 与模块化一起也很好。
编译器即服务是另一个。 Anders Hejlsberg长期以来一直在谈论它,也许,也许它已经准备好了C#5.0。 那么,Mono已经拥有了它,并且已经有好几年了。
Mono的首席开发人员Miguel de Icaza也有一个倡议,他称之为“Embrace and Extend.NET”,它以其他CLI实现(包括.NET)不可能实现的方式扩展CLI。 到目前为止,Embrace和Extend.NET有三个特性。
Mono.Simd,它可以安全和受控地访问底层CPU的SIMD指令(例如Intel上的SSE或PowerPC上的AltiVec)。 用于游戏和图形。
64位数组索引,这是ECMA规范允许的,但Mono是唯一实际提供它们的VM。 用于超级计算。
最近的一些延续。 这实际上是Mono首次超出规范范围:长数组索引完全符合规范,Mono.Simd也适用于每个CLI兼容实现(虽然非常慢),但Mono.Tasklet需要特殊支持来自不属于CLI或.NET的虚拟机。 这用于游戏逻辑,例如在Second Life中。
Mono does some things the .Net doesn't.
例如,mono支持静态链接,因此您可以构建,编译和分发应用程序,而无需单独的运行时安装程序。 如果您构建的应用程序依赖于单声道来跨平台,则有一些差异,因此在Windows上使用mono可以更好地保证兼容性。
.Net does some things that mono doesn't.
BCL中还有一些地方尚未移植到单声道。 如果你想要一个应用程序,也可以在Mac / Linux上工作,那么即使你在Windows上进行工作,也可能需要先开发单声道。
上一篇: What's the point of Mono on Windows
下一篇: Executing .Net Application using Mono on CentOS or Linux