想要:在MacOS和Linux上使用C#(mono)的用户体验
我有一个朋友,他是一个严肃的
Linux开发人员,但现在他正在Windows上使用C#并且非常喜欢它.我被C#所吸引,因为像Java一样,我应该可以在一个系统上编译并在任何地方运行.
如果您使用C#在Windows上进行开发,那么您使用的是dot-Net.在Linux和MacOS上,您使用的是Mono. 其他人发布Mono非常好,不再是科学项目,并且大多数核心Microsoft功能都存在.但这并不能解决我的问题.我在想: > Linux / MacOS上的Mono性能如何与Java相比?如果我想在具有相同目标代码的所有三个平台上快速运行,那么我最好的选择是什么? 谢谢 解决方法
我已经在Linux上使用Mono大约三年了,最近一直在OS X上使用它.一些Linux的东西非常广泛,但OS X的东西到目前为止只是一些简单的ASP.NET MVC2应用程序.
1)Mono的表现对我来说从来都不是问题.这并不是说性能不重要,只是Mono本身的性能从未成为问题.我所做的很多都是基于网络的,因此I / O和数据库内存的使用在Mono之前就已经让我感到震惊. 从历史上看,Mono最大的缺点就是垃圾收集器(GC).我想说Java在这方面有更好的调整. Mono的最新版本在这方面取得了巨大进步,但在比较方面我没有任何硬数据. 我确信Mono有时会更快和Java有时但我会说Java总体上更快. 2)您当然可以使用makefile进行Mono开发.当然Mono团队本身也是如此.你当然可以使用Emacs,有一个C# mode for it. 我倾向于自己使用MonoDevelop和xbuild(monbu版本的msbuild),并且没有任何在Emacs中进行C#工作的经验. MonoDevelop很棒,因为它在所有平台上完全相同.此外,虽然我很少再使用它,但项目格式与Visual Studio和SharpDevelop相同是很好的. 3)MonoDevelop具有相当不错的代码分解支持.在Windows,Linux和Mac上也是如此.您不需要使用Windows进行开发(尽管您当然可以)但我相信您会更喜欢使用像MonoDevelop这样的IDE.一旦你习惯了,就像智能??感知这样的东西变得难以生存.但是,集成调试,能够深入到框架,数据库集成,单元??测试,SCM集成以及其他一流的工具支持只是一种方法(至少对我而言). 4)Mono本身并不关心版本控制.您的源文件只是文本,您可以使用任何东西来管理它们. 也就是说,MonoDevelop在IDE中内置了极好的Subversion支持.我已经广泛使用它,这也是我在Windows上移动MonoDevelop时遇到麻烦的原因之一.最新版本的MonoDevelop(2.6 beta)也包括Git支持. 您没有提到单元测试,但MonoDevelop还在IDE中内置了NUnit支持.我也在每个项目上使用它,它的工作非常出色. MonoDevelop中的版本是2.4.8(如果内存服务),所以它不是很新,但效果很好. 简而言之,Mono在开源工具方面非常适用.它一直很适合我. Autoconf当然是由Mono项目本身使用的,但作为Mono开发人员,我从未见过需要它.我努力只在我的项目中使用托管代码.因此,我在目标平台上所需要的只是Mono(或.NET).不必担心所有这些问题是Mono或Java等托管环境的主要优点之一.运行时本身(CLR)确保我的应用程序具有正常运行所需的一切. 我知道MonoDevelop将为C/C++项目(非Mono)构建autoconf / autorun文件,但我自己并没有做太多. 至于之前的评论,Mono JIT显然已经调整到了目标平台.这是平台特定性能调整发生的地方. 正如评论一样,我发现Mono最好被视为一个开发环境,而不是微软的兼容层. Mono团队以许多有趣的方式扩展了.NET.您为Mono开发的任何内容都将在.NET上运行,但有一些.NET功能不适用于Mono.例如,Mono不支持Windows Presentation Foundation(WPF).您必须使用Windows窗体或GTK#进行跨平台GUI工作.您还可以在Mac上使用Cocoa#或MonoMac,在iPhone上使用MonoTouch或在Android上使用MonoDroid.你可以使用Moonlight而不是Silverlight,虽然我没有玩过很多. 自从你问起Java以来??还有一件事.我发现Java世界有几次库在.NET世界中找不到相应的库.在这些情况下,我有幸使用IKVM.NET将其集成到我的Mono应用程序中. IKVM.NET也适用于.NET,但Mono和IKVM.NET非常舒适,甚至可以共享一些代码. 所以,你去,至少一个真正的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |