2011-03-23 54 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