原文引自:
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter1Introduction.mspx
使用 Offline Application Block 進(jìn)行開發(fā)
發(fā)布日期: 8/19/2004 | 更新日期: 8/19/2004
Microsoft Corporation
內(nèi)容:第 3 章詳細(xì)說明了構(gòu)建和使用該應(yīng)用程序塊的過程。本章還提供了快速入門,以幫助您了解實現(xiàn)自己的脫機(jī)解決方案所需的步驟。
本頁內(nèi)容
現(xiàn)在您已經(jīng)了解了 Offline Application Block 的設(shè)計,接下來就可以使用該應(yīng)用程序塊開發(fā)解決方案了。要開發(fā)使用 Offline Application Block 的應(yīng)用程序,您需要:
? |
了解如何構(gòu)建(編譯)該應(yīng)用程序塊。 |
? |
查看快速入門以學(xué)習(xí)如何使用該應(yīng)用程序塊。 |
本章為您說明了如何使用 Offline Application Block 以及與該應(yīng)用程序塊隨附的不同子系統(tǒng)相關(guān)聯(lián)的提供程序,來開發(fā)解決方案。本章還討論了設(shè)計注意事項以及如何開發(fā)自己的提供程序。本章使用連接檢測提供程序(由該應(yīng)用程序塊提供)作為參考示例。
安裝 Offline Application Block
在安裝 Offline Application Block 之前,查看軟件要求和該應(yīng)用程序塊構(gòu)建的文件夾結(jié)構(gòu)非常重要。
軟件要求
要使用 Offline Application Block,您必須確保系統(tǒng)符合下列最低軟件要求:
? |
Microsoft_ Windows_ XP 操作系統(tǒng) |
? |
Microsoft .NET framework 1.1 版 |
? |
Microsoft Visual Studio_ .NET 2003 開發(fā)系統(tǒng)(企業(yè)級結(jié)構(gòu)設(shè)計版、企業(yè)級開發(fā)版或 .NET 專業(yè)版) |
此外,您可能需要安裝 Microsoft Internet 信息服務(wù) (IIS),這取決于應(yīng)用程序的目的,或是您是否打算安裝 InsuranceClaimsService Web 服務(wù),以便在同一計算機(jī)上運行 InsuranceClaimsQuickStart\InsuranceClaimsClient。
該應(yīng)用程序塊具有用于“隊列存儲”的內(nèi)置提供程序。這些提供程序使用:
除其他提供程序之外,該應(yīng)用程序塊還具有用于緩存的內(nèi)置提供程序。
注 有關(guān)相應(yīng)隊列和緩存提供程序的配置詳細(xì)信息,請參閱本章結(jié)尾的“設(shè)置桌面引擎和 MSMQ”部分。
構(gòu)建 Offline Application Block
您必須先構(gòu)建解決方案,然后添加對幾個程序集的引用,之后才能使用 Offline Application Block。
構(gòu)建 Offline Application Block
1. |
在 Visual Studio .NET 2003 中打開 Offline.sln 解決方案(位于 <installation location>\Offline\ 文件夾中)。此外,您還可以按以下方式訪問 Offline Application Block:依次單擊 Start、All Programs、Microsoft Application Blocks for .NET、Offline,然后單擊 OfflineApplication Block。 |
2. |
構(gòu)建解決方案以生成下列程序集:
? |
Microsoft.ApplicationBlocks.SmartClient.Offline.dll |
? |
Microsoft.ApplicationBlocks.SmartClient.Offline.Providers.dll |
? |
MemoryMappedFileStream.dll |
? |
Microsoft.ApplicationBlocks.Cache.dll |
? |
Microsoft.ApplicationBlocks.Common.dll |
? |
Microsoft.ApplicationBlocks.Data.dll |
? |
Microsoft.ApplicationBlocks.ExceptionManagement.dll |
? |
Microsoft.ApplicationBlocks.ExceptionManagement.Interfaces.dll | |
要在應(yīng)用程序中使用 Offline Application Block,您需要添加一個對 Common、Offline Providers 和 Offline 程序集的引用。如果您使用的是 Visual C#,請將 using 指令添加到要訪問塊代碼的文件中。如果您使用的是 Visual Basic .NET,請將 Imports 指令添加到您要在其中訪問塊代碼的文件中。例如,如果您使用 Visual C# 編寫一個新的服務(wù)代理,請將以下 using 指令添加到要訪問塊代碼的文件中:
...
using Microsoft.ApplicationBlocks.SmartClient.Offline;
...
在 Visual Basic 中使用的相應(yīng) Imports 指令是:
...
Imports Microsoft.ApplicationBlocks.SmartClient.Offline
...
Offline Application Block 文件夾結(jié)構(gòu)
當(dāng)您安裝 Offline Application Block 時,安裝程序包將創(chuàng)建以下文件夾結(jié)構(gòu):
<Install Location>
+---Offline
+---Caching
: +---src
: +---cs
: +---Cache
: : +---DataProtectionImplementations
: : +---ExpirationsImplementations
: : +---ScavengingImplementations
: : +---StorageImplementations
: +---MemoryMappedFile
+---Common
: +---src
: +---cs
: +---Common
: : +---Crypto
: : : +---doc
: : +---doc
: +---Version
+---DAAB
: +---src
: +---cs
: +---Microsoft.ApplicationBlocks.Data
+---Database
: +---Cache
: +---Queue
+---Docs
+---EMAB
: +---src
: +---cs
: +---Microsoft.ApplicationBlocks.ExceptionManagement
: +---Microsoft.ApplicationBlocks.ExceptionManagement.Interfaces
+---QuickStarts
: +---src
: : +---cs
: : : +---ConnectionManagementQuickStart
: : : +---DownloadQuickStart
: : : +---InsuranceClaimsQuickStart
: : : : +---Database
: : : : +---InsuranceClaimsClient
: : : : +---InsuranceClaimsService
: : : +---UploadQuickStart
: : +---vb
: : +---ConnectionManagementQuickStart
: : +---DownloadQuickStart
: : +---InsuranceClaimsQuickStart
: : : +---Database
: : : +---InsuranceClaimsClient
: : : +---InsuranceClaimsService
: : +---UploadQuickStart
: +---Utility
: +---ValidationKeyGeneration
+---src
+---cs
+---Offline
: +---Builders
: +---ConnectionManagement
: +---DataLoadingManagement
: +---Executor
: +---QueueManagement
: +---ReferenceDataManagement
: +---ServiceAgentManagement
+---Offline Providers
: +---CacheStorageProviders
: +---ConnectionDetectionStrategies
: +---QueueStorageProviders
+---Versioning
每個快速入門解決方案都構(gòu)建在各自的子文件夾中。表 3.1 說明了在安裝 Offline Application Block 時安裝程序包所創(chuàng)建的文件夾。
表 3.1:Offline Application Block 安裝程序包創(chuàng)建的文件夾
<installation location> |
安裝 Offline Application Block 的文件夾。默認(rèn)安裝文件夾是: C:\Program Files\Microsoft Application Blocks for .NET\SmartClient Offline Application Block\ |
Bin |
存儲在為該應(yīng)用程序塊生成源代碼時所生成的所有二進(jìn)制文件。該文件夾包含 Debug 或 Release 文件夾,它們包含二進(jìn)制文件。 |
Docs |
包含與該應(yīng)用程序塊有關(guān)的文檔,其中包括編譯的幫助 (.chm) 文件。 |
Database |
包含設(shè)置“桌面引擎”數(shù)據(jù)庫(該數(shù)據(jù)庫由“桌面引擎”隊列和緩存存儲提供程序使用)所需的數(shù)據(jù)庫腳本。 |
QuickStarts |
包含所有快速入門。對于 Microsoft Visual C#_ 開發(fā)工具和 Microsoft Visual Basic_ .NET 開發(fā)系統(tǒng),每個快速入門都有不同的版本??焖偃腴T是獨立的文檔,并包含相關(guān)的解決方案文件。在構(gòu)建快速入門時,系統(tǒng)會在 QuickStart 文件夾下創(chuàng)建一個 bin 文件夾。bin 文件夾包含存有二進(jìn)制文件的 Debug 文件夾或 Release 文件夾。每個快速入門都有一個獨立的 bin 文件夾。 |
Src |
包含 Offline Application Block 的源代碼。src 文件夾包含下列文件夾:
Offline – 包含對于 Offline Application Block 非常重要的代碼。
Providers – 包含特定于該應(yīng)用程序塊所提供的提供程序的源代碼。 |
Offline Application Block 快速入門
要將脫機(jī)功能添加到應(yīng)用程序中,請先查看該應(yīng)用程序塊隨附的四個快速入門:
? |
連接管理快速入門說明如何使用該應(yīng)用程序塊的“連接狀態(tài)管理”子系統(tǒng)組件,來檢測應(yīng)用程序是處于聯(lián)機(jī)狀態(tài)還是脫機(jī)狀態(tài),以及強(qiáng)制系統(tǒng)脫機(jī)或聯(lián)機(jī)。 |
? |
下載快速入門說明如何下載參考數(shù)據(jù),這樣即使在應(yīng)用程序脫機(jī)時用戶也可以繼續(xù)使用應(yīng)用程序。該快速入門使用 OnlineProxy 類從一個虛擬服務(wù)(為進(jìn)行說明而使用的本地方法調(diào)用)檢索數(shù)據(jù),并使用“參考數(shù)據(jù)管理”子系統(tǒng)將該數(shù)據(jù)存儲在“參考數(shù)據(jù)緩存”中。 |
? |
上載快速入門說明當(dāng)應(yīng)用程序的用戶在客戶端上更新某些信息后,如何將數(shù)據(jù)上載到服務(wù)器。該快速入門說明了如何使用該應(yīng)用程序塊的“消息數(shù)據(jù)管理”子系統(tǒng)。在處理這些消息之前,使用隊列來存儲它們。 |
? |
保險理賠快速入門說明了一個使用 Web 服務(wù)的端到端應(yīng)用程序。它是最高級的快速入門,說明了如何將該應(yīng)用程序塊用于與 Web 服務(wù)進(jìn)行交互的應(yīng)用程序。該快速入門隨附的腳本可以創(chuàng)建和刪除 IIS 中的虛擬目錄。該快速入門包含一個使用該應(yīng)用程序塊所有子系統(tǒng)的智能客戶端應(yīng)用程序。這些子系統(tǒng)包括:服務(wù)代理管理、連接狀態(tài)管理、消息數(shù)據(jù)管理和參考數(shù)據(jù)管理。它還演示了對該應(yīng)用程序塊所引發(fā)的異常的基本錯誤處理。 |
您可以使用這些快速入門來更好地理解 Offline Application Block、開發(fā)新的提供程序或修改現(xiàn)有的提供程序。例如,您可能要為連接檢測功能開發(fā)幾個提供程序,但在配置文件中只啟用所需的提供程序。
要點 這些快速入門旨在幫助您理解該應(yīng)用程序塊;它們不是現(xiàn)成的產(chǎn)品代碼示例。
下面的段落將在開發(fā)人員要在應(yīng)用程序中執(zhí)行的任務(wù)的上下文中討論每個快速入門。
管理應(yīng)用程序的連接狀態(tài)
“連接管理快速入門”說明如何使用該應(yīng)用程序塊的“連接狀態(tài)管理”子系統(tǒng)組件,來檢測應(yīng)用程序是處于聯(lián)機(jī)狀態(tài)還是脫機(jī)狀態(tài),以及強(qiáng)制改變應(yīng)用程序的狀態(tài)。
該快速入門的單屏幕中包含兩個按鈕 — Go Offline 和 Go Online,可讓用戶將應(yīng)用程序的狀態(tài)更改為聯(lián)機(jī)或脫機(jī)。該屏幕還有一個標(biāo)簽,用來顯示應(yīng)用程序的連接狀態(tài)。
當(dāng)該快速入門運行時,應(yīng)用程序塊開始在后臺輪詢連接,以自動檢測連接狀態(tài)更改。如果連接狀態(tài)隨后被強(qiáng)制為脫機(jī),則輪詢會立即停止。該快速入門注冊了 ConnectionManager 類的 ConnectionStateChangedEvent。注冊該事件可讓快速入門對連接狀態(tài)的更改做出反應(yīng)。當(dāng)連接狀態(tài)更改時,會引發(fā)該事件,并且屏幕上的連接狀態(tài)標(biāo)簽會發(fā)生更改,以反映應(yīng)用程序的連接狀態(tài)。
構(gòu)建連接管理快速入門
1. |
在 Visual Studio .NET 2003 中打開 ConnectionManagementQuickStart.sln 解決方案(位于 <installation location>\Offline\QuickStarts\src\<language>\ConnectionManagementQuickStart\ 文件夾中)。此外,您還可以按以下方式訪問“連接管理快速入門”:依次單擊 Start、All Programs、MicrosoftApplicationBlocks for .NET、Offline、QuickStartSamples (C#) / (VB),然后單擊 ConnectionManagementQuickStart。 |
2. |
構(gòu)建解決方案。這將在 <installation location>\Offline\QuickStarts\src\<language>\ConnectionManagementQuickStart\ 文件夾下的 bin\<build configuration> 文件夾中生成 ConnectionManagementQuickstart.exe 程序集。 |
要啟動該快速入門,請雙擊 ConnectionManagerQuickStart.exe。
“連接管理快速入門”文件
這些快速入門文件位于 <installation location>\Offline\QuickStarts\src\<language>\ConnectionManagementQuickStart\ 文件夾中。表 3.2 說明了與該“連接管理快速入門”討論相關(guān)的文件。
表 3.2:“連接管理快速入門”文件
App.config |
指定應(yīng)用程序的配置信息。 |
ConnectionManagementForm.cs \ .vb |
對應(yīng)于應(yīng)用程序的視圖 (UI)。 |
ConnectionManagementQuickStart.sln |
“連接管理快速入門”的解決方案文件。 |
Controller.cs \ .vb |
管理 UI 與連接管理器和服務(wù)代理之間的交互。它還注冊了連接狀態(tài)更改事件,并通過將更改傳遞到關(guān)聯(lián)視圖的方式來響應(yīng)更改。 |
詳細(xì)信息
該快速入門使用了該應(yīng)用程序塊隨附的默認(rèn)連接檢測提供程序(策略)。該默認(rèn)連接檢測提供程序使用 WinInet 動態(tài)鏈接庫 (DLL) 的 InternetGetConnectedState 方法來檢測連接狀態(tài)更改。例如,如果在運行該示例時,將網(wǎng)絡(luò)電纜從連接到網(wǎng)絡(luò)的計算機(jī)中拔出,則連接狀態(tài)將顯示更改為脫機(jī)模式。
檢測連接的提供程序是在應(yīng)用程序配置文件中指定的。有關(guān)在配置文件中指定提供程序的詳細(xì)信息,請參閱第 4 章“Offline Application Block 配置和安全注意事項”。
傳輸中的數(shù)據(jù):下載
“下載快速入門”說明如何下載參考數(shù)據(jù),以便應(yīng)用程序的用戶即使在應(yīng)用程序脫機(jī)時也可以繼續(xù)使用該應(yīng)用程序。
該快速入門的單屏幕中包含一個 Download 按鈕和一個用來顯示結(jié)果的網(wǎng)格。當(dāng)用戶單擊 Download 按鈕時,數(shù)據(jù)開始下載(從本地的 XML 文件讀取)并顯示在網(wǎng)絡(luò)中。
構(gòu)建下載快速入門
1. |
在 Visual Studio .NET 2003 中打開 DownloadQuickStart.sln 解決方案(位于 <installation location>\Offline\QuickStarts\src\<language>\DownloadQuickStart\ 文件夾中)。此外,您還可以按以下方式訪問“下載快速入門”:依次單擊 Start、All Programs、MicrosoftApplication Blocks for .NET、Offline、Quick Start Samples (C#) / (VB),然后單擊 DownloadQuickStart。 |
2. |
構(gòu)建解決方案。這將在 <installation location>\Offline\QuickStarts\src\<language>\DownloadQuickStart\ 文件夾下的 bin\<build configuration> 文件夾中生成 DownloadQuickstart.exe 程序集。 |
要啟動該快速入門,請雙擊 DownloadQuickStart.exe。
“下載快速入門”文件
這些快速入門文件位于 <installation location>\Offline\QuickStarts\src\<language>\DownloadQuickStart\ 文件夾中。表 3.3 說明了與該“下載快速入門”討論相關(guān)的文件。
表 3.3:“下載快速入門”文件
App.config |
指定應(yīng)用程序的配置信息。 |
DownloadQuickStartForm.cs \ .vb |
對應(yīng)于應(yīng)用程序的視圖 (UI)。 |
DownloadQuickStart.sln |
“下載快速入門”的解決方案文件。 |
Controller.cs \ .vb |
管理 UI 與連接管理器和服務(wù)代理之間的交互。它可以注冊連接狀態(tài)更改事件、創(chuàng)建 DownloadDataServiceAgent 并使用其進(jìn)行注冊、啟動下載,以及在數(shù)據(jù)可用時使用結(jié)果來更新視圖。 |
DownloadDataServiceAgent.cs \ .vb |
為用于下載工作項目的 OnlineProxy 和服務(wù)代理填充必要的上下文信息。它通過調(diào)用 DataLoaderManager 來啟動下載工作項目,并將結(jié)果返回到控制器。 |
OnlineProxy.cs \ .vb |
與遠(yuǎn)程服務(wù)進(jìn)行交互;在這種情況下,它是用于下載數(shù)據(jù)的本地文件。 |
DataSimulator.xml |
存儲聯(lián)機(jī)代理用于返回數(shù)據(jù)的虛擬數(shù)據(jù)。 |
詳細(xì)信息
該快速入門使用服務(wù)代理(DownloadDataServiceAgent)來啟動下載。DownloadDataServiceAgent 負(fù)責(zé)使用必要的上下文信息創(chuàng)建正確的 ReferenceDataDefinition,例如使用 OnlineProxyContext 創(chuàng)建 OnlineProxy 類以便從虛擬服務(wù)(為進(jìn)行說明而使用的一個本地方法調(diào)用)中檢索數(shù)據(jù),以及使用 ServiceAgentContext 將結(jié)果返回到控制器。該服務(wù)代理調(diào)用 DataLoaderManager 來啟動下載具有正確 ReferenceDataDefinition 值的參考數(shù)據(jù)。
OnlineProxy 負(fù)責(zé)檢索數(shù)據(jù),然后使用“參考數(shù)據(jù)管理”子系統(tǒng)將該數(shù)據(jù)存儲在“參考數(shù)據(jù)緩存”中。
默認(rèn)情況下,該快速入門使用 InMemoryQueueStorageProvider 來緩存數(shù)據(jù)。用于緩存的提供程序是在應(yīng)用程序的配置文件中指定的。有關(guān)如何在配置文件中指定提供程序的詳細(xì)信息,請參閱第 4 章“Offline Application Block 配置和安全注意事項”。
傳輸中的數(shù)據(jù):上載
“上載快速入門”說明如何將應(yīng)用程序用戶修改后的數(shù)據(jù)上載到服務(wù)器。該快速入門說明了如何使用該應(yīng)用程序塊的“消息數(shù)據(jù)管理”子系統(tǒng)。
該快速入門的基本窗體包含幾個字段、一個 Save 按鈕和一個 Cancel 按鈕。當(dāng)該快速入門啟動時,它會讀取包含數(shù)據(jù)的本地 XML 文件,并在窗體中顯示數(shù)據(jù)。當(dāng)用戶修改數(shù)據(jù)并單擊 Save 按鈕后,該數(shù)據(jù)會保存到本地 XML 文件中。這模擬了使用與遠(yuǎn)程服務(wù)進(jìn)行通信時所必需的所有組件。
構(gòu)建上載快速入門
1. |
在 Visual Studio .NET 2003 中打開 UploadQuickStart.sln 解決方案(位于 <installation location>\Offline\QuickStarts\src\<language>\UploadQuickStart\ 文件夾中)。此外,您還可以按以下方式訪問“上載快速入門”:依次單擊 Start、All Programs、Microsoft Application Blocks for .NET、Offline、Quick Start Samples (C#) / (VB),然后單擊 Upload Quick Start。 |
2. |
構(gòu)建解決方案。這將在 <installation location>\Offline\QuickStarts\src\<language>\UploadQuickStart\ 文件夾下的 bin\<build configuration> 文件夾中生成 UploadQuickstart.exe 程序集。 |
要啟動該快速入門,請雙擊 UploadQuickStart.exe。
“上載快速入門”文件
該快速入門文件位于 <installation location>\Offline\QuickStarts\src\<language>\UploadQuickStart\ 文件夾中。表 3.4 說明了與該“上載快速入門”討論相關(guān)的文件。
表 3.4:“上載快速入門”文件
App.config |
指定應(yīng)用程序的配置信息。 |
UploadQuickStartForm.cs \ .vb |
對應(yīng)于應(yīng)用程序的視圖 (UI)。 |
UploadQuickStart.sln |
“上載快速入門”的解決方案文件。 |
Controller.cs \ .vb |
管理 UI 與連接管理器和服務(wù)代理之間的交互。它可以注冊連接狀態(tài)更改事件、創(chuàng)建 UploadDataServiceAgent 并使用其進(jìn)行注冊,以及啟動上載。 |
UploadDataServiceAgent.cs \ .vb |
創(chuàng)建 Payload 并為用于上載工作項目的 OnlineProxy 和服務(wù)代理填充必要的上下文信息。它通過調(diào)用 QueueManager 來啟動上載工作項目信息,并將結(jié)果返回到控制器(如果需要)。 |
OnlineProxy.cs \ .vb |
與遠(yuǎn)程服務(wù)進(jìn)行交互。在這種情況下,它是用于上載數(shù)據(jù)的本地文件。 |
DataSimulator.xml |
存儲由聯(lián)機(jī)代理使用的虛擬數(shù)據(jù)。 |
詳細(xì)信息
該快速入門說明了“消息數(shù)據(jù)管理”子系統(tǒng)是如何工作的。當(dāng)該快速入門啟動時,它從本地 XML 文件中讀取數(shù)據(jù),并將數(shù)據(jù)顯示在窗體中。在用戶修改數(shù)據(jù)后單擊 Save 按鈕時,控制器將調(diào)用 UploadDataServiceAgent 對象的 UpdateWorkItem 方法。
UploadDataServiceAgent 對象可創(chuàng)建處理請求和提供必要上下文信息(例如 OnlineProxyContext 和 ServiceAgentContext 對象)所需的 Payload 對象。
創(chuàng)建 payload 后,UploadDataServiceAgent 對象會將它存儲在隊列中。Executor 對象從隊列中提取 payload,然后調(diào)用 OnlineProxy 對象來處理請求。
OnlineProxy 對象將更新本地 XML 文件中的數(shù)據(jù)。它還可以將該信息傳達(dá)到某個服務(wù)。它使用 ServiceAgentContext 對象將結(jié)果返回到控制器。
默認(rèn)情況下,該快速入門使用 InMemoryQueueStorageProvider 來排隊消息。用于排隊的提供程序是在應(yīng)用程序的配置文件中指定的。有關(guān)如何在配置文件中指定提供程序的詳細(xì)信息,請參閱第 4 章“Offline Application Block 配置和安全注意事項”。
綜合的端到端解決方案
“保險理賠快速入門”將本章前面部分和第 2 章中討論的所有概念結(jié)合在一起。該快速入門說明了一個使用 Web 服務(wù)運行在服務(wù)器(也可以是本地計算機(jī))上并提供業(yè)務(wù)功能的端到端應(yīng)用程序。
注 默認(rèn)情況下,在安裝該快速入門解決方案時,創(chuàng)建虛擬目錄的 Web 服務(wù)對象和腳本都會包含在其中。該腳本將在同一臺計算機(jī)上創(chuàng)建 Web 服務(wù)。作為一種備選方法,為了模擬更加真實的情形,您可以在其他計算機(jī)上創(chuàng)建 Web 服務(wù)。為此,您必須對解決方案文件進(jìn)行適當(dāng)?shù)母模瑫r也要更改 Web 參考。
該快速入門包括兩個部分:保險理賠客戶端(智能客戶端應(yīng)用程序)和保險理賠服務(wù)(Web 服務(wù))。
該客戶端為智能客戶端應(yīng)用程序,它能夠在脫機(jī)模式下工作。Web 服務(wù)能夠?qū)I(yè)務(wù)功能作為 Web 方法公開。
該用戶界面是單個屏幕,它結(jié)合了前面的快速入門中說明的所有用戶界面。屏幕上包含多個按鈕,可用于強(qiáng)制應(yīng)用程序聯(lián)機(jī)或脫機(jī),下載工作項目,以及保存在應(yīng)用程序聯(lián)機(jī)時要上載的工作項目。該快速入門使用了 Offline Application Block 的所有子系統(tǒng)。
您必須先創(chuàng)建 Web 服務(wù)和該 Web 服務(wù)所使用的數(shù)據(jù)庫,然后才能構(gòu)建該快速入門。
創(chuàng)建保險理賠 Web 服務(wù)及其使用的數(shù)據(jù)庫
1. |
要創(chuàng)建 Web 服務(wù),請運行 CreateInsuranceClaimsServiceVDir.vbs 腳本,該腳本位于 <installationlocation>\Offline\QuickStarts\src\<language>\InsuranceClaimsQuickStart\ 文件夾中。此外,您還可以按以下方式運行該腳本:依次單擊 Start、All Programs、MicrosoftApplication Blocks for .NET、Offline、Quick Start Samples (C#) / (VB),然后單擊 InstallInsurance Claims Service。 |
2. |
要創(chuàng)建數(shù)據(jù)庫,您必須將 MSDE 2000 安裝到計算機(jī)上。有關(guān)如何獲得并安裝 MSDE 2000 的說明,請參閱本章前面的“軟件要求”。 |
3. |
要創(chuàng)建數(shù)據(jù)庫,請運行 CreateWebServiceDB.cmd 腳本,該腳本位于 <installationlocation>\Offline\QuickStarts\src\<language>\InsuranceClaimsQuickStart\Database\ 文件夾中。在運行該腳本之前,您必須在 CreateWebServiceDB.cmd 腳本中更改 MSDE 2000 安裝的實例名。另外,如果 MSDE 2000 沒有安裝在默認(rèn)位置,您必須修改 InsuranceClaims.sql 腳本創(chuàng)建數(shù)據(jù)庫文件的位置。 |
請注意,您必須在安裝有 Web 服務(wù)的計算機(jī)上執(zhí)行前面的步驟。
要點 默認(rèn)情況下,MSDE 使用 Windows 身份驗證作為其登錄模式。Web 服務(wù)運行在名為 ASPNET 的默認(rèn)用戶下,您必須先授予該用戶權(quán)限并對其進(jìn)行配置,然后才能有效地使用 MSDE。有關(guān)如何授予權(quán)限和配置帳戶的說明,請參閱 .NET Framework SDK QuickStart Configuration Details 文檔。默認(rèn)情況下,該文檔位于:<運行 Visual Studio .NET 的計算機(jī)的 drive:\>Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Setup\html\ConfigDetails.htm。
但是,如果要將身份驗證從 Windows 模式更改為混合模式,您必須將以下注冊表項中的 LoginMode 十六進(jìn)制值從 1 更改為 2: My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\VSDOTNET\MSSQLServer。
在創(chuàng)建 Web 服務(wù)和數(shù)據(jù)庫后,請使用下列步驟來構(gòu)建快速入門。
構(gòu)建“保險理賠快速入門”
1. |
在 Visual Studio .NET 2003 中打開 InsuranceClaimsQuickStart.sln 解決方案(位于 <installation location>\Offline\QuickStarts\src<language>\InsuranceClaimsQuickStart\ 文件夾中)。此外,您還可以按以下方式訪問 Offline Application Block:依次單擊 Start、All Programs、Microsoft Application Blocks for .NET、Offline、Quick Start Samples (C#) / (VB),然后單擊 Insurance Claims Quick Start。 |
2. |
構(gòu)建解決方案。這將:
? |
在 <installation location>\Offline\QuickStarts\src\<language>\InsuranceClaimsQuickStart\InsuranceClaimsClient\ 文件夾下的 bin\<build configuration> 文件夾中生成 InsuranceClaimsClient.exe 程序集。 |
? |
在 \Offline\QuickStart\src\\InsuranceClaimsQuickStart\InsuranceClaimsService 文件夾下的 bin 文件夾中生成 InsuranceClaimsService.dll。 | |
3. |
在 Web 服務(wù)配置文件中更改 datasource 名稱,以指向正確的 datasource。 |
要啟動該快速入門,請雙擊 InsuranceClaimsQuickStart.exe。
“保險理賠快速入門”文件
該快速入門的解決方案位于 <installationlocation>\Offline\QuickStarts\src\<language>\ InsuranceClaimsQuickStart\InsuranceClaimsClient\ 文件夾中。表 3.4 和 3.5 說明了與該“保險理賠快速入門”討論相關(guān)的文件。
表 3.4:“保險理賠快速入門”文件
App.config |
指定應(yīng)用程序的配置信息。 |
InsuranceClaimsQuickStartForm.cs \ .vb |
對應(yīng)于應(yīng)用程序的視圖 (UI)。 |
Controller.cs \ .vb |
管理 UI 與連接管理器和服務(wù)代理之間的交互。它可以注冊連接狀態(tài)更改事件,并通過將更改傳遞到關(guān)聯(lián)的視圖來響應(yīng)更改。創(chuàng)建 InsuranceCliamsClientServiceAgent 并使用它進(jìn)行注冊,以啟動工作項目的下載和上載。 |
InsuranceClaimsClientServiceAgent.cs \ .vb |
啟動工作項目信息的下載和上載。它可創(chuàng)建 Payload,并將用于下載或上載工作項目的“聯(lián)機(jī)代理”和服務(wù)代理的必要上下文信息填充在其中,然后將結(jié)果返回到控制器。 |
OnlineProxy.cs \ .vb |
它負(fù)責(zé)通過與 Web 服務(wù)進(jìn)行通信來下載和上載數(shù)據(jù)。 |
表 3.5:保險理賠服務(wù)的 Web 服務(wù)文件
Web.config |
指定 Web 服務(wù)所使用的數(shù)據(jù)庫的位置。 |
InsuranceClaims.asmx,cs \ .vb |
公開要由客戶端應(yīng)用程序使用的 Web 方法。 |
詳細(xì)信息
有關(guān)如何執(zhí)行特定操作的信息,請參閱前面快速入門的詳細(xì)信息。例如,前面快速入門中的詳細(xì)信息說明了下載或上載工作項目所涉及的組件。
前面的快速入門和此快速入門的唯一不同之處在于 OnlineProxy 類的行為。要使這些快速入門保持在一個基本水平,前面快速入門中的 OnlineProxy 類要在本地檢索或更新數(shù)據(jù)。在這種情況下,該快速入門將與 Web 服務(wù)進(jìn)行交互,并演示了一個使用 Offline Application Block 的應(yīng)用程序的端到端方案。
使用 Offline Application Block
在使用 Offline Application Block 之前,您應(yīng)評估現(xiàn)有的提供程序,并確定是否要使用它們或創(chuàng)建新的提供程序。
根據(jù)應(yīng)用程序的要求評估提供程序
當(dāng)您要將脫機(jī)功能添加到應(yīng)用程序時,必須根據(jù)下列提供程序來確定應(yīng)用程序的要求:
? |
連接檢測提供程序 – Offline Block 提供了 WinInetDetectStrategy 用于連接管理。您應(yīng)評估它是否符合應(yīng)用程序的要求,或者您是否需要開發(fā)一個自定義提供程序。例如,您可能需要一個自定義提供程序來確定特定 Web 服務(wù)是否可用。 |
? |
緩存存儲提供程序 – Cache Block 提供了 MSDE、內(nèi)存、內(nèi)存映射文件、獨立存儲和 SQL Server 作為存儲提供程序。您應(yīng)評估所有這些提供程序是否適合您的應(yīng)用程序體系結(jié)構(gòu)。如果不適合,您需要創(chuàng)建一個自定義提供程序。例如,您可能需要將數(shù)據(jù)緩存到其他數(shù)據(jù)庫引擎中。 |
? |
隊列存儲提供程序 – Offline Block 提供了 MSDE、內(nèi)存、獨立存儲和消息隊列作為隊列存儲提供程序。您應(yīng)評估所有這些提供程序是否適合您的應(yīng)用程序體系結(jié)構(gòu)。如果不適合,您需要創(chuàng)建一個自定義提供程序。例如,您可能需要將數(shù)據(jù)排入其他隊列存儲提供程序。 |
加密提供程序– Common Block 提供了 Data Protection API 作為其加密提供程序。您應(yīng)根據(jù)組織的安全性要求來評估該提供程序是否適合您的應(yīng)用程序體系結(jié)構(gòu)。如果不適合,您需要創(chuàng)建一個自定義提供程序。
有關(guān)在應(yīng)用程序中使用提供程序或開發(fā)自己的自定義提供程序的信息,請參閱本章后面的“開發(fā)自己的提供程序”。
使用 Offline Block 的任務(wù)
在設(shè)計階段,您的組織會決定 Offline Application Block 要滿足的業(yè)務(wù)要求。某些要求會涉及到用戶界面 (UI) 和用戶界面控制器 (UIC)。這些用戶界面依賴于您組織所提出的業(yè)務(wù)要求,并決定聯(lián)機(jī)/脫機(jī)操作與用戶之間的交互。有關(guān) UIC 和用戶界面處理 (UIP) 的討論超出了本指南的范圍。
下表向您展示了在構(gòu)建具有脫機(jī)功能的應(yīng)用程序時,可能要執(zhí)行的常見任務(wù)。
開始
1. |
根據(jù)您開發(fā)的應(yīng)用程序,實現(xiàn)所需的應(yīng)用程序服務(wù)代理。確保應(yīng)用程序服務(wù)代理從 ServiceAgent 基類中派生。 |
2. |
實現(xiàn) OnlineProxy 組件(通常情況下,每個應(yīng)用程序服務(wù)代理都包含一個 OnlineProxy 組件,但不是必需的),它作為應(yīng)用程序與 Web 服務(wù)或與存儲和檢索信息的任何其他數(shù)據(jù)存儲區(qū)的接口。該組件包含用于訪問 Web 服務(wù)的特定于應(yīng)用程序的代碼。
注 有關(guān)詳細(xì)信息,您可以查看“保險理賠快速入門”的 Visual C# 或 Visual Basic 代碼,它位于 <installation location>\Offline\QuickStarts\src\<language>\InsuranceClaimsQuickStart\InsuranceClaimsClient 文件夾中。 |
開始訪問脫機(jī)功能
1. |
通過調(diào)用 OfflineBlockBuilder.Instance 屬性從 OfflineBlockBuilder 類創(chuàng)建一個塊生成器實例。您可以使用該 OfflineBlockBuilder 類構(gòu)建并訪問該應(yīng)用程序塊的所有組件。OfflineBlockBuilder 實例通常在 UIC 的構(gòu)造函數(shù)中獲得,如下面的代碼所示。
[C#] ...
private OfflineBlockBuilder offlineBlockBuilderInstance;
offlineBlockBuilderInstance = OfflineBlockBuilder.Instance;
...
[Visual Basic] ...
Private OfflineBlockBuilder offlineBlockBuilderInstance
offlineBlockBuilderInstance = OfflineBlockBuilder.Instance
...
|
2. |
使用“連接管理器”組件注冊聯(lián)機(jī)/脫機(jī)更改狀態(tài)事件,如下面的代碼所示。
[C#] ...
offlineBlockBuilderInstance.ConnectionManager.ConnectionState ChangedEvent += new ConnectionStateChangedEventHandler(ConnectionManager
ConnectionStateChangedEvent);
...
[Visual Basic] ...
offlineBlockBuilderInstance AddHandler offlineBlockBuilderInstance.ConnectionManager.ConnectionStateChangedEvent, AddressOf ConnectionManagerConnectionStateChangedEvent
...
|
3. |
為脫機(jī)客戶端創(chuàng)建一個“應(yīng)用程序服務(wù)代理”的實例。 |
4. |
使用“應(yīng)用程序服務(wù)代理”為各種事件注冊控制器。這些事件可通知最終用戶在后臺發(fā)生的更改。 |
5. |
如果原始的“應(yīng)用程序服務(wù)代理”不可用,則使用 FailsafeServiceAgent 注冊控制器以便處理錯誤。
[C#] ...
FailsafeServiceAgent refFailSafeServiceAgent = offlineBlockBuilderInstance.FailsafeServiceAgent;
refFailSafeServiceAgent.ErrorEvent += new MethodExecutionFailureReportEventHandler(
FailSafeServiceAgentErrorEvent);
...
[Visual Basic] ...
Dim refFailSafeServiceAgent As FailsafeServiceAgent = offlineBlockBuilderInstance.FailsafeServiceAgent
AddHandler refFailSafeServiceAgent.ErrorEvent, AddressOf FailSafeServiceAgentErrorEvent
...
|
6. |
調(diào)用 OfflineBlockBuilder 對象的 Start 方法來啟動“連接管理器”。該組件將輪詢連接狀態(tài),并在連接狀態(tài)發(fā)生更改時將事件發(fā)送到“服務(wù)代理”。
[C#] ...
offlineBlockBuilderInstance.Start() ;
...
[Visual Basic] ...
offlineBlockBuilderInstance = OfflineBlockBuilder.Start
...
|
7. |
如果要強(qiáng)制應(yīng)用程序在脫機(jī)模式下工作,請使用 ConnectionManager 組件的 GoOffline 方法,如下面的代碼所示。
[C#] ...
offlineBlockBuilderInstance.ConnectionManager.GoOffline() ;
...
[Visual Basic] ...
offlineBlockBuilderInstance.ConnectionManager.GoOffline()
...
|
8. |
如果要使應(yīng)用程序重新聯(lián)機(jī),請使用 ConnectionManager 組件的 GoOnline 方法,如下面的代碼所示。
[C#] ...
offlineBlockBuilderInstance.ConnectionManager.GoOnline() ;
...
[Visual Basic] ...
offlineBlockBuilderInstance.ConnectionManager.GoOnline()
...
|
使用“應(yīng)用程序服務(wù)代理”中的 DataLoaderManager 將數(shù)據(jù)加載到客戶端數(shù)據(jù)存儲區(qū)中
1. |
創(chuàng)建一個 OnlineProxyContext 對象,Executor 將使用它來調(diào)用 OnlineProxy 類上的方法。 |
2. |
創(chuàng)建一個 ServiceAgentContext 對象,ServiceAgentManager 將使用它在數(shù)據(jù)可用時調(diào)用“應(yīng)用程序服務(wù)代理”的 callback 方法。 |
3. |
使用 OnlineProxyContext 和 ServiceAgentContext 創(chuàng)建一個 ReferenceDataDefinition 對象。 |
4. |
調(diào)用 DataLoaderManager 對象的 LoadData 方法,以將數(shù)據(jù)下載請求排入隊列。 |
以下代碼闡釋了前面的步驟:
[C#]
...
string onlineProxyAssemblyName = "InsuranceClaimsClient";
string onlineProxyClassName = "Microsoft.ApplicationBlocks.SmartClient.Offline.QuickStarts.OnlineProxy";
string onlineProxyMethodName ="GetWorkItems";
string specificServiceAgentMethodTobeInvoked = "DataAvailableCallBack";
const int absoluteExpirationTime = 600;
string cacheKey = "SmartClient";
OnlineProxyContext onlineProxyMethodContext =
new OnlineProxyContext(onlineProxyAssemblyName,
onlineProxyClassName, onlineProxyMethodName);
ServiceAgentContext specificServiceAgentContext = new
ServiceAgentContext(specificServiceAgentMethodTobeInvoked);
ReferenceDataDefinition refDataDefination = new
ReferenceDataDefinition(cacheKey, absoluteExpirationTime,
onlineProxyMethodContext);
offlineBlockBuilderInstance.DataLoaderManager.LoadData(this.Guid,
specificServiceAgentContext, refDataDefination);
...
[Visual Basic]
...
Dim onlineProxyAssemblyName As String = "InsuranceClaimsClient"
Dim onlineProxyClassName As String =
"Microsoft.ApplicationBlocks.SmartClient.Offline.QuickStarts.OnlineProxy"
Dim onlineProxyMethodName As String = "GetWorkItems"
Dim specificServiceAgentMethodTobeInvoked As String =
"DataAvailableCallBack"
Const absoluteExpirationTime As Integer = 600
Dim cacheKey As String = "SmartClient"
Dim onlineProxyMethodContext As New
OnlineProxyContext(onlineProxyAssemblyName, onlineProxyClassName,
onlineProxyMethodName)
Dim specificServiceAgentContext As New
ServiceAgentContext(specificServiceAgentMethodTobeInvoked)
Dim refDataDefination As New ReferenceDataDefinition(cacheKey,
absoluteExpirationTime, onlineProxyMethodContext)
offlineBlockBuilderInstance.DataLoaderManager.LoadData(Me.Guid,
specificServiceAgentContext, refDataDefination)
...
使用“應(yīng)用程序服務(wù)代理”中的 QueueManager 將數(shù)據(jù)排入隊列
1. |
創(chuàng)建一個 OnlineProxyContext,以便調(diào)用 OnlineProxy 中的方法來下載或上載數(shù)據(jù)。 |
2. |
創(chuàng)建一個 ServiceAgentContext 對象,以便在數(shù)據(jù)可用或更新時調(diào)用“應(yīng)用程序服務(wù)代理”中的 callback 方法。 |
3. |
使用 OnlineProxyContext 和 ServiceAgentContext 方法創(chuàng)建一個新的 Payload 對象。 |
4. |
調(diào)用 PayloadConsumer 對象的 Enqueue 方法,以便將數(shù)據(jù)更新請求排入隊列。 |
以下代碼闡釋了前面的步驟:
[C#]
...
string onlineProxyAssemblyName = "InsuranceClaimsClient";
string onlineProxyClassName = "Microsoft.ApplicationBlocks.SmartClient.Offline.QuickStarts.OnlineProxy";
string onlineProxyMethodName ="UpdateWorkItem";
string specificServiceAgentMethodTobeInvoked = "DataUpdatedCallBack";
OnlineProxyContext onlineProxyMethodContext = new
OnlineProxyContext(onlineProxyAssemblyName, onlineProxyClassName,
onlineProxyMethodName);
ServiceAgentContext specificServiceAgentContext = new
ServiceAgentContext(specificServiceAgentMethodTobeInvoked);
Payload messageToEnqueue = new
Payload(onlineProxyMethodContext,this.Guid,
specificServiceAgentContext, changedAppData);
offlineBlockBuilderInstance.PayloadConsumer.Enqueue(messageToEnqueue);
...
[Visual Basic]
...
Dim onlineProxyAssemblyName As String = "InsuranceClaimsClient"
Dim onlineProxyClassName As String = "Microsoft.ApplicationBlocks.SmartClient.Offline.QuickStarts.OnlineProxy"
Dim onlineProxyMethodName As String = "UpdateWorkItem"
Dim specificServiceAgentMethodToInvoke As String = "DataUpdatedCallBack"
Dim onlineProxyMethodContext As New OnlineProxyContext(onlineProxyAssemblyName, onlineProxyClassName, onlineProxyMethodName)
Dim specificServiceAgentContext As New ServiceAgentContext(specificServiceAgentMethodToInvoke)
Dim messageToEnqueue As New Payload(onlineProxyMethodContext, _
Me.Guid, specificServiceAgentContext, _
changedAppData)
offlineBlockBuilderInstance.PayloadConsumer.Enqueue(messageToEnqueue)
開發(fā)自己的提供程序
至此,本章的重點一直是如何在不加修改的情況下將 Offline Application Block 用于您的應(yīng)用程序。設(shè)計的關(guān)鍵方面在于,您可以利用自己的提供程序來擴(kuò)展應(yīng)用程序塊。這些注意事項適用于您創(chuàng)建的任何提供程序。
開發(fā)自己的提供程序
1. |
創(chuàng)建一個實現(xiàn)子系統(tǒng)相應(yīng)接口的提供程序類:
? |
連接檢測提供程序 – 實現(xiàn) IConnectionDetectionStrategy 和 IProvider 接口。 |
? |
隊列存儲提供程序 – 實現(xiàn) IQueueStorageProvider 接口和 IProvider 接口。 |
? |
緩存存儲提供程序 – 實現(xiàn) ICacheStorage 提供程序接口。 | |
2. |
設(shè)置自定義提供程序的配置設(shè)置。每個子系統(tǒng)的提供程序都有獨立的配置區(qū)段。一般規(guī)則是:將區(qū)段中提供程序的通用屬性指定為特性,將自定義屬性指定為元素。 |
WinInetDetectionStrategy 提供程序說明了以前的設(shè)計注意事項如何表示“連接管理”子系統(tǒng)用于連接檢測的連接檢測提供程序。
WinInetDetectionStrategy 提供程序?qū)崿F(xiàn) IConnectionDetectionStrategy 和 IProvider 接口。這些提供程序的配置設(shè)置在 ConnectionManagerProviders 區(qū)段中被定義為 provider 元素,其 name 特性設(shè)置為 winINetDetectionStrategy。通用屬性被指定為特性,而自定義屬性 pollingInterval 被指定為 provider 元素的子元素。ConnectionManagerConfigurator 類可讀取配置信息,并創(chuàng)建該提供程序的一個實例。
設(shè)置 MSDE 和 MSMQ
在通過這些快速入門或任何自定義應(yīng)用程序使用 MSDE 和 MSMQ 提供程序之前,您需要相應(yīng)地設(shè)置 MSDE 和 MSMQ。
MSDE 設(shè)置
在將 MSDE 提供程序用于緩存或隊列之前,您必須配置 MSDE,以使其在客戶端計算機(jī)上正常工作。有關(guān)詳細(xì)信息,請參閱 <drive:\ >Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Samples\Setup\html\ConfigDetails.htm。
要配置 MSDE 提供程序以用于緩存,您必須創(chuàng)建該緩存塊所使用的必要表格和存儲過程。
創(chuàng)建表格和過程
1. |
在 <installation location>\Offline\Database\Cache 文件夾中找到 CreateCache.cmd 腳本。 |
2. |
打開 CreateCache.cmd 文件,并更改服務(wù)器名以指向正確的服務(wù)器。 |
3. |
運行 CreateCache.cmd 腳本。 |
在將 MSDE 提供程序用于隊列時,您必須創(chuàng)建“消息數(shù)據(jù)管理”子系統(tǒng)所使用的必要數(shù)據(jù)庫。
創(chuàng)建數(shù)據(jù)庫
1. |
在 <installation location>\Offline\Database\Queue 文件夾中找到 CreateQueueDB.cmd 腳本。 |
2. |
打開 CreateQueueDB.cmd 腳本,并更改服務(wù)器名以指向正確的服務(wù)器。 |
3. |
如果 MSDE 沒有安裝在 C: 驅(qū)動器上,您必須將 QueueDatabase.sql 文件中的路徑更改為 MSDE 的正確安裝路徑。 |
4. |
運行 CreateQueueDB.cmd 腳本。
注 要啟用用于緩存或隊列的 MSDE 提供程序,請轉(zhuǎn)到 App.config 文件,然后在各自的配置區(qū)段中更改 ConnectionString,以使其指向正確的 DataSource。 |
消息隊列
在將 MSMQ 提供程序用于隊列之前,您必須在本地計算機(jī)上配置“消息隊列”。有關(guān)詳細(xì)信息,請參閱 Microsoft Message Queuing (MSMQ) Center (http://www.Microsoft.com/windows2000/technologies/communications/msmq/default.asp)
如果不存在隊列,Offline Application Block 將創(chuàng)建一個。建議您在使用消息隊列提供程序之前,手動創(chuàng)建一個隊列。這可讓您根據(jù)組織的安全要求來靈活地配置“消息隊列”。以下步驟說明如何手動創(chuàng)建隊列。
手動創(chuàng)建專用隊列
1. |
右鍵單擊 MyComputer,然后單擊 Manage。 |
2. |
在 ComputerManagement 中,展開 MessageQueuing 文件夾。 |
3. |
在控制臺樹中,右鍵單擊 PrivateQueues 文件夾。 |
4. |
指向 New,然后單擊 Private Queue。 |
5. |
在 Name 中,為新隊列鍵入一個名稱,然后單擊 OK。
- 或者 -
要創(chuàng)建接受事務(wù)性消息的隊列,請鍵入一個名稱,選中 Transactional 復(fù)選框,然后單擊 OK。 |
6. |
展開 Private Queues。 |
7. |
右鍵單擊新創(chuàng)建的隊列并選擇 Properties。 |
8. |
為隊列添加常規(guī)配置和安全配置(例如安全策略或權(quán)限),然后單擊 OK。
注 您不能在 Outgoing Queues 或 System Queues 文件夾中創(chuàng)建隊列。這些隊列會自動創(chuàng)建。
在第 5 步中指定的隊列名應(yīng)添加到應(yīng)用程序的配置文件中,替換當(dāng)前的名稱。 |
有關(guān)部署要求和注意事項的詳細(xì)信息,請參閱第 4 章。
小結(jié)
Offline Application Block 為您提供了可用于將脫機(jī)功能添加到應(yīng)用程序的靈活設(shè)計和基礎(chǔ)結(jié)構(gòu)。在許多情況下,您可以將隨附的提供程序用于子系統(tǒng)。在某些情況下,您需要自定義這些提供程序或創(chuàng)建自己的提供程序。Offline Application Block 提供的這些快速入門為您提供了理解如何使用該應(yīng)用程序塊的有用起點。
更多信息
有關(guān) MSDE 的詳細(xì)信息,請參閱“Distributing the SQL Server Desktop Engine”。
有關(guān) SQL Server 的詳細(xì)信息,請參閱 SQL Server。
有關(guān)消息隊列的詳細(xì)信息,請參閱“Message Queuing (MSMQ) ”?
有關(guān) DPAPI 的詳細(xì)信息,請參閱 Windows Data Protection。
轉(zhuǎn)到原英文頁面