我目前正在使用单声道在 C# 中开发桌面应用程序,并在 SuSE 和 Windows 中进行测试。这个概念并不重要,但它是一个“web lint”程序,它将扫描网站并返回可能存在的安全问题和/或跨浏览器兼容性问题。但是,我希望能够为多个平台提供二进制文件。我应该继续使用 Mono,还是有其他平台可以让我更好地使用平台,例如 Mac、Windows、Linux 和其他平台(可能是移动平台),并且更容易移植?
7 回答
好吧,您最好的选择始终是使用所有平台上实际存在的语言。我认为,这通常意味着 Java,尽管 perl 也有适用于移动平台的风格(取决于所讨论的移动平台)。
我的大部分跨平台工作都是在 C 和 perl 中完成的,但是 C 有一些令人头疼的问题(很多 #ifdef's),而且 perl 可能不在你关心的移动平台上(还)。您必须评估您想要定位的所有平台通用的语言/编译器/解释器,然后从该列表中进行选择。在不知道此类平台的完整列表的情况下,我们将很难告诉您使用什么,尽管 Java 有足够的流行语,可能是一个强有力的候选者。
如果您了解 C++,Qt将涵盖许多平台。
对于大多数桌面环境,C# 和 Mono 可能已经足够跨平台了。诀窍将是“移动平台”要求。
移动操作系统种类繁多,没有太多可以概括的方法。有些有Java,比如黑莓。C# 可能会让您进入基于 Windows Mobile 的平台。iPhone做自己的事情。你几乎必须选择一个平台并瞄准它。这可能最终会告知您的桌面平台选择。
只要坚持使用 Mono,确保您有宪兵代码检查器(FxCop for Mono)检查您的代码是否存在可移植性问题,您应该没问题。
Java 将在 Windows、Linux 和 Mac 上运行。应该很容易从 C# 转换 - 使用 Apache HTTPClient 来抓取您正在扫描的 Web 内容,并且扫描代码应该或多或少相同。然而,缺点是要求用户安装 Java 运行时。
Python 是另一种选择 - 您可以为 Windows 构建独立的可执行文件,默认情况下它附带大多数 Linux 发行版,还有 Mac OS X(需要引用;))。这对 Windows 用户来说少了很多麻烦(语言被编译成可执行文件,不需要其他下载)。
如果单声道在 Mac OS X 上运行,那么这肯定也是一个很好的平台吗?
这真的取决于你想做什么。对于 Web 开发,如果 HTML/JavaScript 就足够了,那就坚持下去。如果您需要更高级的东西,我会使用带有 Mono 的 ASP.NET(您可能会这样做),因为您已经知道了。(您可以在此处使用 Visual Studio。)
另一种选择可能是(因为您是 C# 开发人员)使用 Silverlight。这为您提供了 Windows 和 Mac 平台,希望Moonlight稍后会覆盖 Linxu 平台。(您可以在此处使用 Visual Studio 和 Expression Blend。)
如果您需要桌面应用程序,那么 Java 可能是最简单的,因为您已经了解 C#。但是,如果您了解 C/C++,请尝试以wxWidgets为例。
为什么要限制自己使用传统的 C#/Java?看看 Adobe AIR 和 Microsoft SilverLight