题
如果您要编写一个在本地运行并调用 Web 服务的 GUI 应用程序,以实现跨平台,您可以使用 .Net 来完成吗?您会推荐哪些工具?
我正在考虑 Java,因为它与 C# 相似,相对容易上手,然后我就可以使用 JVM。
其他提示
跨平台 .NET 开发的另一个相对较新的选项是使用开源 Eto.Forms Framework,它允许您拥有一个针对每个平台的本机工具包的 UI 代码库。
对于 Windows,它使用 WinForms 或 WPF,对于 Linux,它使用 GTK#,对于 OS X,它使用 MonoMac/Cocoa。
还有移动端口(iOS/Android)正在开发中。
您最好使用一些跨平台工具包来编写它。您很可能无法使用优秀的视觉设计器(实际上这取决于您选择的工具包),但是手动编写 UI 并不是那么困难。HTML 人员一直在这样做,这在非 MS 世界中也是很常见的做法。
一些具有 .NET 绑定的跨平台 UI 工具包
- GTK# (Mono 开发的事实上的标准, MonoDevelop IDE 有正在使用此工具包的内置表单设计器)
- 网络网 (基于wxWindows,相当成熟,但你必须手动构建你的UI)
- 乔托 (基于QT,它可能比wxWindows更好,但如果您的应用程序没有开源许可证,您可能需要Trolltech的商业许可证)
一个建议。跨平台编程就像跨浏览器编程一样,唯一要做的一件事就是在您想要支持的所有平台上进行测试、测试和测试。
我最近在 Linux 上编写了一个小型 C# GUI 应用程序,使用 mono 编译和运行。我发现我必须使用“gmcs”编译器才能访问现代 C# 和 .Net 功能(mono 1.9 附带了几个不同的编译器)。
在编译 .exe 文件时,我发现必须添加“-target:winexe”开关才能使应用程序在 Windows 上运行,而不会在应用程序后面弹出命令行。
我还没有找到如何编译一个 .Net 应用程序,该应用程序在 Windows 上可以从网络驱动器运行,而不需要在 PC 上进行特殊的 .Net 安全配置。(我认为这是 .Net 应用程序的一个普遍问题,但我仍在学习中。)
老实说,我会评估您的客户群和您现有的技能。如果 Windows 与非 Windows 的比例为 50/50,甚至 70/30,那么使用 Java 或其他跨平台工具包可能会更好。
Mono 是一个不错的平台(参见 这个问题大约一周前问过),但如果您正在做任何重要的事情,我会使用专门为其设计的工具包。
顺便说一句,如果你想看看 .NET GUI 应用程序在 Mono 上是什么样子,这里有一篇我在 Mono 上运行 NUnit GUI 时所做的文章:
http://www.cornetdesign.com/2006/07/nunit-gui-running-green-on-monolinux.html