<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鷹翔宇空

    學(xué)習(xí)和生活

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
    原文引自: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)容
    安裝 Offline Application Block 安裝 Offline Application Block
    Offline Application Block 快速入門 Offline Application Block 快速入門
    使用 Offline Application Block 使用 Offline Application Block
    開發(fā)自己的提供程序 開發(fā)自己的提供程序
    小結(jié) 小結(jié)
    更多信息 更多信息

    現(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)置提供程序。這些提供程序使用:

    ?

    Microsoft SQL Server 桌面引擎(也稱為 MSDE 2000)。有關(guān)安裝信息,請參閱 Microsoft 知識庫 (http://support.Microsoft.com/default.aspx?scid=KB;EN-US;Q324998) 中的文章 Q324998。

    ?

    Microsoft 消息隊列 (MSMQ)。有關(guān)安裝信息,請參閱 Microsoft 知識庫 (http://support.Microsoft.com/default.aspx?scid=kb;en-us;256096) 中的文章 Q256096。

    除其他提供程序之外,該應(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:依次單擊 StartAll ProgramsMicrosoft Application Blocks for .NETOffline,然后單擊 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 OfflineGo 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 ProgramsMicrosoftApplicationBlocks for .NET、OfflineQuickStartSamples (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\ 文件夾中)。此外,您還可以按以下方式訪問“下載快速入門”:依次單擊 StartAll ProgramsMicrosoftApplication Blocks for .NETOffline、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 ProgramsMicrosoft Application Blocks for .NETOffline、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)建處理請求和提供必要上下文信息(例如 OnlineProxyContextServiceAgentContext 對象)所需的 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、OfflineQuick 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:依次單擊 StartAll 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.

    使用 OnlineProxyContextServiceAgentContext 方法創(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) IConnectionDetectionStrategyIProvider 接口。

    ?

    隊列存儲提供程序 – 實現(xiàn) IQueueStorageProvider 接口和 IProvider 接口。

    ?

    緩存存儲提供程序 – 實現(xiàn) ICacheStorage 提供程序接口。

    2.

    設(shè)置自定義提供程序的配置設(shè)置。每個子系統(tǒng)的提供程序都有獨立的配置區(qū)段。一般規(guī)則是:將區(qū)段中提供程序的通用屬性指定為特性,將自定義屬性指定為元素。

    WinInetDetectionStrategy 提供程序說明了以前的設(shè)計注意事項如何表示“連接管理”子系統(tǒng)用于連接檢測的連接檢測提供程序。

    WinInetDetectionStrategy 提供程序?qū)崿F(xiàn) IConnectionDetectionStrategyIProvider 接口。這些提供程序的配置設(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 QueuesSystem 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)到原英文頁面

    posted on 2006-02-10 15:04 TrampEagle 閱讀(944) 評論(1)  編輯  收藏 所屬分類: 技術(shù)文摘

    Feedback

    # re: 使用 Offline Application Block 進(jìn)行開發(fā) 2009-04-02 20:17 樺林露
    你好。
    你能告訴我vs2005 如何具備offline application block 的功能嗎。如果不用這個 application block的話。
    謝謝。。
    急切??!  回復(fù)  更多評論
      

    主站蜘蛛池模板: 乱人伦中文视频在线观看免费| 中文字幕无码精品亚洲资源网久久| 国产亚洲精品国产福利在线观看| 9久9久女女免费精品视频在线观看 | 亚洲乱码中文字幕手机在线| 亚洲av永久无码一区二区三区| 天天干在线免费视频| 亚洲色大成网站www| 大陆一级毛片免费视频观看| 亚洲精品女同中文字幕| 老司机永久免费网站在线观看| 亚洲免费综合色在线视频| 日韩免费a级在线观看| 久久久久亚洲AV无码去区首| 四虎影视永久免费视频观看| 一级毛片免费播放男男| 亚洲中文字幕无码久久精品1| 日韩精品无码免费专区午夜不卡| 亚洲精选在线观看| 91黑丝国产线观看免费 | 亚洲成a∧人片在线观看无码| 日本一道在线日本一道高清不卡免费| 国产亚洲成在线播放va| 国产亚洲午夜高清国产拍精品 | 国产香蕉九九久久精品免费| 亚洲熟女综合色一区二区三区| 日本免费无遮挡吸乳视频电影| 国产成人综合久久精品亚洲| 中文字幕中韩乱码亚洲大片| 免费视频成人手机在线观看网址| 亚洲福利秒拍一区二区| 免费特级黄毛片在线成人观看| 麻豆安全免费网址入口| 亚洲av无码av制服另类专区| AV无码免费永久在线观看| 亚洲AV网一区二区三区| 国产亚洲真人做受在线观看| 57PAO成人国产永久免费视频| 国产成人综合久久精品亚洲| 亚洲AV第一页国产精品| 日韩在线天堂免费观看 |