.net平臺WinForms應用程序舉例
一、系統需求
1、客戶(hù)端軟件要求
任何支持 .NET Framework 的操作系統
已安裝 SP1 的 .NET Framework
Internet Explorer 5.0.1 或更高版本
2、服務(wù)器軟件要求
自動(dòng)發(fā)布、更新服務(wù)器:Microsoft .NET Framework、MDAC2.7、IIS
二、運行方式
客戶(hù)端應用程序有兩種運行方式,不同的運行方式將直接影響以后的程序集發(fā)布和更新,以下將詳細解釋?zhuān)?/span>
1、網(wǎng)絡(luò )運行
.NET Framework 安裝提供了一個(gè)掛接 Internet Explorer 5.01 和更高版本以偵聽(tīng)所請求的 .NET 程序集的機制。在請求期間,可執行程序被下載到磁盤(pán)上稱(chēng)為程序集下載緩存的位置(Windows2000下為:C:\Documents and Settings\Administrator \Local Settings\Application Data\assembly下的某個(gè)子目錄中),同時(shí)該程序集本身以及它引用的其他相關(guān)程序集也被下載到本地IE緩存中(Windows2000下為:C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files)。然后,名為 IEExec 的進(jìn)程在具有有限安全設置的環(huán)境中啟動(dòng)該應用程序。例如:您可以在IE的地址欄中輸入一個(gè)已發(fā)布在web服務(wù)器上的.net可執行程序(http://SmartClient/MyApplication.Exe),IE并不會(huì )像其他文件一樣提示您另存為,而是直接執行該程序。
通過(guò)這種方式運行的應用程序擁有非常有限的安全設置(Internet權限集),該權限集中的權限包括:安全性、文件對話(huà)框、正在打印、獨立存儲文件、用戶(hù)界面。獨立存儲文件允許您的應用程序保存一些數據(Windows2000下為:C:\Documents and Settings\Administrator.TOMATO\Local Settings\Application Data\IsolatedStorage下的某個(gè)子目錄中,默認存儲空間大小為10MB),您可以通過(guò)System.IO.IsolatedStorage命名空間中的類(lèi)來(lái)保存數據而不會(huì )拋出安全異常。
舉例:
//按用戶(hù)、域、程序集獲取獨立存儲區
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User
| IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null);
//創(chuàng )建目錄
isoStore.CreateDirectory("TestDir");
//創(chuàng )建文件
IsolatedStorageFileStream isoStream1 = new IsolatedStorageFileStream
("TestDir//test.txt", FileMode.Create, isoStore);
//寫(xiě)入文件
StreamWriter writer = null;
writer = new StreamWriter(isoStream1);
writer.WriteLine("Hello Isolated Storage");
writer.Close();
isoStream1.Close();
為了讓你的智能應用程序運轉,你需要改變一些客戶(hù)端的安全設置,實(shí)質(zhì)上就是通知客戶(hù)端運行時(shí)間相信你的應用程序。一種方法就是將帶有你的程序集的站點(diǎn)添加到IE中可信任站點(diǎn)清單中,然后用安裝在你的管理工具目錄下的Microsoft .NET Framework Configuration工具來(lái)修改.NET Framework安全設置。
打開(kāi)Framework Configuration工具,選擇運行庫安全策略,然后選擇調整安全區域。對于受信任站點(diǎn)中指定的所有站點(diǎn),將信任級別調整到完全信任。作為選擇,你也可以用Framework Configuaration工具來(lái)修改安全策略,使它信任你的應用程序的個(gè)別程序集。右擊運行庫安全策略,選擇提高程序集的信任級別。
另一個(gè)可選擇的方法就是用代碼組,用Framework Configuration工具來(lái)幫助你提高應用系統的程序集的安全設置。你需要讓所有運用你的應用程序的桌面用戶(hù)做這種改變。為了幫助完成該任務(wù),Framework Configuration工具可以創(chuàng )建一個(gè)包含安全策略的Microsoft Installer (MSI)部署包。MSI安裝了應用程序加載器來(lái)分布你的應用程序需要的安全策略和加載器裝配。右擊運行庫安全策略,選擇創(chuàng )建部署包。
在網(wǎng)絡(luò )運行中,自動(dòng)更新是依靠IE的緩存機制來(lái)完成的。即當您需要下載并運行一個(gè)應用程序時(shí),IE將向Web服務(wù)器發(fā)送一個(gè)HTTP請求,該請求將獲取服務(wù)器上該程序的最新更新日期,如果該日期大于本地緩存的程序的日期或者本地緩存中不存在該程序,則從服務(wù)器上下載,否則直接使用本地緩存的程序。因此對于.net本身所具有的版本機制而言,不能作為版本更新的依據,只有在某個(gè)程序集文件引用另外一個(gè)程序集時(shí),才會(huì )由.net運行時(shí)依據自身的版本機制判斷版本號。
注意事項:
· 這種運行方式通常需要在運行前先設置用戶(hù)的安全策略。
· 加載應用組件時(shí),需要一個(gè)完整的url地址。
· 如果應用程序集中需要調用Web Service,該Web Service所在的服務(wù)器地址只能是最初下載程序集的服務(wù)器,可以構造一個(gè)重定向來(lái)解決該問(wèn)題。
· 某些文件可能不能通過(guò)自動(dòng)更新機制來(lái)完成版本更新,如:.Config應用程序的配置文件。
· 如果某些應用程序集文件的版本之間存在著(zhù)某些關(guān)聯(lián)性,則在某些情況下(如:網(wǎng)絡(luò )突然中斷)可能會(huì )出現不能正確加載并導致客戶(hù)端應用程序出錯的問(wèn)題。
· 如果用戶(hù)清空IE的緩存,則客戶(hù)端應用程序將不能離線(xiàn)工作。
2、本地運行
顧名思義,這種運行方式客戶(hù)端應用程序和其他應用組件并不在IE緩存和.net下載緩存中運行,需要用戶(hù)首先下載客戶(hù)端程序集并保存到一個(gè)本地目錄下,然后運行。這樣客戶(hù)端應用程序以及其他應用組件就擁有了所有的本地安全權限。
雖然不涉及安全性問(wèn)題,但應用組件以及程序的自動(dòng)更新如何實(shí)現?這就需要一個(gè)單獨的組件來(lái)完成這些任務(wù)。通過(guò)該鏈接地址可以下載一個(gè)非常完善且支持擴展的自動(dòng)更新組件(http://www.gotdotnet.com/team/windowsforms/DotNetUpdater.zip),該打包文件中提供了源碼、一些例子以及文檔。該更新組件使用HTTP-DAV技術(shù)來(lái)完成文件在服務(wù)器和客戶(hù)端之間的傳輸,因此對Web服務(wù)器有一定的限制,IIS5.0和新版本的Apache支持該功能。具體使用方式請參見(jiàn)內含文檔。
注意事項:
· 由于需要自己來(lái)實(shí)現更新和下載功能,所以會(huì )增加一定的工作量。(就是使用第三方的更新組件,也需要對其進(jìn)行完善以滿(mǎn)足自己的要求)
· 基本解決了網(wǎng)絡(luò )運行的缺點(diǎn),但需要每次更新時(shí)重新下載所有的文件(如果采用增量更新的話(huà),某些情況下會(huì )出現某個(gè)版本的文件被遺漏的問(wèn)題),會(huì )增加網(wǎng)絡(luò )流量。
· 應該在后臺線(xiàn)程中執行更新和下載,不影響用戶(hù)的正常操作。
聯(lián)系客服