熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Microsoft .NET Compact Framework 數據訪問策略

2022-06-13   來源: .NET編程 

  簡介
  從設備的角度本文的討論重點在於 Pocket PC 平台但是Microsoft® NET Compact Framework 也可以在非 Pocket PC 的 Microsoft Windows® CE NET 設備上運行此處討論的 NET Compact Framework 相關概念也可以適用於這些設備
  
  NET Compact Framework 數據訪問策略涉及許多方面關鍵方面是連接其他各個方面都取決於此由於 Pocket PC 既可以聯機使用也可以脫機使用因此數據訪問策略需要定義如何
  
  在聯機時管理和使用遠程服務器上的數據
  在脫機時存儲和使用數據
  在 Pocket PC 從先前的脫機狀態進入聯機狀態時交換數據
  在數據訪問策略環境中建立標准術語非常重要標准術語的建立對於如何定義 Pocket PC 和服務器之間的數據交換尤其重要從概念的角度交換數據的方法有兩種數據同步和數據傳輸
  
  數據同步支持雙向的數據交換並實現確保兩端數據相同的功能在很多情況下同一數據可以在 Pocket PC 處於脫機狀態時在多個地方進行修改然後與服務器同步因此同步功能常常需要包含沖突解決功能以處理在斷開連接的 Pocket PC 返回到聯機狀態以同步數據時發生的並發性問題下面的示例說明了四處走動的推銷員在脫機狀態下實地更新訂單時發生的這種情況在推銷員同步更改之前一位聯機客戶服務代表也對同一訂單進行更新設計周到的沖突解決機制能夠在出現沖突時決定應采取何種措施例如基於同步的角色或時間使四處走動的推銷員覆蓋客戶服務代表或者系統是否應通知用戶或用戶組出現了沖突
  
  數據傳輸也支持雙向的數據交換但是卻沒有用於確保兩端數據相同的功能也沒有沖突解決在很多情況下數據傳輸是有效的方法並且不需要數據同步數據傳輸的示例有將靜態引用數據從服務器傳輸到 Pocket PC僅將新收集的數據從 Pocket PC 傳輸到服務器以及將明確引入和引出或分段到單個用戶的數據傳輸到 Pocket PC 或從 Pocket PC 傳出並在數據被引出或由特定用戶擁有時在服務器上將其標為只讀數據
  
  在這一點上術語數據同步數據傳輸反應了它們真實的含義而在同時包含這兩個術語時則使用數據交換
  
  數據訪問策略的各個方面
  在根本上NET Compact Framework 數據訪問策略涉及兩個方面
  
  如何在 Pocket PC 上存儲數據從應用程序的角度來看數據可以保存在關系數據庫(例如 Microsoft SQL Server&#; CE)本地文件(例如通常通過 DataSets 管理的 XML 文件)以及在應用程序終止時配置的基於會話的內存內數據結構中
  如何與服務器交換數據Pocket PC 和服務器之間數據交換的執行方式根據進行通信的 Pocket PC 層與服務器層的不同而有所差異 說明了 Pocket PC 中的三個層以及服務器中的三個層
  
 

  
設備和服務器中的應用程序層

  NET Compact Framework 自身包含的數據交換選項包括
  
  Pocket PC 數據庫對服務器數據庫Pocket PC 數據庫與服務器數據庫直接交換數據此選項在涉及很少業務邏輯或不涉及業務邏輯以及在數據量很大的情況下有效並使用 SQL Server CE 的遠程數據訪問(英文)和合並復制(英文)功能來執行如果要求進行數據同步而不僅僅是數據傳輸則合並復制功能可以提供在服務器端的 SQL Server 調節程序中執行的內部沖突解決
  Pocket PC 組件對服務器組件Pocket PC 應用程序與服務器上的組件進行通信此選項能使業務邏輯(作為 Web 服務 [英文] 執行)成為數據交換的一部分當數據保存在本地的 XML 文件或 SQL Server CE 數據庫中時均可使用此選項
  Pocket PC 組件對服務器數據庫Pocket PC 直接連接到服務器數據庫在 Pocket PC 應用程序需要管理遠程數據庫的大量數據而不必將數據放入 Pocket PC以及業務邏輯不是主要的考慮因素時經常使用此選項此選項使用 SystemDataSqlClient(英文)命名空間執行在數據保存在本地的 XML 文件和 SQL Server CE 數據庫時均可使用
  僅在服務器上交換數據Pocket PC 應用程序用戶界面元素可以直接連接到服務器端的組件或作為使用 Pocket PC Web 浏覽器的 Web 應用程序執行顯然這要求 Pocket PC 始終連接到服務器並需要足夠的帶寬該選項可行的實例是地理環境受限制但可以實現 WiFi 網絡的情況例如在倉庫保健機構辦公室中等等此選項不要求將所有數據存儲在 Pocket PC 本地
  在確定如何處理如何存儲數據如何交換數據這兩個方面之前必須了解或建立某些基本條件數據特性連接和系統結構
  
  數據特性
  解決方案的數據特性顯示了以下重要信息
  
  要存儲在 Pocket PC 上的靜態數據及事務性數據的量如果要存儲在 Pocket PC 上的數據量少(在本例中為少於 kb)則數據可以存儲在本地的 XML 文件中如果數據量較大則 SQL Server CE 將提供較高的性能及可靠性原因是將使用 SQL Server CE 查詢引擎訪問數據該查詢引擎支持具有更高性能和可管理性的結構查詢語言 (SQL)
  要與服務器交換的事務性數據的量如果要在服務器和 Pocket PC 之間交換的事務性數據的量少(例如少於 kb 至 Mb)則可使用 Web 服務將數據作為 XML 傳遞如果數據量較多則遠程數據訪問和合並復制功能將提供較高的性能原因是SQL Server CE 客戶端代理和服務器代理將執行有效的數據壓縮而且數據在到達最終目的地之前必須經過的進程要少得多例如在使用遠程數據訪問將數據從 Pocket PC 傳輸到服務器時數據無需經過 Pocket PC 端的 OLEDB CECLR/NET CFSQL Server CE 數據提供程序和 ADONET 層當數據傳輸到服務器時也無需經過服務器上相應的這些程序而是數據可以從客戶端代理直接傳遞到服務器代理也可以通過 Internet Information Server 直接傳遞到遠程 SQL Server
  請務必注意如果數據被存儲為本地 XML 文件則可以使用 Web 服務進行數據交換如果數據存儲在 SQL Server CE 中也可能使用 Web 服務而不是遠程數據訪問和合並復制其原因包括使用了業務邏輯和現有的系統結構策略(可能適合)
  
  連接
  解決方案的連接方面涉及 Pocket PC 聯機時的可用帶寬以及 Pocket PC 的聯機頻率問題這些因素有時可以作為前提條件給定有時也可以進行定義和控制
  
  由於 XML 通常包含大量未經壓縮的重復元數據因此對於相同的數據Web 服務比 SQL Server CE 遠程數據訪問和合並復制需要更多的帶寬但事實表明當需要交換大量數據時調用的是遠程數據訪問和合並復制的功能設置另外在數據交換頻率低時也經常使用這兩種方法這可能會提高需要交換的數據量這意味著在現實中SQL Server CE 遠程數據訪問和合並復制常用於高帶寬的情況而 Web 服務常用於低帶寬的情況因此在使用 Web 服務時聊天式(大量小請求)設計比區塊式(少量大請求)設計更適合
  
  系統結構
  系統結構方面涉及系統集成的總體問題移動解決方案可以看成是與現行系統或現行系統的擴展和核心部分相連接的獨立解決方案然而 Pocket PC 解決方案通常不是獨立的因為它們需要與其他系統進行通信因此如果沒有系統結構則必須定義系統結構如果已有系統結構則應遵守
  
  目前大多數系統均作為技術界面驅動的多層解決方案實現服務器端的應用程序已被組件化以便啟用代碼的重復使用以及業務邏輯和數據的分離並提高可管理性XML 和 Web 服務的使用繼續推動該項開發並且 NET Compact Framework 應用程序由於對 XML 和 Web 服務消費的本地支持而完全適應此結構
  
  另兩種系統集成實現方式是使用隊列的異步消息和數據庫驅動集成通過將 Web 服務界面用於服務器端的 MSMQ 隊列或通過在 Pocket PC 和服務器之間使用 Web 服務以及在服務器和後備辦公室系統之間使用隊列NET Compact Framework 應用程序可以遵守這些實現方式數據庫驅動的集成是 SQL Server CE 的固有部分這一點我們已經討論過
  
  代碼演練
  讓我們看一些演示如何執行上面提到的選項的示例代碼源代碼來自一個稱為 Feedback Anyplace 的示例應用程序(用在一個稱為 Architect Webcast:Designing Integrated Pocket PC Applications with NET Compact Framework [英文] 的 Webcast 中)演示了質檢人員可以如何使用 Pocket PC 在捕獲並報告生產中的問題該示例需要使用 IntelliProg 的 RichInk 控制才能運行您可以下載源代碼包括 NET Compact Framework 應用程序Web 服務和數據庫組件該示例項目是數據傳輸而非數據同步的示例
  
  在 Pocket PC 上存儲數據
  下列代碼演示了如何將類似於類的屬性包存儲到 DataSet 和本地 XML 文件中
  
  Public Sub Save()
   保存新項目或更新現有項目
   Dim ds as DataSet
  Dim dr As DataRow
  Dim expr As String = ID = + m_ID +
  
  If m_NewItem Then
     將新行添加到表
    dr = frmMaindsTables(Feedback)NewRow()
  Else
     查找現有行
     使用 Select 方法查找與過濾器匹配的行
    dr = frmMaindsTables(Feedback)Select(expr)()
  End If
  
   設置數據行屬性
  dr(ID) = m_ID<
From:http://tw.wingwit.com/Article/program/net/201311/13997.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.