7

我们想为应该在尽可能多的平台上提供的在线服务编写一个客户端。这个问题是关于我们应该使用什么编程语言和框架来创建这个客户端。这些平台是必需的:Linux、Mac、Windows、iOS(iPhone、iPod、iPad)和 Android。越多越好。

对于移动平台,有Titanium Mobile。我还没有尝试过这个东西,网站说你可以使用 Javascript 等网络技能为 iOS 和 Android 开发。我还不知道您是否可以使用相同的代码为这两个平台部署。那会很好!

还有 Titanium Desktop,但我不喜欢与最终应用程序共享完整源代码的想法。Titanium 也为移动设备执行此操作,但修改通过 App Store 加载的应用程序并不容易。

那么,还有什么其他方法可以创建一个至少可以在三个主要桌面平台上运行的应用程序呢?我认为带有单声道的 c# 将是可行的方法,但我刚刚意识到您需要将单声道与 MonoMac 一起使用才能在 Mac App Store 上发布它并使用诸如 Growl 之类的东西。而且由于 MonoMac 自然只适用于 Mac,因此如果不至少为 Mac 重写它,就不可能在所有平台上部署单声道应用程序。如果该应用程序在所有平台上看起来都是“原生”的,那就太好了。Gtk# 在 Mac 上看起来不太好。它在 Windows 上“没问题”,在 Linux 上很好。

我知道我们可以在 iOS 和 Mac 上使用 Objective-C,在 Android 上使用 Java,在 Windows 上使用 C#.net,在 Linux 上使用 C#.mono,但重点是我们不想用很多不同的语言编写同一个应用程序. 这将使开发和维护变得非常困难。

我们更喜欢具有 C 风格语法的语言,这对我们 PHP Web 开发人员来说更容易学习。顺便说一句:我们不喜欢 Air,我不确定 Java,因为我从未使用过它,但它看起来也不“原生”,而且感觉有点慢。

编辑:

请注意:如果至少其余代码相同,则为每个平台创建自己的表单不会有问题。是否可以在同一个 C# 应用程序中使用 MonoMac、Gtk# 和 Win 论坛?而且我更喜欢 C# 而不是 C++,因为我没有 C++ 技能,所以我首先需要检查使用 Qt 编写的难度。

另一个注意事项:我们不打算花太多钱,因为我们需要支付 Apple 的开发人员计划,所以我们想使用免费或廉价的技术。首选开源。

4

7 回答 7

10

只需对以上所有内容使用 C#。

mono 项目将涵盖 Mac 和 Linux,monodroid涵盖了您的 android 需求,monotouch将负责 iPod/iPad/iPhone。

关于 UI - mono 完全支持 System.Windows.Forms 命名空间,因此如果您不想使用 GTK#,则不必使用。

我认为我不需要提及 Windows 支持 ;)

于 2011-03-15T21:40:46.940 回答
8

如果你真的想从一个应用程序支持所有这些平台,你最好的选择是创建一个 Web 应用程序。使用 HTML5,这样的应用程序甚至可以缓存在设备上,并在没有可用连接时使用。此外,该策略将使基于运行应用程序的设备自定义 UI 成为可能。

如果您着手构建一个在 Android 和 iOS 上运行的本地应用程序,您将不会有好运气,更不用说您提到的所有其他平台了。它们是不同平台而不是相同平台的原因是它们是不同的。它们具有不同的功能,在不同的硬件上运行,使用不同的语言构建,采用具有不同用户界面的不同应用程序模型,并且具有不同期望的受众。

于 2011-03-15T21:43:42.870 回答
5

多年来我遇到的最佳解决方案是Qt SDK。对所有主要平台的大力支持,Symbian、OS X、Linux 风格、Windows、Windows CE(移动)、Android 和 iOS 部分支持等。

它的基础是 C++,但几乎所有语言(如 C#)的绑定都是可用的。还涵盖了许多帮助和支持。

核心 Qt 库非常快速和广泛,整个 KDE 桌面(Linux)都是用它完成的。VLC 和 VirtualBox 等著名软件都是在 Qt 中完成的。

于 2011-03-15T21:44:28.530 回答
3

另一种相对较新的跨平台开发方法是使用开源Eto.Forms,它允许您拥有一个针对每个平台的本机工具包的 UI 代码库。它是一个 UI 抽象层,可以针对 GTK#、MonoMac/OSX、WinForms 和 WPF。

还有一个 iOS 端口正在开发中。

于 2012-01-21T19:32:43.373 回答
2

Java 听起来是最合适的。它是跨平台的,易于理解,拥有庞大的用户群,android 就是基于它。

于 2011-03-15T21:38:46.800 回答
1

根据您是否需要离线交互模式,听起来您应该开发一个 Web 应用程序。您可以开发移动版和桌面版,从而支持上述所有平台。查看 youtube 的 Iphone 应用程序,它保留了与 iphone 应用程序相同的功能,但纯粹是 html。此外,支持 html5 的浏览器也可以离线运行。

于 2011-03-15T21:52:05.753 回答
0

听起来很疯狂,看看Flash/Flex——它是跨平台的,一次编码,到处运行,现在可以在 Android 和 iOS 上编译为本机代码,并且 10.1 播放器正在全面发货。我必须准确地解决这个问题,当 Flash Builder Burrito 在使用它一段时间后迎合移动设备时,我已经从 C#/Flash 混合切换到仅用于客户端的 Flash。(我们的后端是 C#/Node/C++ 等)。

根据您的时间表和需求,这是需要调查的。

一些随机链接可供阅读:

关于单应用多设备性能和视频的博客文章

开发 Flash 和 flex 应用程序

于 2011-04-01T08:38:45.993 回答