Dot-Net

使用一種程式語言 (C#) 針對多個移動平台進行定位/開發?成本效益?

  • March 17, 2011

今天,可以在多個移動平台上使用 C# 程式,例如:

(如有遺漏,請隨時編輯)當然,這仍然是 UI 的程式工作,但可以共享應用程序的主要庫。

我們都要感謝一個圍繞Mono項目聚集的團隊和超級英雄Miguel de Icaza,他們的努力是無價的。

困擾我的是,這些選項有什麼好處?跨多個移動平台維護一個應用程序的成本是否會減少障礙,然後必須分別對每個庫進行編碼以獲得更好的性能。每種語言的學習曲線?成為萬事通與 .NET Ninja

或者知道在本機環境中程式的應用程序的二進製文件大小更小,甚至可能優化得更好,不要忘記您必須等待新平台作業系統更新的支持。

更新:顯然還有一件事要考慮,那就是支持。由於 Novell 被 Attachmate Group 收購,Mono 團隊全部下崗。然而,由 Miguel De Icaza 領導的團隊核心成員創立了新公司 Xamarin,該公司將從頭開始重新發明 Mono Mobile 開發工具。

在我看來,使用單一環境(即 C#/.NET)的最大優點是程式碼的可移植性。像 LINQ 這樣很酷的東西,一旦你習慣了它,你就離不開它。然而,少數移動作業系統(iOS、Android、WP7)在 UI 方面有很大不同。

而且,如果我沒記錯您的應用程序,那麼如果它要在移動設備上執行,它就有相當多的 UI 互動。大多數移動應用程序就像 80% 的 UI 程式碼。

因此,無論如何,您最終都會為每個平台編寫一組單獨的 UI 程式碼——例如,您將在 Silverlight WP7 中編寫(以及所有 WPF 優點),您將編寫一組完全不同的程式碼對於 Cocoa 中的 iOS(IB、視圖、控制器和其他東西),您將為 Android 編寫一組完全不同的程式碼。

我的經驗一直是,在任何平台上編寫好的 UI 程式碼都需要大量經驗——例如學習 WPF/SL 已經是一場噩夢,那就是投入 Cocoa Touch 和整個 Android 混亂。當然,您可以編寫三組外觀和感覺相當相似的 UI,但您可能會非常努力地重用程式碼並擁有通用資料結構,以至於與專用應用程序相比,您的 UI 最終會低於標準 - - 在當今這個殘酷的移動應用程序世界中,非超級(更不用說低於標準)的 UI 體驗意味著您的應用程序的死亡。

此外,所有三種移動環境都具有不同的連接範式以及多媒體範式。您最終會編寫三個版本,並學習三種環境,儘管使用您熟悉的一種語言編寫。

您要重用的最多的是後端模組。決策引擎、搜尋常式、數據管理等。甚至這些都會有問題,因為您將被迫在資料結構中做出妥協,以便能夠輕鬆地與工作於三種不同 UI 範例的三組不同 UI 程式碼集成. 例如,您是否使用 DependencyObjects 來綁定到 MVVM 模型中的 Silverlight 視圖?如果這樣做,它將無法與 Cocoa 的 MVC 模型一起使用,並且您必須分別對這些綁定進行編碼。

由於並非所有移動環境都允許您使用完整的功能集——例如,iOS 的 MonoTouch 沒有在編譯時無法確定的通用結構。您實際上是在使用 .NET 的一個非常小的子集(並且必須不斷提醒自己可以在哪裡使用哪些功能),這樣您就可以在三個不同的平台上執行它們而無需進行重大更改。

現在,當您為支持整個 .NET 功能集的 WP7 平台編寫時,圖像具有所有這些限制。我不了解你,但我會發瘋的。而且您的 WP7 應用程序永遠無法與其他應用程序競爭。

在我看來,痛苦和妥協是不值得的。你最終會得到三個馬馬虎虎的應用程序,這兩個平台的人都不會喜歡。

除非所有優點都在於您的應用程序的後端邏輯,而且它是如此之好,以至於人們會忽略 UI 問題,只是為了獲得您應用程序的後端功能。根據我的經驗,這幾乎不會發生。

引用自:https://stackoverflow.com/questions/5335764