Dot-Net

什麼是最有價值的 .Net Compact Framework 提示、技巧和避免陷阱?[關閉]

  • December 12, 2008

我們在 .Net Compact Framework 和 Windows Mobile 中廣泛工作。我已經看到很多關於 ASP.Net 應用程序或其他基於 .Net 的桌面應用程序開發細節的問題,但沒有特定於 CF。

是否還有其他移動開發人員可以分享一些在 Compact Framework 中開發時開始做、停止做和避免做的事情?

當然:

  • 盡可能使用物理設備(而不是模擬器)
  • 使用多個設備進行測試(不同供應商、不同型號)
  • 集中測試睡眠/喚醒行為
  • 使用 MSTEST 單元測試時,切勿使用私有訪問器
  • 避免 ActiveSync 像瘟疫一樣 - 使用 CoreCon 直接調試
  • 熟悉 RPM 並儘早開始使用它
  • 盡可能重用對象
  • 避免在表單的 ctor 中做大量工作 - 為延遲載入或在後台執行緒中解除安裝它
  • 盡可能按需載入表單(不是一次全部載入)
  • 記憶體常用表單,按需創建不常用表單
  • 保持低圖像解析度
  • 如果一個類公開 Dispose使用它。總是。
  • 沒有應用程序太小而無法從 MVC/MVP 模式中受益
  • 不要為 CF 使用 Microsoft CAB/SCSF 埠(移植它的人顯然從未真正使用過資源有限的設備)
  • 如果您要進行任何遠端數據/服務活動,請熟悉“偶爾連接”的概念
  • 停靠和錨定是你的朋友和敵人 - 測試執行時螢幕旋轉和多種解析度(即使你認為你不會針對它們,因為你的想法可能是錯誤的)
  • 看看,但不要在設備部署包項目類型上大量投資。它有可能會咬你的主要限制。批處理文件執行得非常好或自定義 MSBUILD 任務呼叫 CabWiz
  • 複習您的 C++ 和 P/Invoke 技能。你需要它們。如果沒有 P/Invoking 某些東西,幾乎不可能編寫一個有用的 CF 應用程序。
  • 編碼到目標的最低公分母。
  • 部分類是您的朋友,尤其是在目標類型(PPC、電話、非移動 CE)之間劃分邏輯時。
  • 避免從持久儲存執行應用程序,尤其是對於 CE 和 WInMo 5 之前的版本。複製到 RAM 並從那裡執行以防止按需分頁殺死您,尤其是在睡眠/喚醒週期之後。
  • 應用程序不應該關心睡眠/喚醒轉換,但那是純粹的理論。睡眠喚醒**會*改變您的應用行為,所以再次測試、測試、測試。
  • 我提到過測試嗎?尤其是在您可以使用的每台設備上?從 eBay 上為您的測試實驗室購買便宜的硬體。擁有更多設備比擁有最新設備更重要,除非您打算使用較新設備的特定功能。
  • 如果您打算以程式方式使用藍牙,請尋求上帝的干預。熟悉 Widcomm 和 Microsoft 堆棧並了解它們是不同的。
  • 觀看有關 Compact Framework 中記憶體管理的 MSDN 網路廣播。再看一遍你第一次錯過的東西。
  • 注意睡眠/喚醒使內部句柄無效並導致訪問衝突。這更深奧,但肯定會發生。例如,如果您在儲存卡上執行應用程序,則整個應用程序不會載入到 RAM 中。使用中的部分被按需調入執行。這一切都很好。現在,如果您關閉設備電源,驅動程序將全部關閉。當您重新啟動電源時,許多設備只需重新安裝儲存設備即可。當您的應用程序需要在更多程序中請求頁面時,它不再是它原來的位置並且它死了。安裝儲存上的數據庫可能會發生類似的行為。如果您有數據庫的打開句柄,則在睡眠/喚醒週期後,連接句柄可能不再有效。
  • 安裝Platform Builder 的評估版。很多東西的原始碼都在那裡(比如網路 UI、許多驅動程序等),當您的 P/Invoke 程式碼沒有按照您的預期執行時,您至少可以找到一個地方“為什麼”。

2010 年 5 月 25 日添加

2010 年 7 月 27 日添加

  • 如果您追求美觀的 UI,請準備好進行大量自定義或手動繪圖。
  • 如果您在進行自定義或手動繪圖並且需要使用透明度,請準備好迎接一大堆挫折,並且不得不編寫古怪的程式碼或直接呼叫本機程式碼解決 CF 中的缺點。

2011 年 11 月 22 日添加

  • 不要僅僅因為名稱空間或類存在於 BCL 中就認為它實際上是以任何有用的方式實現的。 證書當然不是

我只是將它們添加到列表中,因為它們發生在我身上……

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