第11講:提高Web應用程式的使用者體驗——使用智能用戶端開發分布式的Windows Forms應用程式

來源:互聯網
上載者:User

2005.3.8 歐岩亮

課程介紹

如何用智能用戶端技術構建Microsoft Windows Forms Application,並使其具有與Web應用程式一樣的延展性

 

基礎內容

熟悉.NET開發

理解什麼是多物理層次的概念

 

課程安排

什麼是智能用戶端

設計思想

偶爾連線應用程式程式

如何開發

代碼訪問安全

 

智能用戶端

“智能用戶端(Smart Client)”不是一個具體的技術:他融合了許多概念,設計方法和技術

智能用戶端結合了胖用戶端具有強大的使用者介面的優點和Web應用程式具有較強的延展性的優點

實現多個松耦合的物理層

通常:作為展示層Windows UI與作為商業邏輯層的Web Service(中介層)進行通訊

 

智能用戶端的特性

可以支援開發偶爾連線應用程式程式

真正的分散式處理

可以充分利用用戶端的硬體資源

可以充分利用中央部署的好處,方便的進行軟體升級

Microsoft Application Blocks可以有效協助你構建具有偶爾串連和自動升級特性的應用

 

示範一

一個簡單的智能用戶端應用程式

 

任何一個WindowsForm都能變成一個智能用戶端的應用程式。

把WindowsForm應用程式的exe檔案部署在IIS的虛擬目錄中

之後我們通過Http的方式訪問這個exe檔案,瀏覽器就會自動從IIS下載到本地的GAC當中,然後運行這個exe檔案

 

設計考慮

是否要讓中介層支援簡單的用戶端裝置(PDA,電話等)

是否要建立支援偶爾連線應用程式程式

部署問題

安全和代碼訪問安全

 

更複雜的應用

警告

安全

配置

代碼訪問安全

偶爾串連的考慮

部署問題

 

示範二

一個稍微複雜一些的智能用戶端應用程式

 

如果我們的應用程式試圖訪問我們的磁碟

如果是把這個應用程式部署到IIS伺服器上,在瀏覽器上運行,代碼會去試圖訪問本地磁碟,就會拋出一個從Internet來的程式沒有許可權訪問本地磁碟的異常。為瞭解決這個問題,我們可以通過組態工具來配置訪問安全。

我們可以建立一個安全性原則

我們選擇針對一個Url安全性原則做限定

配置安全性原則許可權,我們選擇完全信任

配置好安全性原則之後,再運行之前的應用程式,在本地建立檔案時就不會拋異常了。

 

Microsoft Offline Application Block

下載資料並在網路連接斷開的時候能夠繼續工作

能夠檢測到網路連接的情況

將串連狀態改變的情況通知給所有的註冊了的組件

下載並緩衝資料,在網路連接停用情況下允許應用程式繼續工作

當應用程式離線時,在本機存放區變化的資料

當網路連接恢複可用時將變化的資料與伺服器進行同步

 

:http://msdn.microsoft.com/library/en-us/dnpag/html/offline.asp

 

示範三

離線資料

ConnectionState是當前網路連接的狀態,如果是第一次登入,會等待下一次網路連接發生變化來改變屬性。

我們在建構函式裡加入了一個delegate,它通過OfflineBlockBuilder來監聽,當OfflineBlockBuilder發現網路連接狀態發生變化的時候,它會通知我們傳入的delegate,我們然後再根據網路狀態的變化來做事情。

Offline代碼的使用

Offline其實是把微軟提供的Offline做了簡單的封裝。下面是運行結果。

如果是Online模式,我們直接從資料庫讀取資訊,否則我們從Cache裡面擷取資料。Cache在快取資料的時候實際上用的就是Hash表。

Cache是自己編寫的一個類

我們會把Cache中的資料,串列化成位元據,儲存到檔案當中。當應用程式重新開啟的時候,會從檔案中讀取二進位資訊,反串列化成Cache對象。

我們可以選擇在資料層做判斷是否是Online,也可以在展示層或者是MVC中的Controller層做判斷。

我們還寫了一個RefreshCache函數,它實際上是建立了一個線程,來不斷在Online狀態緩衝最新資料。

AsynchRefreshCache做的事情是在Online的情況下主動從WebService上下載資料,然後把Cache裡緩衝的資料儲存到磁碟。

應用程式會不停地調用AsynchRefreshCache,因為我們建立了一個線程來做這件事。

 

部署選項

"No-touch"部署

部署在IIS伺服器上,通過瀏覽器輸入Url方式來臨時下載應用程式並運行,即第一個例子。這種方式沒有任何開銷,但是有一個限制,即下載下來的應用程式不一定能訪問本地資源,用戶端通過.NET架構需要進行一些安全性原則的配置。

Xcopy

如果要對應用程式進行複雜的配置,它就具有一定的限制。

"Bootstrpper"可以通過Internet下載所有需要的應用程式集

Installer

封裝成Setup檔案,用戶端用安裝包安裝

 

部署考慮

從瀏覽器下載.NET的Windows Forms應用程式

從Internet下載下來的應用程式,可能會造成安全隱患,.NET可能會影響應用程式中的一些功能

使用應用程式和Updater Application Block進行應用程式的升級不會有任何的限制

 

Updater Application Block

可以協助你:

實現用"Pull"機制升級.NET應用程式

伺服器端會把自己的版本和用戶端的軟體版本進行比對,如果伺服器端軟體版本較高,用戶端會自動去下載最新程式。

使用加密技術來驗證更新的應用程式集的有效性,驗證之後才使用更新了的應用程式集

應用程式的升級過程不需要使用者幹涉

自動的將應用程式升級到最新的版本

 

:http://www.microsoft.com/downloads/details.aspx?FamliyId=C6C17F3A-D957-4B17-9B97-296FB4927C30&displaylang=en

使用教程:http://dotnetjunkies.com/WebLog/bsblog/archive/2004/06/10/16118/aspx

 

示範

我們可以自己寫代碼來監視Updater工作的情況,並控制Updater的工作。

如果是Online,我們就執行個體化一個AutoUpdate。

當線程退出,那麼我們停止監測當前網路連接狀態

如果想開啟unsafe修飾,需要在項目的屬性裡面修改Allow Unsafe Code Blocks屬性

Updater的使用。我們首先將所有代碼拷貝到要部署的檔案中。

下面我們將示範如何?應用程式自動升級

如果是我們的應用程式需要升級,那麼需要先關閉應用程式,升級後重新開啟。如果是應用程式需要關閉,那麼關閉之後它線上程中已經消失了,是無法自己再開啟的。AppStart功能就是做了一個應用程式的外殼,用AppStart來啟動應用程式,如果應用程式有更新,那麼會通知AppStart,AppStart就會把應用程式關閉,然後重新開啟應用程式。

Manifest是用來編譯軟體工程版本的工具。

指定工程目錄

我們先要確定把伺服器項目的版本號碼更新,然後這裡的Version寫相同的最新版本號碼。

我們可以用這個工具產生私密金鑰和公開金鑰,並把私密金鑰匯入這個程式裡,對應用程式進行簽名。

配置好之後我們儲存這個配置。這時我們的應用程式裡面多了個Manifest檔案,我們一起打包部署。

部署的檔案中包含一個設定檔AppStart.exe.config

我們的項目中也要有相應配置

client表明將更新後的新的應用程式集放到baseDir目錄裡,server指定從xmlFile目錄下載Manifest,然後把它拷貝到xmlFileDest目錄裡面。拷貝之後會對比Manifest的應用程式版本和運行中的應用程式版本來決定是否升級程式。

運行程式,如果有新版本,會提示是否下載新版本。

升級後,AppStart.exe.config設定檔也會更新

 

總結

智能用戶端不是一個具體的技術,但是它是由很多的概念,設計方法和技術組成的

Windows Forms和Web Service給智能用戶端提供了.NET支援

智能用戶端需要考慮很多問題:勘探,代碼訪問安全,部署問題,偶爾串連的問題

Microsoft Application Block為智能用戶端的部署問題提供瞭解決方案

2010.10.18

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.