首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

資料點專欄:行動應用程式資料存取最佳實踐 — 從 Smartphone 透過 Web Service 同步資料

     編輯:關於.NET

行動裝置資料存取須面對頻寬有限、處理器較慢、離線操作等挑戰。本文示範使用 .NET Compact Framework 2.0 SP2 + Windows Mobile 5.0/6 SDK,建立資料驅動 Smartphone 應用程式,透過 IIS Web Service 以 DataSet、自訂物件、泛型 List<T> 三種方式與伺服器交換資料。

開發環境建置清單

  • .NET Compact Framework 2.0 SP2
  • Windows Mobile 6 Professional/Standard SDK 或 5.0 SDK
  • ActiveSync 4.5 (XP) / Windows Mobile Device Center (Vista)
  • Microsoft Device Emulator 2.0 + 對應模擬器映像

關鍵步驟:工具 → 裝置模擬器管理器 → 連接模擬器 → 右鍵「插入座座」啟用網路 → VS 裝置工具列選擇目標模擬器。

Web Service 端建立三種資料傳回方法

[WebMethod]
public Customer GetCustomer(string customerID) { /* 回傳單一自訂實體 */ }

[WebMethod]
public DataSet GetCustomerDataSet(string customerID) { /* 回傳 DataSet */ }

[WebMethod]
public List<Customer> FindCustomerList() { /* 回傳泛型清單 */ }

Smartphone 應用程式:自動繫結 (BindingSource)

  1. 專案加入 Web 參考/服務參考
  2. 「資料來源」視窗 → 加入新資料來源 → 物件 → 選擇 Customer 實體
  3. 將資料來源拖曳至表單 → 自動建立 BindingSource (customerBindingSource)
  4. 設定 ComboBox:DisplayMember=CompanyName, ValueMember=CustomerID
  5. 載入資料:
private void CustomerPicker_Load(object sender, EventArgs e) {
    using (var svc = new RemoteService.CustomerWebService())
        customerBindingSource.DataSource = svc.FindCustomerList();
}

詳細資料表單:主從關係繫結

  • 資料來源視窗自訂顯示欄位 → 拖曳建立明細控制項 (TextBox、Label 等)
  • 從清單選取 CustomerID → 呼叫 GetCustomer → 設定 customerBindingSource.DataSource

手動繫結替代方案

移除 BindingSource,直接程式碼賦值:

using (var svc = new RemoteService.CustomerWebService()) {
    var customer = svc.GetCustomer(_customerID);
    companyNameTextBox.Text = customer.CompanyName;
    customerIDLabel1.Text = customer.CustomerID;
    // ...
}

儲存時反向提取控制項值回實體。建議將實體存為表單私有欄位便於存取。

行動裝置效能調優關鍵

  1. 最小化傳輸資料量:清單頁僅需 ID 與名稱,應建立專用 DTO 或修改 WebMethod 只回傳必要欄位
  2. 避免 BindingNavigator:行動版無此控制項,提醒開發者節制頻寬,分頁載入優於大量清單
  3. 測試真實裝置:模擬器效能較好,必須在實機驗證網路延遲與序列化效能

部署與常見問題排查

  • Vista 必須安裝 Windows Mobile Device Center 6.1 + Device Emulator Manager 2.0
  • Web Service URL 必須使用主機名稱而非 localhost (模擬器無法解析)
  • ActiveSync 設定「允許連接 → DMA」
  • 模擬器需「插入座座」才能存取主機網路
  • 檢查 Pocket Outlook 發件箱/收件箱確認同步狀態

總結

正確建置環境是行動開發成功關鍵。BindingSource 簡化繫結但需權衡效能;手動繫結控制力更強。核心原則:只傳輸必要資料、善用壓縮、優雅處理離線狀態。完整範例碼可下載參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved