好的,这是一个险地,但试图理解为什么在跨平台开发中选择.NET(或等效的Mono),如果没有使用过两者,是很困难的。
对于可能已经使用过两者的程序员来说,会想念或需要哪些功能?相反,一个使用其中一种工具包的用户会发现另一种工具包缺少哪些范例或其他方面的东西?有很多值得说的话,但使用过两者的人的评论将是有价值的。
以下是一些相关问题:
编辑:如果Windows是目标平台之一,那么仅使用Mono是否是可行的选择?
好的,这是一个险地,但试图理解为什么在跨平台开发中选择.NET(或等效的Mono),如果没有使用过两者,是很困难的。
对于可能已经使用过两者的程序员来说,会想念或需要哪些功能?相反,一个使用其中一种工具包的用户会发现另一种工具包缺少哪些范例或其他方面的东西?有很多值得说的话,但使用过两者的人的评论将是有价值的。
以下是一些相关问题:
编辑:如果Windows是目标平台之一,那么仅使用Mono是否是可行的选择?
对于跨平台(和独特的平台)开发,我会选择Qt,因为它比Mono和Windows.Forms更简洁,并且采用MVC模式,使整个应用程序更易于扩展和修改。
这里有另一个选项,你没有提到,我也没有注意到在这里提到,但Lazarus是跨平台的,并且随着它的发展越来越成熟。当然,像用Qt编写的东西一样,您需要为特定的平台编译它。在我的情况下,我已经成功地在Mac OSX、Linux和Windows上运行了Lazarus项目。Lazarus是一个很好的RAD工具,Object Pascal对我写的大多数东西都很有效。Lazarus是应用程序速度的一个不错的选择。它与用c/c++编写的软件相比较得很好。我不打算证明这一点,因为有案例研究,如果你有需要,你可以自己进行测试。
我使用MonoDevelop编写c#代码的印象是,在库方面,特别是html和音频方面有些挑战。我只是玩了几个月的c#/MonoDevelop,所以我还很新手。我猜想,由于它是托管代码,所以可能要付出一些速度代价。同样,我认为研究表明,仅编译的代码往往比c#/.NET代码更具有速度优势。
当然,另一个选择就是Java。我在那方面的经验不多,但它肯定是无处不在的,并且运行良好。但我希望Java代码比编译后的代码(如c/c ++ / Pascal)要慢。
另一个我想到的选择是具有三个主要平台的编译器的Eiffel。虽然我现在没有用它做太多的事情,但我喜欢玩它。你的经验可能会有所不同。
.NET 不适用于跨平台。编写代码并使其在 MONO 和 .NET 上有效运行非常痛苦。个人选择 .NET 而不是 TCL/Tk、Qt 或 Java Swing 的原因是因为它具有快速应用程序开发功能。
使用其他框架几乎不可能进行快速应用程序开发。简单情况下可以进行快速应用程序开发,但您上次编写的基于业务的应用程序是否只有简单用例呢?
通常难以使用 GUI 工具包,因为您需要了解基础知识。这些基础知识包括数据绑定、剪辑、刷新、布局管理器和事件处理。所有这些概念对于普通开发人员来说都很困难。原因是现代工具包中的大部分内容都被抽象化了。例如,使用 Java Swing 时,我不需要了解任何关于剪辑或刷新的知识,因为它们会自动“神奇”地完成。但是,如果某些情况下无法自动刷新,那么这种情况就会变得几乎无法解决。代码也会变得更加复杂。
许多 UI 开发人员通常使用 .NET,因为扩展它非常简单。创建扩展控件的扩展方法非常容易。使用 .NET 实体框架创建绑定数据的方法甚至变得更加简单。但是,使用这种 RAD 工具需要付出代价,即它不是平台无关的。