2011-03-23 60 views
10

有没有制定一个跨平台的移动应用程序一个理智的方法是什么?我们希望这些在每个平台上都是原生应用,而不一定是某种网页。移动应用 - 瞄准iPhone,WP7,Android和黑莓

目前,我们正在考虑将它分为两​​种语言:

  • C#后端(业务逻辑)
  • - 为WP7
  • >标准C#应用程序
  • - >应用程序建立在MonoTouch的为iPhone/iPad上的/ etc。
  • Java后端(业务逻辑)
  • - > Android标准的Java应用程序
  • (的C#没有准备好 尚未MonoDroid的版本) - >标准黑莓Java应用程序

我们也可以开始开发在C#中,并使用其中一种转换工具将我们的C#转换为Java作为起点。

难道还有其他的方法吗?我们的技能主要包括强大的C#.Net背景和较小的Java体验。

我们并不是真的想低层次的使用类似C/C++的东西来完成工作。这些通常是简单的LOB应用程序,可以与某些Web服务进行通信。

边问:如何游戏开发者像愤怒的小鸟的厂商做呢?

UPDATE:

MonoDroid现已正式发布。所以看起来你只需要在BlackBerry上使用Java。我们正在考虑不开发BlackBerry,因为其他3个平台的开发已经简化。肯定会涉及一些成本,因为MonoTouch和MonoDroid都是399美元,而且您还需要Visual Studio许可证(这不包括App Store的成本等)。

+0

阅读http://stackoverflow.com/questions/4221315/what-kind-of-conversion-efforts-are-there-involved-in-porting-a-complete-droid-ap/4221446#4221446其较小但是很好地解释了我对跨平台主题的看法。 – blindstuff 2011-03-23 18:34:41

+0

是的,我很高兴我们从一开始就为此计划。我们当然希望将UI设备特定的代码与可重用代码分开。 – jonathanpeppers 2011-03-23 20:11:03

回答

2

有没有好的简单的答案,我知道的所有的移动平台。您可以使用开发环境如Appcelerator Titanium,其中交叉编译到各种平台上的原生代码(现在,例如,我认为钛支持iOS和Android,并计划为黑莓)。但是,这些API通常只能访问有限的API,并且最终还是需要为不同平台设计不同的UI(在我的商业工作中,我从未成功使用过这样的平台)。设计Web服务后端的所有业务逻辑,然后为每个平台编写“瘦客户端”应用程序。这有效,但当最终用户想要使用您的应用程序时,当然需要网络访问。 (通常它会在那里,但有时可能不会)

最终,我通常最终会做你的建议 - 尽可能地用几种不同的语言编写基本业务逻辑,然后将其捆绑在一起为每个平台提供自定义用户界面/设备代码。还没有找到更好的办法自己....

(顺便说一句,我相信游戏,如愤怒的小鸟被写入主要在OpenGL中,然后装到每个平台上的OpenGL的处理器,但我可能是错误的...)

+0

嗯,我希望能有更多的“圣杯”,但看起来并不存在这样的事情。如果我没有得到其他建议,我可能会将您标记为答案。 – jonathanpeppers 2011-03-23 19:56:54

+0

是的,我想不幸的是,跨平台开发的“圣杯”是一个神话。也许有些时候... – 2011-03-24 21:45:54

+0

Appcelerator的替代品是PhoneGap。但是你似乎很喜欢不使用这些工具。我只是想,如果有人在将来搜索此主题并正在寻找替代方法,我会提到这一点。 – Tony 2011-04-06 15:31:26

0

如果您在自己的应用程序中没有在WebView中使用某些HTML5(jquerymobile等),我不认为这是(容易)可能的(看起来像一个真实的应用程序,但仍然会以某种方式看到它不是)而不是普通的浏览器。您仍然可以使用设备中的一些本机API(加速度计,...)。

有(商业)平台,如Sybase Unwired Platform,可以帮助您生成一些客户端代码。 Afaik for Blackberry和Windows Mobile甚至可以从服务器上的业务对象中生成一些用户界面。但对我而言,这听起来可能对你的情况来说太重了。

问候, 马丁

+0

我认为我们希望避免使用HTML5,因为我相信我们的客户会希望在后台做更高级的事情等。 – jonathanpeppers 2011-03-23 19:59:09

1

这些都是一些伟大的答案。我同意,X平台的发展仍然非常原始。我想补充2点:

1)你不需要用不同的语言编写你的后端。选择一种语言(根据您的舒适度,性能等标准),然后从特定于平台的应用程序直接连接到后端。如果您的后端是服务器端代码,则通过XmlHttpClient与之交谈。如果它是一段通用于各种应用程序的本地代码,并且用C++编写,那么可以使用Java中的JNI和C#中的包装程序集。

2)避免x平台工具的另一个原因是您需要等待它们支持平台供应商(Apple,Google,MSFT等)发布的新API。一旦这些公司发布新的API,这些工具将需要更新,只有这样你才能够使用新的API。

+1

服务器端的东西都将是C#(或任何我们希望的)。我应该已经更清楚了,但通过“后端”,我的意思是与我们的服务器通信的业务层,并且有几个类来表示来自服务器的数据。这是将以两种语言重复的部分。我绝对同意,我们希望避免使用x平台工具,因为它们在某种程度上都是不足之处,也是很好的一点。 – jonathanpeppers 2011-03-24 11:44:38

+0

我仍然会尝试并避免重复图层(当您已经为每个平台处理重复的UI图层时,更容易维护)。这就是我要做的:UI层 - >业务逻辑层 - >数据访问层 - > DB,并让不同的UI层通过Web服务与同一业务逻辑层进行通话。 – Beta 2011-03-24 14:51:21

+0

向Web服务提供通信的代码将是这两种语言之间唯一重复的代码。您可以将Web服务拉出图片,但我们可以根据需要开发它。我只是指在每个设备上专门运行的代码。 – jonathanpeppers 2011-03-24 15:29:14