2009-04-08 32 views
2

我致力於一個經驗豐富且多樣化的開發團隊,我們正在準備迎接我們的第一個針對Windows Mobile 6的移動開發(平臺變更不是一個選項)。Windows Mobile開發:.Net精簡版與原生(C++)代碼的選擇

我們在用於Windows桌面和服務器開發的Visual C++和.Net技術方面擁有相關技能和經驗。

移動開發將包括一些圖像處理和對藍牙設備的讀/寫訪問。不幸的是,我不能提供更多的細節。

我們試圖在使用託管代碼或本機代碼編寫移動客戶端之間進行選擇。我們將分別使用C#或C++。

我的問題是:

  • 有多大,這些語言之間的預期差的表現?我聽說移動設備上的本機代碼顯着加快,但我很樂意聽到有經驗的人。

  • 在使用Windows Mobile服務訪問藍牙設備方面,兩種語言都有哪些主要優勢?

  • 對託管代碼或本機代碼之間的電池壽命是否有影響?

  • 有沒有其他主要的應該知道我們要考慮?

我很感謝您的反饋。

回答

1

一個非常相似的question被問及幾天前回答。你可以在那裏找到有用的信息。

簡短回答您的問題:

  • 本機代碼更快,但是對於許多應用程序的速度差別不會明顯。不要僅僅爲速度使用本地代碼,除非這是您應用程序的關鍵因素。託管應用程序也可以運行得更快 - 啓動時間可能會延長。
  • 對於.NET應用程序,有一個很好的藍牙library。我不知道C++應用程序的類似庫。
  • 這是取決於您的設計,以實現良好的電池壽命。平臺的選擇並不重要。
1

除了在kgiannakakis提到的其他問題的偉大和長期回答,我不得不補充一些想法和觀點。

在我的工作場所,我們一直在使用C++和ATL/WTL編寫Windows CE 5.0應用程序。與MFC和.Net相比,這最終能夠很好地工作並且非常輕巧。

需要考慮的另一點(正如這裏的高級開發人員所解釋的),每當應用程序切換到時,.Net壓縮框架需要將字節碼重新編譯爲機器碼。這可能需要很長時間和處理器能力,所以要小心。

+1

您的高級開發人員對.Net的JIT編譯器以及Windows CE的工作方式感到困惑,或者您誤解了他所說的內容。無論哪種方式,在WinCE中切換應用程序都沒有顯着的性能影響,無論這些應用程序是否爲.Net。 – MusiGenesis 2009-09-16 00:43:10

4

另一個考慮因素是內存使用情況和模塊大小問題。我們遇到了移動開發中的重大問題,只是試圖讓操作系統將我們所有的DLL加載到內存中。與普通的Windows開發不同,32Mb的限制非常嚴格,必須加載所有模塊。我們必須執行很多非常骯髒的技巧才能成功加載所有的東西。我們發現,即使用戶打開手機或使用藍牙設備,這些設備的驅動程序也會導致應用程序失敗,因爲它們會佔用我們模塊的空間。

考慮到這一切,我們無法在我們的應用程序中添加對.Net的支持,因爲我們的應用程序會引入額外的模塊權重。如果您的應用程序有很多依賴關係,您可能需要將其納入補貼範圍。