2008-09-29 112 views
3

我目前正在用C#开发一个桌面应用程序,在SuSE和Windows中使用mono和测试。这个概念并没有多大意义,但它是一个“Web lint”程序,它将扫描一个网站并返回安全性和/或跨浏览器兼容性的可能问题。不过,我希望能够为多个平台提供二进制文件。我应该和Mono呆在一起,还是有另一个平台可以提供更好的平台可用性,例如在Mac,Windows,Linux和其他平台(可能是移动平台)上,并且使其更容易移植?多平台开发

回答

2

对于大多数桌面环境来说,C#和Mono可能是跨平台的。诀窍将是“移动平台”的要求。

移动操作系统是多种多样的,并且你可以做很多事情来推广。有些人拥有Java,就像黑莓手机一样。 C#可能会让你进入基于Windows Mobile的平台。 iPhone会做自己的事情。你几乎不得不选择一个平台并将其作为目标。这可能最终会通知您的桌面平台选择。

1

Java将在Windows,Linux和Mac上运行。应该很容易从C#转换 - 使用Apache HTTPClient抓取正在扫描的Web内容,并且扫描代码应该差不多一样。但缺点是要求用户安装Java运行时。

Python是另一种选择 - 您可以为Windows构建独立的可执行文件,默认情况下,它随大多数Linux发行版一起提供,还提供Mac OS X(需要引用)。这对于Windows用户来说很少麻烦(语言被编译到可执行文件中,不需要其他下载)。

如果mono在Mac OS X上运行,那么肯定这是一个很好的平台?

3

那么,你最好的选择总是使用一种实际存在于所有平台上的语言。我认为这通常意味着Java,但即使perl也适用于移动平台(取决于所讨论的移动平台)。我在C和Perl中完成了大部分的跨平台工作,但是有一些令人头疼的问题(很多#ifdef),而且perl可能不在你关心的移动平台上(但是)。您必须评估所有想要定位的平台所共有的语言/编译器/解释器,然后从该列表中进行选择。在不了解这些平台的完整列表的情况下,我们很难告诉你要使用什么,尽管Java有足够的热门词汇可能成为强有力的候选者。

0

这真的取决于你想要做什么。对于Web开发,如果HTML/JavaScript足够,那就坚持下去。如果你需要更高级的东西,我会使用ASP.NET和Mono(你可能做了什么),因为你已经知道了。 (您可以在这里使用Visual Studio。)

另一种选择可能是(因为您是C#开发人员)使用Silverlight。这会让你覆盖Windows和Mac平台,并希望Moonlight稍后将涵盖Linxu平台。 (您可以在这里使用Visual Studio和Expression Blend。)

如果您需要桌面应用程序,那么Java可能是最简单的,因为您已经知道C#。但是,如果您知道C/C++,请尝试以wxWidgets为例。

3

如果你知道C++,Qt将覆盖很多平台。

2

只要坚持单声道,确保你有宪兵代码检查员(FxCop for Mono)检查你的代码的可移植性问题,你应该没问题。

0

为什么限制自己到传统的C#/ Java?看看Adobe AIR和Microsoft SilverLight