應(yīng)用系統(tǒng)自動升級 畢業(yè)設(shè)計論文
《應(yīng)用系統(tǒng)自動升級 畢業(yè)設(shè)計論文》由會員分享,可在線閱讀,更多相關(guān)《應(yīng)用系統(tǒng)自動升級 畢業(yè)設(shè)計論文(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 XX院本科畢業(yè)設(shè)計(論文) [應(yīng)用系統(tǒng)自動升級] 學(xué)生姓名: X X 學(xué)生學(xué)號: 院(系): 計算機(jī)學(xué)院 年級專業(yè): 07網(wǎng)絡(luò)工程 指導(dǎo)教師: XxX XXX教授 二〇一一年五月 XX本科畢業(yè)設(shè)計(論文) 摘 要 摘 要 隨著軟件需求的變化和技術(shù)競爭的加劇,軟件供應(yīng)商不斷提供更多更好的軟件產(chǎn)品和服務(wù)來滿足日益變化的市場需要。對于通用的軟件產(chǎn)品來說,用戶數(shù)量眾
2、多,更新頻繁,運行的軟件平臺和網(wǎng)絡(luò)環(huán)境多,因此在每次新產(chǎn)品發(fā)布時如何簡單、高效地幫助用戶更新?lián)Q代軟件產(chǎn)品,成為領(lǐng)先的軟件供應(yīng)商關(guān)注的課題。對商品化軟件來說,良好的售后服務(wù)是至關(guān)重要的,而軟件升級是軟件售后服務(wù)中非常重要的一個部分。 在平時開發(fā)C/S系統(tǒng)時,大家都清楚C/S系統(tǒng)的最大弱點就是不利于維護(hù),當(dāng)客戶端程序更新時不得不到每個用戶的機(jī)子上去部署。雖然微軟的Smart Client技術(shù)使得傳統(tǒng)的C/S系統(tǒng)更加利于維護(hù),但現(xiàn)在還不打算采用。Smart Client是一個不同于以往常見的應(yīng)用程序的比較復(fù)雜的系統(tǒng),所以它的調(diào)試技術(shù)也比以前復(fù)雜的多,至今仍然是一個難點。因為,開發(fā)的代碼大都不是一個
3、可執(zhí)行的應(yīng)用程序,更多的是dll庫文件,這樣就無法直接調(diào)試,必須得寫出一個調(diào)試程序來進(jìn)行間接調(diào)試。同時因為松耦合和網(wǎng)絡(luò)加載的原因,使得本地緊耦合調(diào)試和實際運行情況多少有些不同。這一點還沒有有效的解決辦法。盡管VS2005 推出了Click Once,也具有實現(xiàn)自動更新的功能,但其可控性差和不夠靈活等缺陷,導(dǎo)致其實際用途較少。而Updater Application Block組件的配置和使用相似地麻煩,所以我們選擇采用傳統(tǒng)的自動更新的程序。 自動更新的步驟就是客戶端檢查服務(wù)器端的版本號是否比本地的新,如果不同于本地版本,就向服務(wù)器請求下載文件。在這里我們服務(wù)器端部署的升級文件是任何人都可以下
4、載的。從上面的描述可以看出,其實所有系統(tǒng)自動升級的步驟都是類似的,所以做一個通用的自動升級程序能夠減少不少麻煩。。 關(guān)鍵詞 自動更新,服務(wù)器端,版本號 XX本科畢業(yè)設(shè)計(論文) ABSTRACT ABSTRACT With the increasing changes of the Software requirements and the competition in technology, Software vendors try to supply more
5、and more convenient software and service to meet the market. For general software products, more and more users are involved, they have to adapt to all kinds of software platform and network environment, and they have to be updated frequently. So it’s very important for the Software vendors to think
6、 about how to supply more simple and efficient products. As is known to all, it’s hard to maintain the C/S system. Once the Client updated, we have to setup the software for every computer to make them update. Though Smart Client from Microsoft made it very easy to realize, I ignore it. Smart Clien
7、t is a more complex system than that we have seen .Which makes it become very difficult to debug the code. When we code with the help of Smart Client, it will produce some DDL files, which cannot be debug like applications. Moreover, there are some difficult cases existed because of loose coupling a
8、nd loading. We have not overcome it so far. Though Microsoft have released VS2005 which contained a component named Click Once, which could realize update. Unluckily, it has some defects such as bad controlling and bad flexible. May you will think about Updater Application Block, you got it, but it
9、s trivial configurations make us tired. And it’s very inconvenient to configure and use the Updater Application Block Component. So we choose to adopt traditional automatic updates program. So in the end, I select the traditional strategy to complete this topic. Automatic updates procedure is to c
10、lient check when server version number is newer than that of client, and deciding whether to update depend on the results. Every one could download the file which we deployed on the server. According to the description above, it is similar to all kinds of Automatic update software. So if we design g
11、eneral purpose software, it will reduce lots of trouble. Key words automatic updates,server, version I XX院本科畢業(yè)設(shè)計(論文) 目 錄 目 錄 摘 要 I ABSTRACT II 1 緒論 1 1.1自動升級的背景 1 1.2自動更新系統(tǒng)的研發(fā)與現(xiàn)狀 1 1.3 什么是軟件升級 3 1.4 軟件升級的意義 3 1.5 軟件升級的現(xiàn)狀 4
12、1.6 應(yīng)用程序的升級 4 1.6.1獲得最新版本的軟件 4 1.6.2對應(yīng)用軟件進(jìn)行升級 5 1.7 常見的升級方式 6 1.8 軟件升級原理 7 1.9 論文主要的工作內(nèi)容 7 2 相關(guān)開發(fā)技術(shù)和工具介紹 8 2.1 Windows應(yīng)用程序介紹 8 2.2 .NET Framework簡介 8 2.3 ASP.NET的發(fā)展基礎(chǔ) 9 2.4 C#編程語言 10 2.5 開發(fā)平臺 11 2.6 通信協(xié)議 11 2.7 相關(guān)知識 12 2.7.1 委派 12 2.7.2 事件 12 2.7.3 線程 13 2.7.4 泛型 13 2.7.5 裝箱與拆箱 14
13、 3 需求分析 15 3.1 應(yīng)用需求分析 15 3.2 系統(tǒng)功能需求 16 3.2.1系統(tǒng)主要功能分析 16 3.2.2自動升級原理圖 17 4 系統(tǒng)設(shè)計 18 4.1 系統(tǒng)設(shè)計思想 18 4.2 系統(tǒng)目標(biāo) 20 5 系統(tǒng)實現(xiàn) 21 5.1 服務(wù)器端 21 5.1.1 IIS的安裝與配置 21 5.1.2 啟動Internet信息服務(wù)器(IIS) 21 5.1.3 服務(wù)端配置文件格式 22 5.1.3 服務(wù)端文件的配置過程 22 5.1.4 瀏覽器訪問測試 24 5.1.5上傳文件到服務(wù)器端 25 5.2 客戶端 26 5.2.1 客戶端配置文件格式
14、 26 5.3 代碼設(shè)計 26 6 結(jié)論 33 參 考 文 獻(xiàn) 35 致 謝 36 III XX本科畢業(yè)設(shè)計(論文) 1 緒論 1 緒論 1.1自動升級的背景 即便擁有多年軟件開發(fā)經(jīng)驗的團(tuán)隊也不敢保證自己所做的軟件是完美的,它或多或少會存在一些缺陷,甚至?xí)嬖谥T多的漏洞。在軟件的使用中,也會不斷發(fā)現(xiàn)更多的問題,這些問題可能是軟件本身的問題,也可能是運行的軟硬件環(huán)境變化造成的,而且用戶也會對軟件不斷地提出新的要求。所以,軟件的升級是不可避免的。對于用戶而言,軟件升
15、級可以修補漏洞,確保數(shù)據(jù)安全;可以更新和增加新功能。對于軟件開發(fā)商而言,為了滿足市場需求,也需要不斷地升級自己的軟件,力求做得更好。 相信有許多程序員都喜歡用Winform做開發(fā)吧?因為Winform相對Webform而言,優(yōu)點是,功能更強大,編程更方便。但是它的缺點,就是軟件的安裝及維護(hù)是相當(dāng)麻煩的,要實現(xiàn)軟件更新,需要到客戶端一臺一臺地升級。 當(dāng)然,實現(xiàn)應(yīng)用系統(tǒng)自動更新功能有很多方法,但是他們的基本原理是大同小異的。自動更新的步驟就是客戶端檢查服務(wù)器端的版本號是否比本地的高,如果高于本地版本,就向服務(wù)器請求下載文件。在這里我們服務(wù)器端部署的升級文件是任何人都可以下載的。從上面的描述可以
16、看出,其實所有系統(tǒng)自動升級的步驟都是類似的,所以做一個通用的自動升級程序就可以減少不少麻煩。 實現(xiàn)軟件的自動升級存在的困難: 第一,為了查找遠(yuǎn)程服務(wù)器上的更新,應(yīng)用程序必須有查詢網(wǎng)絡(luò)的途徑,這需要網(wǎng)絡(luò)編程、簡單的應(yīng)用程序與服務(wù)器通訊的協(xié)議。 第二是下載。下載看起來不需要考慮聯(lián)網(wǎng)的問題,但要考慮下載用戶請求的文件,以及在沒有用戶同意時下載大文件。友好的自動更新應(yīng)用程序?qū)⑹褂檬S嗟膸捪螺d更新。這聽起來簡單,但卻是一個技術(shù)難題,幸運的是已經(jīng)有了解決方法。 第三個考慮因素是使用新版應(yīng)用程序更換原應(yīng)用程序的過程。這個問題比較有趣,因為它要求代碼運行時將自己從系統(tǒng)刪除,有多種辦法可以實現(xiàn)該功能,
17、本文程序主要通過比較新舊版本的版本號來實現(xiàn)替換新版本應(yīng)用程序的功能。 1.2自動更新系統(tǒng)的研發(fā)與現(xiàn)狀 自動更新特性是通用軟件的常用特性,當(dāng)前國內(nèi)外各大軟件提供商都對軟件更新系統(tǒng)投入相當(dāng)?shù)年P(guān)注和研發(fā)力量,并且已有一些軟件產(chǎn)品已經(jīng)發(fā)布。 經(jīng)研究,當(dāng)前市場上存在的更新工具主要有四種: 1)基于Client/Server 架構(gòu)的自動更新工具 此類工具界面嵌入在產(chǎn)品程序中或與產(chǎn)品程序集成,用戶啟動產(chǎn)品客戶端,程序搜索可更新的軟件包,下載后自動安裝。代表產(chǎn)品有金山毒霸和諾頓(Norton Antivirus)。 以金山毒霸為例,其產(chǎn)品特性如下: u 支持20多個服務(wù)器,從中選擇最快的服
18、務(wù)器下載 u 升級工具嵌入在產(chǎn)品中,升級界面為定制的向?qū)浇缑? u 更新前通過檢測分析來確定要下載和更新的內(nèi)容 u 文件支持HTTP下載,不支持FTP下載,支持代理服務(wù)器,不支持?jǐn)帱c續(xù)傳 u 更新過程中若有失敗則可以撤銷更新 u 支持更新自身程序 u 更新結(jié)束時能重啟軟件 2)直接使用安裝程序的自動更新系統(tǒng) 此類系統(tǒng)能自動檢測是否有更新,后臺下載安裝程序,用戶運行安裝程序的形式來安裝,一般用于升級補丁程序。代表產(chǎn)品有Microsoft Windows Update工具。其產(chǎn)品特性有: u 支持單服務(wù)器,支持但產(chǎn)品 u 后臺下載安裝程序,安裝程序是一個完整的可執(zhí)行程序包,下載
19、時用戶無需操作,下載完成通知用戶 u 采用系統(tǒng)默認(rèn)的網(wǎng)絡(luò)設(shè)置下載,由于安裝包文件會比較多,下載量大,支持?jǐn)帱c續(xù)傳 u 用戶運行安裝程序,安裝過程就是安裝某個更新包,安裝后可卸載更新包 u 安裝結(jié)束時能重啟軟件 此特性演變成Microsoft.NET中的智能更新服務(wù) 3)基于Web/ActiveX的自動更新工具 此系統(tǒng)的界面為WEB頁面,用戶首先接受下載一個具有更新功能的ActiveX控件,此ActiveX控件自動運行,搜索下載可更新的內(nèi)容,并在下載后自動更新。代表產(chǎn)品有Microsoft Platform SDK Update工具。 u 界面是WEB頁面進(jìn)行,通過運行Active
20、控件執(zhí)行功能 u 一個產(chǎn)品一個站點,完全定制的更新內(nèi)容 u 后臺自動檢測、下載和安裝軟件 u 采用瀏覽器的網(wǎng)絡(luò)設(shè)置,下載不支持?jǐn)帱c續(xù)傳 u 更新失敗不可撤消更新 u 更新后能重啟的軟件 4)采用后臺服務(wù)形式的自動更新工具 此系統(tǒng)采用后臺服務(wù)的方式運行在用戶計算機(jī),服務(wù)程序自動檢測、下載和安裝軟件。如Install Shield的自動更新服務(wù)系統(tǒng)。 制作產(chǎn)品安裝程序時設(shè)定更新服務(wù)信息,安裝產(chǎn)品時將服務(wù)程序安裝到用戶計算機(jī),安裝程序和更新服務(wù)程序集成得比較好 u 系統(tǒng)啟動服務(wù)程序,后臺檢測、下載和安裝軟件包,沒有更新界面 u 采用瀏覽器的網(wǎng)絡(luò)設(shè)置,下載支持?jǐn)帱c續(xù)傳 u 更新失
21、敗可撤消更新 u 更新后能重啟的軟件 1.3 什么是軟件升級 軟件產(chǎn)品技術(shù)復(fù)雜,功能需要不斷完善,要不斷更新、修改,這就是軟件升級。對于軟件版本,前一部分?jǐn)?shù)字的遞增表示該軟件產(chǎn)品有較大的,往往帶有實質(zhì)性的改進(jìn),后一部分?jǐn)?shù)字的遞增則表示只有局部的、較小的改進(jìn),通常是對較小的bug或安全性的修改或?qū)π阅艿妮^小的提高。 為了為維護(hù)軟件項目,我們提出了對版本進(jìn)行管理控制的要求。而對于用戶來說,版本直接體現(xiàn)在版本號命名上。那么,如何對版本號進(jìn)行命名呢?我查了許多資料,希望能夠解釋的比較具體。下面讓我們看一下比較普遍的三種命名格式。 GNU風(fēng)格的版本號命名格式:主版本號.子版本號[.修正版本
22、號.[編譯版本號]] 示例:1.2.1, 2.0, 5.0.0 Windows 風(fēng)格的版本號命名格式:主版本號.子版本號[修正版本號.[編譯版本號]] .NET Framework 風(fēng)格版本號命名格式:主版本號.子版本號[.編譯版本號[.修正版本號]] 在本文中,軟件升級包括安裝計算機(jī)上已有軟件的新的版本、從原版本上升到新的版本、對現(xiàn)有軟件的更新。 1.4 軟件升級的意義 面對目前計算機(jī)應(yīng)用的普及,越來越多的行業(yè)離不開計算機(jī),這無疑給計算機(jī)軟件開發(fā)人員和軟件供應(yīng)商帶來很大壓力。對計算機(jī)軟件行業(yè)而言,計算機(jī)技術(shù)的普及既是挑戰(zhàn)也是機(jī)遇。必須承認(rèn),軟件供應(yīng)商已經(jīng)為我們提供了優(yōu)質(zhì)的軟件
23、和服務(wù),但這仍然不能滿足用戶們的需求。幾乎同時在每個行業(yè)的每臺計算機(jī)上都同時安裝了數(shù)十款軟件,對于用戶數(shù)量較多的企業(yè),寄希望于系統(tǒng)維護(hù)人員去更新每一臺計算機(jī)上的應(yīng)用軟件簡直是天方夜譚。他們更希望軟件供應(yīng)商能夠提供帶有自動更新功能的軟件,這樣似乎更人性化。 面對這些需求,本課題試圖尋求一種Windows 應(yīng)用系統(tǒng)從開發(fā)和變化的角度來適應(yīng)市場需求和工程領(lǐng)域的實際需求,以減少系統(tǒng)維護(hù)人員的壓力,提高他們的工作效率,以求得最大的經(jīng)濟(jì)效益和社會效益。 在軟件工程中,軟件升級屬于軟件維護(hù)階段。通常有四類維護(hù)活動:改正性維護(hù),即診斷和改正軟件使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變
24、化;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使他更加完善;預(yù)防性維護(hù),即修改軟件為將來的維護(hù)活動預(yù)先作準(zhǔn)備。軟件維護(hù)是軟件生命周期中的一個重要組成部分,軟件維護(hù)的成本高達(dá)開發(fā)成本的四倍左右。每一次維護(hù)活動以后,軟件商通常會修改軟件的版本號,即又有了一個新的版本,如果用戶要想使用新的版本,就必須要升級。由此可以看出,軟件升級具有重大意義:可以改正軟件中的錯誤,適應(yīng)新的軟硬件環(huán)境,完善軟件功能,以及為以后的升級做準(zhǔn)備。 軟件升級分為兩種,一種是從一個版本升級到另一個版本,軟件版本號的第一數(shù)字發(fā)生變化,這種升級一般是對原版本有了較大的改進(jìn);另外一種是對軟件的副版本號發(fā)生變化,這種升級只對軟件做了
25、較小的改進(jìn),我們叫做打補丁。 1.5 軟件升級的現(xiàn)狀 各個軟件廠家都在不斷推出自己軟件產(chǎn)品的新版本,從而增加軟件的功能,補充產(chǎn)品的性能,補全漏洞,提高競爭能力。用戶為了自己使用的方便和避免各種各樣由于軟件問題引起的錯誤,也需要對常用軟件進(jìn)行更新。我們常見的需要升級的軟件有殺毒軟件、驅(qū)動程序、操作系統(tǒng),瀏覽器以及第三方軟件應(yīng)用程序等。 1.6 應(yīng)用程序的升級 應(yīng)用軟件包括我們常用的辦公軟件,如WinZip、WinRar、Office軟件等。還包括在某一行業(yè)通用軟件,以及某單位自行開發(fā)的軟件或請軟件開發(fā)人員開發(fā)的軟件,如建筑行業(yè)的預(yù)算軟件。 1.6.1獲得最新版本的軟件 當(dāng)我們
26、熟悉的軟件推出新的版本可以通過以下方式獲得: 1)商業(yè)軟件 找到原經(jīng)銷商付費升級; 免費派送; 2)免費軟件 網(wǎng)上免費下載升級,如微軟很多產(chǎn)品可以直接到Microsoft官方網(wǎng)站下載。 3)共享軟件 可以從軟件主頁上下載試用版,注冊用戶會有E-mail通知。 1.6.2對應(yīng)用軟件進(jìn)行升級 應(yīng)用軟件的升級分為以下四種情況: 1)需要刪除舊版本的軟件。有些軟件升級需要刪除原來的舊版本。如著名的DirectX 8.0強化了圖像質(zhì)量和音頻效果,但如果你已經(jīng)安裝過它的測試版,那么在升級時就會無法安裝,需要卸載原來安裝的版本。 2)需要無后臺程序運行的軟件。有許多軟件在安裝時要求無
27、后臺程序同時運行。雖然我們看到“建議在安裝時關(guān)閉其他應(yīng)用程序”的提示總是不太在意,但有的軟件卻對這方面比較敏感,如智能陳橋五筆輸入軟件,他在安裝時不允許舊版本的陳橋五筆處于運行狀態(tài)。 3)升級時需要相應(yīng)支持的軟件。有一些軟件安裝需要其他文件的支持,如游戲程序一般需要較高版本的DirectX的支持,還有一些數(shù)據(jù)庫軟件需要VB、VC運行庫或ODBC的支持等,若安裝程序檢測到條件不足時,安裝程序就會無法進(jìn)行下去。這時可以到原下載網(wǎng)站去下載支持文件或者根據(jù)提示信息重新安裝有關(guān)的軟件。 4)只需要進(jìn)行在線更新的軟件按。有些軟件可以自動鏈接到廠家或軟件公司的網(wǎng)站看是否有新的更新的版本,如果有新的版本就
28、進(jìn)行升級。 總的來說,絕大部分應(yīng)軟件升級的要求并不高,只要直接執(zhí)行Setup.exe文件即可,有些軟件的升級更簡單,只需要將相應(yīng)文件拷貝到原安裝路徑下覆蓋原文件即可。本文采用的就是這種最簡單的方案。采用通用的方法,即比較Client和Server兩端配置文件中版本號的大大小來決定是否有更新,這種思路很通用。 1.7 常見的升級方式 常見的升級方式有以下幾種,每種方式都有自己的特點,用戶可以根據(jù)自己的情況選擇不同的升級方式: 1)下載升級包 從軟件商的網(wǎng)站或其他網(wǎng)站下載軟件升級包,然后運行其中的可執(zhí)行文件,就會對原有軟件進(jìn)行升級。比如我們常會在殺毒軟件的網(wǎng)站上看到各種各樣的升級包
29、。 這種升級方式比較簡單,特別適合本機(jī)不能上網(wǎng)的用戶,如果幾臺計算機(jī)安裝了同一款軟件的同一版本而相互之間又沒有聯(lián)網(wǎng)的情況下,此種升級方式是比較合適的。 2)在線升級 這種方式可謂“自動化”升級,用戶只需要保證網(wǎng)絡(luò)是暢通的,點擊升級軟件界面上的“在線升級”或“自動升級”按鈕,軟件就會自動連接到相應(yīng)的網(wǎng)站上去,檢查本機(jī)上已安裝的組件,然后列出網(wǎng)站上可更新的內(nèi)容。如果用戶點擊“確認(rèn)升級”按鈕,就會自動更新本機(jī)已安裝的軟件,然后重新啟動該軟件,就是現(xiàn)在的最新版本了。這種升級方式是最簡單的,用戶只需要按照提示一步一步進(jìn)行就可以了,即使對電腦不熟悉的人都可以完成軟件的升級,但是必須保證網(wǎng)絡(luò)是暢通的,
30、如果網(wǎng)絡(luò)中斷了,那么升級失敗,軟件還是原來的版本,可以在網(wǎng)絡(luò)通暢的時候重新升級。 3)局域網(wǎng)升級 有些軟件會提供從局域網(wǎng)上升級的功能。如金山毒霸。首先將服務(wù)器上的金山毒霸升級到最新版本。然后將服務(wù)器上的金山毒霸安裝目錄設(shè)置為只讀共享,并將局域網(wǎng)其他機(jī)器上的獨霸升級程序設(shè)置為“本地、局域網(wǎng)上升級”,升級目錄設(shè)為服務(wù)器上獨霸安裝目錄下的Update目錄,選定路徑就可以自動升級了。 這種方式對于網(wǎng)絡(luò)管理員是很省時省力的,但是目前很多軟件沒有提供這種升級方式,所以網(wǎng)絡(luò)管理員通常采用Ghost進(jìn)行備份安裝。 4)覆蓋安裝 此升級方式就是直接將新版本軟件覆蓋舊版本軟件,從而達(dá)到升級的效果。但是需
31、要注意的是新本跟舊版軟件的安裝目錄必須一樣,否則升級不成功。如我們常常從一種操作系統(tǒng)升級到另外一種操作系統(tǒng)。這種升級方式的好處是不管是系統(tǒng)軟件還是應(yīng)用軟件,升級后都保持原來的設(shè)置,不需要重新設(shè)置,特別是對操作系統(tǒng),采用這種升級方式我們不需要重新安裝大量的應(yīng)用程序。 5)移除后安裝 這是很多軟件作者建議的安裝方式,如果使用第四種方法升級失敗了,那么建議用戶使用這種方式。這種方式將原版本刪除后再安裝新版本,可以保證安裝的完整、準(zhǔn)確。在移除舊版本的軟件之前,如果軟件帶有數(shù)據(jù)庫,或其他用戶資料,則應(yīng)保存數(shù)據(jù)庫的內(nèi)容或?qū)?shù)據(jù)導(dǎo)出,安裝完新版本之后再導(dǎo)入,也有軟件升級時提供了數(shù)據(jù)自動備份的功能,但是目
32、前這種軟件很少。由于是完整的安裝,這種方式需要的時間比較長。本文也是采取這種方式。 1.8 軟件升級原理 雖然升級方式多種多樣,但是他們的原理是大同小異的,就是把新版本的軟件與計算機(jī)上已安裝的軟件進(jìn)行對比,然后將舊版本中欲更新的部分換成新版本軟件中相應(yīng)的部分。例如升級殺毒軟件就是更新病毒庫,有經(jīng)驗的用戶甚至可以在病毒庫中加入新的病毒代碼,從而預(yù)防新的病毒。在更新硬件的驅(qū)動程序時,就是用新的INF文件代替系統(tǒng)中舊的INF文件(在Windows 2000系統(tǒng)中,系統(tǒng)盤的WINNT\INF中存放的全是驅(qū)動程序文件,在其他系統(tǒng)中,驅(qū)動程序存放在系統(tǒng)盤的Windows\INF文件夾中)。在進(jìn)行完
33、全安裝時,則進(jìn)行了較大的改動。我們也可以看成是用新的部分代替原軟件中舊的部分,只是替換的部分很多。 為了便于升級,很多軟件采用了模塊化設(shè)計的思想,這也是軟件發(fā)展的方向。任何整體都是由部分組成的,將一個軟件分為若干個功能模塊,每個模塊完成一個任務(wù),那么在升級的時候?qū)ο鄳?yīng)的模塊進(jìn)行升級,而不影響其他部分。 1.9 論文主要的工作內(nèi)容 本論文主要的工作內(nèi)容包括: 1. 分析課題的可行性和需求分析說明; 2. 根據(jù)選定的開發(fā)方案,對解決方案的功能模塊進(jìn)行分析設(shè)計,以及根據(jù)功能模塊的需要詳細(xì)設(shè)計出數(shù)據(jù)存儲方式和存儲結(jié)構(gòu),最后根據(jù)系統(tǒng)實現(xiàn)的功能結(jié)合系統(tǒng)數(shù)據(jù)存儲方式選擇相關(guān)技術(shù)和平臺; 3.
34、 根據(jù)制定的開發(fā)方案總體設(shè)計和詳細(xì)設(shè)計的精神,開發(fā)出相應(yīng)的應(yīng)用程序,并實現(xiàn)課題預(yù)期的功能和目標(biāo); 37 XX院本科畢業(yè)設(shè)計(論文) 2 相關(guān)開發(fā)技術(shù)和工具介紹 2 相關(guān)開發(fā)技術(shù)和工具介紹 2.1 Windows應(yīng)用程序介紹 Windows應(yīng)用程序又稱GUI(圖像用戶界面)應(yīng)用程序,它在我們計算機(jī)中無處不在,它在軟件開發(fā)歷史上曾風(fēng)靡一時,且至今仍在眾多的系統(tǒng)開發(fā)中在占有一席之地。Windows應(yīng)用程序的設(shè)計一般采用C/S (Client/Server,客戶機(jī)/服務(wù)器)結(jié)構(gòu)進(jìn)行開發(fā)。C/S結(jié)構(gòu)是大家熟悉的軟件系統(tǒng)體系結(jié)構(gòu)
35、,它通過將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通信開銷,可以充分利用兩端硬件環(huán)境的優(yōu)勢。C/S結(jié)構(gòu)是相對現(xiàn)今的另一種開發(fā)模式B/S結(jié)構(gòu)而言,B/S機(jī)構(gòu)開發(fā)是隨著Internet的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面是通過客戶端瀏覽器來解析呈現(xiàn),其主要邏輯是在服務(wù)器端實現(xiàn)。在現(xiàn)今的開發(fā)模式中B/S結(jié)構(gòu)也有其自身的優(yōu)勢:它采用弱客戶端,客戶端僅需要一個瀏覽器解析完成,其它的實現(xiàn)一般采用服務(wù)器端動態(tài)技術(shù)。但是其相對C/S開發(fā)有很多的問題呈現(xiàn),如交互界面豐富性,安全問題等方面,所以至今C/S結(jié)構(gòu)在軟件開發(fā)中仍有不可取代的地位。 在Windows應(yīng)用
36、程序的開發(fā)技術(shù)平臺主要有C++的MFC開發(fā)、SUN公司的J2EE開發(fā)平臺上的GUI編程、VB與Delphi上的開發(fā)以及微軟的.NET平臺都提供了相應(yīng)的開發(fā)。這些技術(shù)各有所長,其中最出名的就是Delphi和.NET平臺的開發(fā)模式,它們都以快速開發(fā)而著稱,但VB語言的落后呈明顯趨勢,現(xiàn)今微軟在平臺系統(tǒng)上的優(yōu)勢和前沿的可復(fù)用性設(shè)計,大大的推動了.NET技術(shù)的快速應(yīng)用。很多Windows應(yīng)用程序都采用了微軟的.NET技術(shù)來實現(xiàn)。 2.2 .NET Framework簡介 .NET Framework是Microsoft推出的新開發(fā)平臺,它簡化了各種軟件結(jié)構(gòu)的開發(fā),并在Visual Studio
37、 這個強大的IDE配合下,加快了軟件系統(tǒng)開發(fā)的效率和縮短了軟件開發(fā)的周期。 .NET Framework是支持生成和運行下一代應(yīng)用程序和 XML Web services 的內(nèi)部 Windows 組件,它具有兩個主要組件:公共語言運行庫(CLR)和.NET Framework類庫。CLR是.NET Framework的基礎(chǔ)。你可以將它的運行庫看作一個在執(zhí)行時管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),強制實施嚴(yán)格的類型安全以及可確保安全性和可靠性的多種形式的代碼準(zhǔn)確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標(biāo)的代碼稱為托管代碼,.NET中絕大部分都屬于這
38、類,而不以運行庫為目標(biāo)的代碼稱為非托管代碼,如指針等。.NET Framework的另一個主要組件就是類庫,它是一個完全面向?qū)ο箢愋桶踩目蓮?fù)用類庫集合,我們可以使用它們來開發(fā)多種應(yīng)用程序,這些應(yīng)用程序既包括傳統(tǒng)的命令行(控制臺應(yīng)用程序)和圖形用戶界面 (GUI,即一般的Windows應(yīng)用程序)應(yīng)用程序,也可以進(jìn)行基于B/S的ASP.NET Web開發(fā)如Web Form 、ASP.NET MVC和 Web services等),以及Remote、WCF、WWF、WPF等微軟.NET的開發(fā)新技術(shù)新模式。 .NET Framework可由非托管組件承載,這些組件將公共語言運行庫加載到它們的進(jìn)程中
39、并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NET Framework不但提供若干個運行庫宿主,而且還支持第三方運行庫宿主的開發(fā)。Microsoft于2005年推出了VS2005中集成了.NET Framework2.0,于.NET Framework1.0的基礎(chǔ)上增加了很多類庫,使其功能更強大,在2008和2010年分別推出的VS2008、VS2010中集成了.NET Framework3.5和.NET Framework4.0,更添加了多種開發(fā)新技術(shù)。使得.NET平臺更加的強大,并一步一步的加快軟件開發(fā)的開發(fā)效率,縮短軟件的開發(fā)周期 2.3 ASP.N
40、ET的發(fā)展基礎(chǔ) 隨著PHP,JSP的技術(shù)的出現(xiàn),ASP的王者地位受到了嚴(yán)峻的挑戰(zhàn)。JSP的技術(shù)在執(zhí)行效率,安全性等特性上已經(jīng)完全超過了ASP,同時還具有ASP所無法比擬的跨平臺性, JSP的誕生,使越來越多的人開始選擇它,ASP技術(shù)面臨前所未有的危機(jī)。 在這種情況下,Microsoft公司很快發(fā)布了其宏偉的“Windows.NET”計劃。 ASP.NET不僅僅是下一版本的 Active Server Page (ASP);它是統(tǒng)一的Web 開發(fā)平臺,用來提供開發(fā)人員快速生成企業(yè)級 Web 應(yīng)用程序所需的服務(wù)。ASP.NET 的語法在很大程度上與 ASP 兼容,同時它還提供一種新的編程模型和
41、結(jié)構(gòu),用于生成更安全、可伸縮和穩(wěn)定的應(yīng)用程序??梢酝ㄟ^在現(xiàn)有 ASP 應(yīng)用程序中逐漸添加 ASP.NET 功能,隨時增強該ASP 應(yīng)用程序的功能 ASP.Net可完全利用.Net架構(gòu)的強大,安全,高效的平臺特性。ASP.Net是運行在服務(wù)器后端編譯后的普通語言運行時代碼,運行時早綁定(Early Binding),即時編譯,本地優(yōu)化,緩存服務(wù),零安裝配置,基于運行時代碼受管與驗證的安全機(jī)制等都為ASP.Net帶來卓越的性能。 對XML,SOAP,WSDL等Internet標(biāo)準(zhǔn)的強健支持為ASP.Net在異構(gòu)網(wǎng)絡(luò)里提供了強大的擴(kuò)展性。 ASP.NET是微軟力推的功能強大的編程環(huán)境,可以使用
42、C#等多種高級語言及腳本語言、HTML、XML、XSL等來創(chuàng)建基于網(wǎng)絡(luò)的應(yīng)用程序。ASP.NET將C#作為一種面向?qū)ο笳Z言,在很多方面來看,C#將成為微軟的與Java相似的語言。 C#是ASP.NET開發(fā)中一個最重要的功能,微軟會將C#發(fā)展成為Java的強勁對手。這也是微軟.Net框架的一個重要組成部分。 ASP.NET在面向?qū)ο笮?、?shù)據(jù)庫連接、大型站點應(yīng)用等方面都優(yōu)于ASP程序,ASP.NET還提供更多的其他方面的新特性,例如:內(nèi)置的對象緩存和頁面結(jié)果緩存;內(nèi)置的XML支持,可用于XML數(shù)據(jù)集的簡單處理;服務(wù)器控制提供了更充分的交互式制等。 ASP.NET依然完全鎖定在微軟的操作系統(tǒng)中,
43、要真正發(fā)揮ASP.NET潛力,你要使用C#或VB.net。這兩種語言將成為ASP.NET標(biāo)準(zhǔn)的核心的腳本語言。 2.4 C#編程語言 微軟宣布了它的最新編程語言C#是專門為.NET應(yīng)用而開發(fā)出的語言,這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運行庫的支持下,.NET框架的各種優(yōu)點在C#中表現(xiàn)得淋漓盡致,這是一種面向?qū)ο蟮木幊陶Z言,它將作為Visual Studio中的一部分推出。C#(發(fā)音為“C-Sharp”)既保持了C++中熟悉的語法,并且還包含了大量的高效代碼和面向?qū)ο筇匦?。?jù)微軟產(chǎn)品經(jīng)理透露,C#語言將在保持C/C++靈活性的基礎(chǔ)上為程序員帶來更高效的RAD開發(fā)方式
44、。它不僅能用于WEB服務(wù)程序的開發(fā),并且還能開發(fā)強大的系統(tǒng)級程序。 C#是一種簡潔且類型安全的面向?qū)ο笳Z言,開發(fā)人員可以用其來構(gòu)建在.NET Framework平臺上運行的編程語言,用其可以創(chuàng)建在.NET Framework上運行的多種應(yīng)用程序。使用C#可以創(chuàng)建傳統(tǒng)的Windows客戶端應(yīng)用程序、XML Web service、分布式組件、客戶端/服務(wù)器應(yīng)用程序等。 C#還包含使XML編程更為輕松的技術(shù)。微軟將使它的下一代工具軟件、操作系統(tǒng)和應(yīng)用支持XML技術(shù)。 C#的一些突出的特點, ●簡潔的語法 ●精心地面向?qū)ο笤O(shè)計 ●與Web的緊密結(jié)合 ●完整的安全性與錯誤處理 ●
45、版本處理技術(shù) ●靈活性與兼容性 ●安全性。 正是由于其靈活性,C#允許與C風(fēng)格的需要傳遞指針型參數(shù)的API進(jìn)行交互操作,DLL的任何入口點都可以在程序中進(jìn)行訪問。C#遵守.NET公用語言規(guī)范(Common Language Specification, CLS),從而保證了C#組件與其它語言組件間的互操作性。元數(shù)據(jù)(Metadata)概念的引入既保證了兼容性,又實現(xiàn)了類型安全。 2.5 開發(fā)平臺 Visual Studio 2005、IIS 5.1服務(wù)器、.NET Framework 2.0 圖 2.1 VS2005開發(fā)工具界面 2.6 通信協(xié)議 HTTP協(xié)議
46、(超文本傳輸協(xié)議)的主要特點可概括如下: (1)簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 (2)由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。 (3)靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。 (4)無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。 (5)無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理
47、沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。 另外,在實驗中發(fā)現(xiàn)很多網(wǎng)絡(luò)都設(shè)置了防火墻,考慮到安全問題,網(wǎng)絡(luò)管理員會屏蔽很多端口。而對于HTTP最常用的80端口通常是開放的,這也是選擇HTTP協(xié)議的一個重要因素。 2.7 相關(guān)知識 2.7.1 委派 委派是C#引入的一種新的數(shù)據(jù)類型,它非常類似于C/C++中的函數(shù)指針,常常用于在編譯時未綁定的動態(tài)方法調(diào)用。與函數(shù)指針不同的是委派在C#中完全實現(xiàn)了面向?qū)ο?,它既可以引用靜態(tài)方法,也可以引用實例方法,而函數(shù)指針只能引用靜態(tài)
48、方法。C#中的委派同時也是類型安全的。 作為一種面向?qū)ο蟮臄?shù)據(jù)類型,委派的使用分為三步:委派聲明,委派實例化和委派調(diào)用。委派聲明就是定義一個封裝特定參數(shù)類型和返回值類型的方法體(靜態(tài)方法或?qū)嵗椒ǎ┑臄?shù)據(jù)類型,看下面的示例: delegate int Compute (int left, int right); 可以看到,委派類型Compute包含了方法的兩個要素: 參數(shù)類型和返回值類型。委派類型和方法只有滿足下面兩個條件,才能說它們是兼容的: 1. 參數(shù)的數(shù)量相同,并且它們的類型也按順序相同; 2. 返回值相同。 委派類型相同指的是它們聲明的類型為同一類型(名字一樣)
49、。而委派實例相等則是指它們綁定的方法為同一個方法,或相同的方法按相同的順序組成的方法鏈,而它們本身的類型只要兼容即可(同樣滿足上面兩個條件),不必強求同名。 委派實例化就是將委派類型綁定到特定方法的過程,和其他對象的實例化相似,都需要用new語句,只是必須接受和該委派類型兼容的方法名作為new語句的參數(shù)。如果是實例方法,必須采用兩者中間加點號的方式同時提供實例對象和方法。 委派實例化后就可以像調(diào)用方法一樣進(jìn)行委派調(diào)用了。 委托是一個類,它定義了方法的類型,使得可以將方法當(dāng)作另一個方法的參數(shù)來進(jìn)行傳遞,這種將方法動態(tài)地賦給參數(shù)的做法,可以避免在程序中大量使用If-Else(Switch
50、)語句,同時使得程序具有更好的可擴(kuò)展性。 2.7.2 事件 事件是一種使對象或類能夠提供通知的成員,類或?qū)ο罂梢酝ㄟ^事件為其他類或?qū)ο笸ㄖl(fā)生的相關(guān)事情,客戶端則可以通過提供事件處理程序為相應(yīng)的事件添加可執(zhí)行代碼。事件是對象發(fā)送的消息,已發(fā)信號通知操作的發(fā)生。而操作可能由用戶交互(例如鍵盤或鼠標(biāo)操作)引起的,也可能由某些系統(tǒng)行為或其他邏輯觸發(fā)。發(fā)送或引發(fā)事件的對象稱為“發(fā)行者”,接收事件并對其作出響應(yīng)的對象稱為“訂閱者”。 委派事件的基礎(chǔ),在事件通信中時間發(fā)行者并不知道哪個對象或方法將接收并處理由其引發(fā)的事件,委派就是事件發(fā)送發(fā)和接收方之間的紐帶。 事件處理程序本身都是方法成員,事件處
51、理程序的唯一限制是其必須與事件所要求的委托簽名匹配,也包括返回類型和參數(shù)。這個簽名是事件定義的一部分,可以通過一個委托類型來指定。 下面的示例聲明了名為“EventName”的公共事件,其委托類型為EventNameEventHandler; Public event EventNameEventHandler EventName; 示例: public delegate void ShowHandler(); //聲明一個公共的委托類 public event ShowHandler OnShow; //聲明一個事件 2.7.3 線程 在Windows Tas
52、k Manager 窗口中,還包含了進(jìn)程使用的CPU的情況。這是因為進(jìn)程也有一個由計算機(jī)的處理器使用的執(zhí)行次序。這個執(zhí)行次序就稱為線程。每個進(jìn)程至少有一個執(zhí)行順序或線程。線程的執(zhí)行順序是由應(yīng)用程序的方法代碼來決定的。跟準(zhǔn)確地講,線程其實是指向進(jìn)程的指令流部分的一個指針。線程實際上不包括指令,只是指出了當(dāng)前和將來可能要使用的路徑,而這是通過數(shù)據(jù)和分支判斷決定的指令來完成的。 .NET Framework 支持自由線程,所以在所有的.NET語言中都可以使用自由線程。 使用線程之前一定記住先添加引用using.System.Threading; 示例: //從當(dāng)前線程
53、調(diào)用方法 SimpleThread st = new SimpleThread(); st.SimpleMethod(); //從其他線程調(diào)用方法 ThreadStart ts = new ThreadStart(st.SimpleMethod); Thread t = new Thread(ts); //Thread t = new Thread(new ThreadStart(st.SimpleMethod));
54、 t.Start();
2.7.4 泛型
泛型是2.0版C#語言和公共運行庫(CLR)中新增加的一項新功能,使用泛型類型可以最大限度地重用代碼、保護(hù)類型的安全和提高。使用泛型可以參數(shù)化代碼,然后在使用的時候,填充具體的類型參數(shù),該參數(shù)是泛型類型要操作的對象類型。常見的場景是使用泛型列表,如下所示:
var letters = new List
55、e.Writeline(letter);
}
在前面的代碼中,letters 是泛型的字符串列表。注意這個尖括號,它指定字符串類型,new List
56、ary
57、過程 int val = 100; object obj = val; int num = (int) obj; Console.WriteLine ("num: {0}", num); 這是一個拆箱的過程,是將值類型轉(zhuǎn)換為引用類型,再由引用類型轉(zhuǎn)換為值類型的過程 XX院本科畢業(yè)設(shè)計(論文) 5 系統(tǒng)實現(xiàn) 3 需求分析 3.1 應(yīng)用需求分析 如今計算機(jī)軟件技術(shù)的發(fā)展已到了一個較高水平,許多傳統(tǒng)行業(yè)和新興行業(yè)如電子商務(wù)等的發(fā)展已離不開計算機(jī)軟件技術(shù)
58、的支撐,它們都在不同程度和不同形式的利用計算機(jī)實現(xiàn)各種的自動化、機(jī)器化,不再是人工手動管理。尤其是Internet的飛速發(fā)展,將整個世界聯(lián)系在一起,信息廣泛的在Internet上快速的傳播,信息的變化日新月異,再不斷的飛速膨脹,信息的變化對于企業(yè)的影響也越來越大,信息的收集已經(jīng)不再是人工方式,決策的制定也變得越來越復(fù)雜,導(dǎo)致軟件出來了大型的管理系統(tǒng)ERP,并影響著軟件的發(fā)展,推動著軟件技術(shù)的更新。 信息時代,人們的工作生活依賴于眾多軟件,大多數(shù)軟件處于軟件測試和發(fā)布初期,升級的改動是非常頻繁的。如果依靠傳統(tǒng)的維護(hù)方式——軟件維護(hù)人員挨個去給每臺機(jī)器上的軟件做升級維護(hù),在機(jī)子數(shù)量較少的情況下,
59、一兩個維護(hù)人員就可以應(yīng)付,但如果客戶端用戶數(shù)量成百上千且比較分散,這種情況下采用傳統(tǒng)的升級維護(hù)方式幾乎是不可能完成的。針對這種情況,各個C/S模式的軟件紛紛將自己的軟件維護(hù)改為自動升級以適應(yīng)現(xiàn)實的需求。 自動更新的時候,客戶端軟件提交更新請求給固定的網(wǎng)址,然后網(wǎng)址返回最新版本的版本號??蛻舳塑浖妥约旱陌姹咎枌Ρ龋绻l(fā)現(xiàn)服務(wù)器的版本和自己的版本不一樣,那么就請求下載升級補丁。服務(wù)器響應(yīng)請求,提供補丁下載;下載成功后,手動或自動安裝一下就可以了。 安裝補丁的時候,客戶端的主程序一般是要關(guān)閉的,除非采用動態(tài)卸載、調(diào)入組件的技術(shù),比如網(wǎng)絡(luò)游戲,就是盡量讓玩家邊玩游戲邊更新。 如果更新的是主程
60、序,那么就必須關(guān)閉主程序了??墒侵鞒绦蜿P(guān)閉了之后,誰來調(diào)用安裝補丁呢?為了解決這個問題,人們把主程序和自動更新程序分開來做。當(dāng)需要校驗版本的時候,主程序調(diào)用自動更新程序。自動更新程序如果發(fā)現(xiàn)主程序需要更新,在下載了升級補丁之后,就會要求關(guān)閉主程序。主程序關(guān)閉之后,自動更新程序調(diào)用升級補丁進(jìn)行安裝,安裝完成后再重新啟動主程序。自動更新程序自動退出,完成更新任務(wù)。這和你關(guān)閉電腦后再插網(wǎng)卡的原理是一模一樣的。其實生活中有很多現(xiàn)象可以借鑒到軟件設(shè)計中。 人們嫌這樣的升級仍然太麻煩,后來出現(xiàn)了B/S結(jié)構(gòu),大家像抓住了救命稻草一樣的追捧至今,希望能從這些勞動中解脫出來。B/S結(jié)構(gòu)就是瀏覽器/服務(wù)器結(jié)構(gòu),
61、它所有的功能,都是在瀏覽器里完成。程序升級的時候,只需要在服務(wù)端升級一下就可以了,瀏覽器再次訪問服務(wù)器的時候,得到的就是新版本。你可以把它理解成一個純粹的網(wǎng)站。是不是站長更新的時候,你打開網(wǎng)站就看到最新的頁面? 但是B/S結(jié)構(gòu)有天生的弱點,因為它是基于網(wǎng)頁瀏覽的,所以安全性是首要的難題,你能瀏覽的東西,原則上別人也能瀏覽。而且出于安全考慮,B/S訪問本地資源,比如串口,必須借助于其他技術(shù)實現(xiàn)。B/S也不是萬能的,必須考慮實際應(yīng)用。 Winform程序相對web程序而言,功能更強大,編程更方便,但軟件更新卻相當(dāng)麻煩,要到客戶端一臺一臺的升級,面對這個實際問題,設(shè)計了一個通過軟件實現(xiàn)自動升級技
62、術(shù)方案,彌補了這一缺陷。 3.2 系統(tǒng)功能需求 即便擁有多年軟件開發(fā)經(jīng)驗的團(tuán)隊也不會保證自己所做的軟件是完美的,它或多或少會存在一些缺陷,甚至?xí)嬖谥T多的漏洞。在軟件的使用中,也會不斷發(fā)現(xiàn)更多的問題,這些問題可能是軟件本省的問題,也可能是運行的軟硬環(huán)境變化造成的,而且用戶也會對軟件不斷地提出新的要求。所以,軟件的升級是不可避免的。對于用戶而言,軟件升級可以修補漏洞,確保數(shù)據(jù)安全;可以更新和增加新功能。對于軟件開發(fā)上而言,為了滿足市場需求,也需要不斷地升級自己的軟件,力求做得更好。 對于用戶和軟件管理員,他們希望自己管理的軟件具有自動更新功能,這樣會減少更多的維護(hù)成本。 為了滿足這些
63、要求,本課題試圖尋求一種比較通用的自動升級平臺。 由于采用C/S結(jié)構(gòu),客戶端經(jīng)常需要更新,軟件更新的實質(zhì)上是在客戶端和服務(wù)器之間進(jìn)行通信和傳遞數(shù)據(jù)。程序更新時,自動升級的形式有:一是開機(jī)后自動隱藏運行,這種方式的技術(shù)成本較高,要求高可靠性和可用性;二是在啟動程序時運行,一般設(shè)計為強制更新,這種方式要求升級速度要快;三是用戶手動點擊功能菜單運行,把升級文件放在共享文件夾中,由用戶承擔(dān)升級任務(wù);最后是綜合以上三種方式的兩種或三種并存。 3.2.1系統(tǒng)主要功能分析 本應(yīng)用系統(tǒng)自動升級實踐課題是針對于C/S結(jié)構(gòu)的Windows應(yīng)用系統(tǒng)的開發(fā)。采用微軟Microsoft Visual Studio
64、 IDE開發(fā)工具,使用.NET框架的C#語言進(jìn)行實踐課題的開發(fā)設(shè)計。 本課題需要完成的課題實踐內(nèi)容,如下: 1、 軟件升級的實現(xiàn)原理 2、 選擇一種具體實現(xiàn)方式 3、 軟件升級系統(tǒng)模型設(shè)計 4、 編碼實現(xiàn) 3.2.2自動升級原理圖 圖3.1自動升級原理圖 4 系統(tǒng)設(shè)計 4.1 系統(tǒng)設(shè)計思想 要深入理解.NET客戶端應(yīng)用程序更新組件的工作原理,需要仔細(xì)研究一下實現(xiàn)客戶端應(yīng)用程序更新有那些必須要做的事情。第一步需要做的是檢查是否有更新;當(dāng)發(fā)現(xiàn)有更新時,開始第二步工作——下載更新;當(dāng)更新下載完成時,進(jìn)行最后一步的工作——實現(xiàn)更新。 (一) 為更新做檢查 作為開發(fā)者
65、,首先你得告訴應(yīng)用程序到什么地方去做更新檢查,就是所謂定位。其次,確定何時做更新檢查。不可能用戶每次一運行客戶端程序,而它就在后臺不停的進(jìn)行更新檢查,那多浪費資源!最后還有一項重要的事情需要解決,那就是如何進(jìn)行更新檢查。.NET應(yīng)用程序更新組件使用HTTP進(jìn)行通訊,這就允許客戶端應(yīng)用程序穿透防火墻來進(jìn)行更新。并且進(jìn)行更新檢查所需要的地址就成了已知的Web服務(wù)器的一個URL地址,第一個問題順利解決。 .NET應(yīng)用程序更新組件在組件生成的基礎(chǔ)上產(chǎn)生一個線程,該線程負(fù)責(zé)進(jìn)行更新檢查。該線程在大多數(shù)時間處于休眠狀態(tài),但會在設(shè)置好的間隔蘇醒并實現(xiàn)一次更新檢查。應(yīng)用程序為新的更新所做的檢查的頻率依賴于各
66、應(yīng)用自身。進(jìn)行更新檢查的間隔常用值的范圍一般是從一個小時到幾天。這種輪詢的基本方法并不適合于所有情況。比如Microsoft Money只是在用戶讓它去進(jìn)行更新檢查時它才去檢查。在這種情況下,更新輪詢線程可被禁用。 通過用命令調(diào)用更新組件的CheckForUpdate()方法來實現(xiàn)更新檢查。 關(guān)于如何進(jìn)行更新檢查的方法有這樣幾種: 方法一:直接文件檢查——使用HTTP來比較服務(wù)器和客戶端應(yīng)用程序的最后的修改日期/時間戳是否一致。如果服務(wù)器上有更新的文件,客戶端就知道可以更新自己了。對于Web瀏覽器來講,也是同樣的道理,它知道是否需要重新下載一個html頁面或圖片或是否可以重復(fù)使用先前已下載的。當(dāng)應(yīng)用程序有一個新的版本可用時,管理員簡單地拷貝一個更新的版本來覆蓋Web服務(wù)器上的舊版本。這種方法的問題在于更新不是自動進(jìn)行,由此會出現(xiàn)潛在的失敗可能。比如,如果管理員正在更新Web服務(wù)器上的應(yīng)用程序版本,同時有個客戶正在下載更新之前的版本,那么這個客戶的計算機(jī)上就會既存在更新之前的一些文件,也存在更新之后新版本的一些文件?;谏鲜鲈颍瑢τ谥匾膽?yīng)用程序不提倡使用直接文件檢查來更新。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。