應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文

上傳人:仙*** 文檔編號(hào):27811418 上傳時(shí)間:2021-08-20 格式:DOC 頁(yè)數(shù):43 大?。?99.13KB
收藏 版權(quán)申訴 舉報(bào) 下載
應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文_第1頁(yè)
第1頁(yè) / 共43頁(yè)
應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文_第2頁(yè)
第2頁(yè) / 共43頁(yè)
應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文_第3頁(yè)
第3頁(yè) / 共43頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文》由會(huì)員分享,可在線閱讀,更多相關(guān)《應(yīng)用系統(tǒng)自動(dòng)升級(jí) 畢業(yè)設(shè)計(jì)論文(43頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 XX院本科畢業(yè)設(shè)計(jì)(論文) [應(yīng)用系統(tǒng)自動(dòng)升級(jí)] 學(xué)生姓名: X X 學(xué)生學(xué)號(hào): 院(系): 計(jì)算機(jī)學(xué)院 年級(jí)專業(yè): 07網(wǎng)絡(luò)工程 指導(dǎo)教師: XxX XXX教授 二〇一一年五月 XX本科畢業(yè)設(shè)計(jì)(論文) 摘 要 摘 要 隨著軟件需求的變化和技術(shù)競(jìng)爭(zhēng)的加劇,軟件供應(yīng)商不斷提供更多更好的軟件產(chǎn)品和服務(wù)來(lái)滿足日益變化的市場(chǎng)需要。對(duì)于通用的軟件產(chǎn)品來(lái)說(shuō),用戶數(shù)量眾

2、多,更新頻繁,運(yùn)行的軟件平臺(tái)和網(wǎng)絡(luò)環(huán)境多,因此在每次新產(chǎn)品發(fā)布時(shí)如何簡(jiǎn)單、高效地幫助用戶更新?lián)Q代軟件產(chǎn)品,成為領(lǐng)先的軟件供應(yīng)商關(guān)注的課題。對(duì)商品化軟件來(lái)說(shuō),良好的售后服務(wù)是至關(guān)重要的,而軟件升級(jí)是軟件售后服務(wù)中非常重要的一個(gè)部分。 在平時(shí)開(kāi)發(fā)C/S系統(tǒng)時(shí),大家都清楚C/S系統(tǒng)的最大弱點(diǎn)就是不利于維護(hù),當(dāng)客戶端程序更新時(shí)不得不到每個(gè)用戶的機(jī)子上去部署。雖然微軟的Smart Client技術(shù)使得傳統(tǒng)的C/S系統(tǒng)更加利于維護(hù),但現(xiàn)在還不打算采用。Smart Client是一個(gè)不同于以往常見(jiàn)的應(yīng)用程序的比較復(fù)雜的系統(tǒng),所以它的調(diào)試技術(shù)也比以前復(fù)雜的多,至今仍然是一個(gè)難點(diǎn)。因?yàn)?,開(kāi)發(fā)的代碼大都不是一個(gè)

3、可執(zhí)行的應(yīng)用程序,更多的是dll庫(kù)文件,這樣就無(wú)法直接調(diào)試,必須得寫(xiě)出一個(gè)調(diào)試程序來(lái)進(jìn)行間接調(diào)試。同時(shí)因?yàn)樗神詈虾途W(wǎng)絡(luò)加載的原因,使得本地緊耦合調(diào)試和實(shí)際運(yùn)行情況多少有些不同。這一點(diǎn)還沒(méi)有有效的解決辦法。盡管VS2005 推出了Click Once,也具有實(shí)現(xiàn)自動(dòng)更新的功能,但其可控性差和不夠靈活等缺陷,導(dǎo)致其實(shí)際用途較少。而Updater Application Block組件的配置和使用相似地麻煩,所以我們選擇采用傳統(tǒng)的自動(dòng)更新的程序。 自動(dòng)更新的步驟就是客戶端檢查服務(wù)器端的版本號(hào)是否比本地的新,如果不同于本地版本,就向服務(wù)器請(qǐng)求下載文件。在這里我們服務(wù)器端部署的升級(jí)文件是任何人都可以下

4、載的。從上面的描述可以看出,其實(shí)所有系統(tǒng)自動(dòng)升級(jí)的步驟都是類似的,所以做一個(gè)通用的自動(dòng)升級(jí)程序能夠減少不少麻煩。。 關(guān)鍵詞 自動(dòng)更新,服務(wù)器端,版本號(hào) XX本科畢業(yè)設(shè)計(jì)(論文) 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è)計(jì)(論文) 目 錄 目 錄 摘 要 I ABSTRACT II 1 緒論 1 1.1自動(dòng)升級(jí)的背景 1 1.2自動(dòng)更新系統(tǒng)的研發(fā)與現(xiàn)狀 1 1.3 什么是軟件升級(jí) 3 1.4 軟件升級(jí)的意義 3 1.5 軟件升級(jí)的現(xiàn)狀 4

12、1.6 應(yīng)用程序的升級(jí) 4 1.6.1獲得最新版本的軟件 4 1.6.2對(duì)應(yīng)用軟件進(jìn)行升級(jí) 5 1.7 常見(jiàn)的升級(jí)方式 6 1.8 軟件升級(jí)原理 7 1.9 論文主要的工作內(nèi)容 7 2 相關(guān)開(kāi)發(fā)技術(shù)和工具介紹 8 2.1 Windows應(yīng)用程序介紹 8 2.2 .NET Framework簡(jiǎn)介 8 2.3 ASP.NET的發(fā)展基礎(chǔ) 9 2.4 C#編程語(yǔ)言 10 2.5 開(kāi)發(fā)平臺(tái) 11 2.6 通信協(xié)議 11 2.7 相關(guān)知識(shí) 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自動(dòng)升級(jí)原理圖 17 4 系統(tǒng)設(shè)計(jì) 18 4.1 系統(tǒng)設(shè)計(jì)思想 18 4.2 系統(tǒng)目標(biāo) 20 5 系統(tǒng)實(shí)現(xiàn) 21 5.1 服務(wù)器端 21 5.1.1 IIS的安裝與配置 21 5.1.2 啟動(dòng)Internet信息服務(wù)器(IIS) 21 5.1.3 服務(wù)端配置文件格式 22 5.1.3 服務(wù)端文件的配置過(guò)程 22 5.1.4 瀏覽器訪問(wèn)測(cè)試 24 5.1.5上傳文件到服務(wù)器端 25 5.2 客戶端 26 5.2.1 客戶端配置文件格式

14、 26 5.3 代碼設(shè)計(jì) 26 6 結(jié)論 33 參 考 文 獻(xiàn) 35 致 謝 36 III XX本科畢業(yè)設(shè)計(jì)(論文) 1 緒論 1 緒論 1.1自動(dòng)升級(jí)的背景 即便擁有多年軟件開(kāi)發(fā)經(jīng)驗(yàn)的團(tuán)隊(duì)也不敢保證自己所做的軟件是完美的,它或多或少會(huì)存在一些缺陷,甚至?xí)嬖谥T多的漏洞。在軟件的使用中,也會(huì)不斷發(fā)現(xiàn)更多的問(wèn)題,這些問(wèn)題可能是軟件本身的問(wèn)題,也可能是運(yùn)行的軟硬件環(huán)境變化造成的,而且用戶也會(huì)對(duì)軟件不斷地提出新的要求。所以,軟件的升級(jí)是不可避免的。對(duì)于用戶而言,軟件升

15、級(jí)可以修補(bǔ)漏洞,確保數(shù)據(jù)安全;可以更新和增加新功能。對(duì)于軟件開(kāi)發(fā)商而言,為了滿足市場(chǎng)需求,也需要不斷地升級(jí)自己的軟件,力求做得更好。 相信有許多程序員都喜歡用Winform做開(kāi)發(fā)吧?因?yàn)閃inform相對(duì)Webform而言,優(yōu)點(diǎn)是,功能更強(qiáng)大,編程更方便。但是它的缺點(diǎn),就是軟件的安裝及維護(hù)是相當(dāng)麻煩的,要實(shí)現(xiàn)軟件更新,需要到客戶端一臺(tái)一臺(tái)地升級(jí)。 當(dāng)然,實(shí)現(xiàn)應(yīng)用系統(tǒng)自動(dòng)更新功能有很多方法,但是他們的基本原理是大同小異的。自動(dòng)更新的步驟就是客戶端檢查服務(wù)器端的版本號(hào)是否比本地的高,如果高于本地版本,就向服務(wù)器請(qǐng)求下載文件。在這里我們服務(wù)器端部署的升級(jí)文件是任何人都可以下載的。從上面的描述可以

16、看出,其實(shí)所有系統(tǒng)自動(dòng)升級(jí)的步驟都是類似的,所以做一個(gè)通用的自動(dòng)升級(jí)程序就可以減少不少麻煩。 實(shí)現(xiàn)軟件的自動(dòng)升級(jí)存在的困難: 第一,為了查找遠(yuǎn)程服務(wù)器上的更新,應(yīng)用程序必須有查詢網(wǎng)絡(luò)的途徑,這需要網(wǎng)絡(luò)編程、簡(jiǎn)單的應(yīng)用程序與服務(wù)器通訊的協(xié)議。 第二是下載。下載看起來(lái)不需要考慮聯(lián)網(wǎng)的問(wèn)題,但要考慮下載用戶請(qǐng)求的文件,以及在沒(méi)有用戶同意時(shí)下載大文件。友好的自動(dòng)更新應(yīng)用程序?qū)⑹褂檬S嗟膸捪螺d更新。這聽(tīng)起來(lái)簡(jiǎn)單,但卻是一個(gè)技術(shù)難題,幸運(yùn)的是已經(jīng)有了解決方法。 第三個(gè)考慮因素是使用新版應(yīng)用程序更換原應(yīng)用程序的過(guò)程。這個(gè)問(wèn)題比較有趣,因?yàn)樗蟠a運(yùn)行時(shí)將自己從系統(tǒng)刪除,有多種辦法可以實(shí)現(xiàn)該功能,

17、本文程序主要通過(guò)比較新舊版本的版本號(hào)來(lái)實(shí)現(xiàn)替換新版本應(yīng)用程序的功能。 1.2自動(dòng)更新系統(tǒng)的研發(fā)與現(xiàn)狀 自動(dòng)更新特性是通用軟件的常用特性,當(dāng)前國(guó)內(nèi)外各大軟件提供商都對(duì)軟件更新系統(tǒng)投入相當(dāng)?shù)年P(guān)注和研發(fā)力量,并且已有一些軟件產(chǎn)品已經(jīng)發(fā)布。 經(jīng)研究,當(dāng)前市場(chǎng)上存在的更新工具主要有四種: 1)基于Client/Server 架構(gòu)的自動(dòng)更新工具 此類工具界面嵌入在產(chǎn)品程序中或與產(chǎn)品程序集成,用戶啟動(dòng)產(chǎn)品客戶端,程序搜索可更新的軟件包,下載后自動(dòng)安裝。代表產(chǎn)品有金山毒霸和諾頓(Norton Antivirus)。 以金山毒霸為例,其產(chǎn)品特性如下: u 支持20多個(gè)服務(wù)器,從中選擇最快的服

18、務(wù)器下載 u 升級(jí)工具嵌入在產(chǎn)品中,升級(jí)界面為定制的向?qū)浇缑? u 更新前通過(guò)檢測(cè)分析來(lái)確定要下載和更新的內(nèi)容 u 文件支持HTTP下載,不支持FTP下載,支持代理服務(wù)器,不支持?jǐn)帱c(diǎn)續(xù)傳 u 更新過(guò)程中若有失敗則可以撤銷更新 u 支持更新自身程序 u 更新結(jié)束時(shí)能重啟軟件 2)直接使用安裝程序的自動(dòng)更新系統(tǒng) 此類系統(tǒng)能自動(dòng)檢測(cè)是否有更新,后臺(tái)下載安裝程序,用戶運(yùn)行安裝程序的形式來(lái)安裝,一般用于升級(jí)補(bǔ)丁程序。代表產(chǎn)品有Microsoft Windows Update工具。其產(chǎn)品特性有: u 支持單服務(wù)器,支持但產(chǎn)品 u 后臺(tái)下載安裝程序,安裝程序是一個(gè)完整的可執(zhí)行程序包,下載

19、時(shí)用戶無(wú)需操作,下載完成通知用戶 u 采用系統(tǒng)默認(rèn)的網(wǎng)絡(luò)設(shè)置下載,由于安裝包文件會(huì)比較多,下載量大,支持?jǐn)帱c(diǎn)續(xù)傳 u 用戶運(yùn)行安裝程序,安裝過(guò)程就是安裝某個(gè)更新包,安裝后可卸載更新包 u 安裝結(jié)束時(shí)能重啟軟件 此特性演變成Microsoft.NET中的智能更新服務(wù) 3)基于Web/ActiveX的自動(dòng)更新工具 此系統(tǒng)的界面為WEB頁(yè)面,用戶首先接受下載一個(gè)具有更新功能的ActiveX控件,此ActiveX控件自動(dòng)運(yùn)行,搜索下載可更新的內(nèi)容,并在下載后自動(dòng)更新。代表產(chǎn)品有Microsoft Platform SDK Update工具。 u 界面是WEB頁(yè)面進(jìn)行,通過(guò)運(yùn)行Active

20、控件執(zhí)行功能 u 一個(gè)產(chǎn)品一個(gè)站點(diǎn),完全定制的更新內(nèi)容 u 后臺(tái)自動(dòng)檢測(cè)、下載和安裝軟件 u 采用瀏覽器的網(wǎng)絡(luò)設(shè)置,下載不支持?jǐn)帱c(diǎn)續(xù)傳 u 更新失敗不可撤消更新 u 更新后能重啟的軟件 4)采用后臺(tái)服務(wù)形式的自動(dòng)更新工具 此系統(tǒng)采用后臺(tái)服務(wù)的方式運(yùn)行在用戶計(jì)算機(jī),服務(wù)程序自動(dòng)檢測(cè)、下載和安裝軟件。如Install Shield的自動(dòng)更新服務(wù)系統(tǒng)。 制作產(chǎn)品安裝程序時(shí)設(shè)定更新服務(wù)信息,安裝產(chǎn)品時(shí)將服務(wù)程序安裝到用戶計(jì)算機(jī),安裝程序和更新服務(wù)程序集成得比較好 u 系統(tǒng)啟動(dòng)服務(wù)程序,后臺(tái)檢測(cè)、下載和安裝軟件包,沒(méi)有更新界面 u 采用瀏覽器的網(wǎng)絡(luò)設(shè)置,下載支持?jǐn)帱c(diǎn)續(xù)傳 u 更新失

21、敗可撤消更新 u 更新后能重啟的軟件 1.3 什么是軟件升級(jí) 軟件產(chǎn)品技術(shù)復(fù)雜,功能需要不斷完善,要不斷更新、修改,這就是軟件升級(jí)。對(duì)于軟件版本,前一部分?jǐn)?shù)字的遞增表示該軟件產(chǎn)品有較大的,往往帶有實(shí)質(zhì)性的改進(jìn),后一部分?jǐn)?shù)字的遞增則表示只有局部的、較小的改進(jìn),通常是對(duì)較小的bug或安全性的修改或?qū)π阅艿妮^小的提高。 為了為維護(hù)軟件項(xiàng)目,我們提出了對(duì)版本進(jìn)行管理控制的要求。而對(duì)于用戶來(lái)說(shuō),版本直接體現(xiàn)在版本號(hào)命名上。那么,如何對(duì)版本號(hào)進(jìn)行命名呢?我查了許多資料,希望能夠解釋的比較具體。下面讓我們看一下比較普遍的三種命名格式。 GNU風(fēng)格的版本號(hào)命名格式:主版本號(hào).子版本號(hào)[.修正版本

22、號(hào).[編譯版本號(hào)]] 示例:1.2.1, 2.0, 5.0.0 Windows 風(fēng)格的版本號(hào)命名格式:主版本號(hào).子版本號(hào)[修正版本號(hào).[編譯版本號(hào)]] .NET Framework 風(fēng)格版本號(hào)命名格式:主版本號(hào).子版本號(hào)[.編譯版本號(hào)[.修正版本號(hào)]] 在本文中,軟件升級(jí)包括安裝計(jì)算機(jī)上已有軟件的新的版本、從原版本上升到新的版本、對(duì)現(xiàn)有軟件的更新。 1.4 軟件升級(jí)的意義 面對(duì)目前計(jì)算機(jī)應(yīng)用的普及,越來(lái)越多的行業(yè)離不開(kāi)計(jì)算機(jī),這無(wú)疑給計(jì)算機(jī)軟件開(kāi)發(fā)人員和軟件供應(yīng)商帶來(lái)很大壓力。對(duì)計(jì)算機(jī)軟件行業(yè)而言,計(jì)算機(jī)技術(shù)的普及既是挑戰(zhàn)也是機(jī)遇。必須承認(rèn),軟件供應(yīng)商已經(jīng)為我們提供了優(yōu)質(zhì)的軟件

23、和服務(wù),但這仍然不能滿足用戶們的需求。幾乎同時(shí)在每個(gè)行業(yè)的每臺(tái)計(jì)算機(jī)上都同時(shí)安裝了數(shù)十款軟件,對(duì)于用戶數(shù)量較多的企業(yè),寄希望于系統(tǒng)維護(hù)人員去更新每一臺(tái)計(jì)算機(jī)上的應(yīng)用軟件簡(jiǎn)直是天方夜譚。他們更希望軟件供應(yīng)商能夠提供帶有自動(dòng)更新功能的軟件,這樣似乎更人性化。 面對(duì)這些需求,本課題試圖尋求一種Windows 應(yīng)用系統(tǒng)從開(kāi)發(fā)和變化的角度來(lái)適應(yīng)市場(chǎng)需求和工程領(lǐng)域的實(shí)際需求,以減少系統(tǒng)維護(hù)人員的壓力,提高他們的工作效率,以求得最大的經(jīng)濟(jì)效益和社會(huì)效益。 在軟件工程中,軟件升級(jí)屬于軟件維護(hù)階段。通常有四類維護(hù)活動(dòng):改正性維護(hù),即診斷和改正軟件使用過(guò)程中發(fā)現(xiàn)的軟件錯(cuò)誤;適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變

24、化;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò)充軟件使他更加完善;預(yù)防性維護(hù),即修改軟件為將來(lái)的維護(hù)活動(dòng)預(yù)先作準(zhǔn)備。軟件維護(hù)是軟件生命周期中的一個(gè)重要組成部分,軟件維護(hù)的成本高達(dá)開(kāi)發(fā)成本的四倍左右。每一次維護(hù)活動(dòng)以后,軟件商通常會(huì)修改軟件的版本號(hào),即又有了一個(gè)新的版本,如果用戶要想使用新的版本,就必須要升級(jí)。由此可以看出,軟件升級(jí)具有重大意義:可以改正軟件中的錯(cuò)誤,適應(yīng)新的軟硬件環(huán)境,完善軟件功能,以及為以后的升級(jí)做準(zhǔn)備。 軟件升級(jí)分為兩種,一種是從一個(gè)版本升級(jí)到另一個(gè)版本,軟件版本號(hào)的第一數(shù)字發(fā)生變化,這種升級(jí)一般是對(duì)原版本有了較大的改進(jìn);另外一種是對(duì)軟件的副版本號(hào)發(fā)生變化,這種升級(jí)只對(duì)軟件做了

25、較小的改進(jìn),我們叫做打補(bǔ)丁。 1.5 軟件升級(jí)的現(xiàn)狀 各個(gè)軟件廠家都在不斷推出自己軟件產(chǎn)品的新版本,從而增加軟件的功能,補(bǔ)充產(chǎn)品的性能,補(bǔ)全漏洞,提高競(jìng)爭(zhēng)能力。用戶為了自己使用的方便和避免各種各樣由于軟件問(wèn)題引起的錯(cuò)誤,也需要對(duì)常用軟件進(jìn)行更新。我們常見(jiàn)的需要升級(jí)的軟件有殺毒軟件、驅(qū)動(dòng)程序、操作系統(tǒng),瀏覽器以及第三方軟件應(yīng)用程序等。 1.6 應(yīng)用程序的升級(jí) 應(yīng)用軟件包括我們常用的辦公軟件,如WinZip、WinRar、Office軟件等。還包括在某一行業(yè)通用軟件,以及某單位自行開(kāi)發(fā)的軟件或請(qǐng)軟件開(kāi)發(fā)人員開(kāi)發(fā)的軟件,如建筑行業(yè)的預(yù)算軟件。 1.6.1獲得最新版本的軟件 當(dāng)我們

26、熟悉的軟件推出新的版本可以通過(guò)以下方式獲得: 1)商業(yè)軟件 找到原經(jīng)銷商付費(fèi)升級(jí); 免費(fèi)派送; 2)免費(fèi)軟件 網(wǎng)上免費(fèi)下載升級(jí),如微軟很多產(chǎn)品可以直接到Microsoft官方網(wǎng)站下載。 3)共享軟件 可以從軟件主頁(yè)上下載試用版,注冊(cè)用戶會(huì)有E-mail通知。 1.6.2對(duì)應(yīng)用軟件進(jìn)行升級(jí) 應(yīng)用軟件的升級(jí)分為以下四種情況: 1)需要?jiǎng)h除舊版本的軟件。有些軟件升級(jí)需要?jiǎng)h除原來(lái)的舊版本。如著名的DirectX 8.0強(qiáng)化了圖像質(zhì)量和音頻效果,但如果你已經(jīng)安裝過(guò)它的測(cè)試版,那么在升級(jí)時(shí)就會(huì)無(wú)法安裝,需要卸載原來(lái)安裝的版本。 2)需要無(wú)后臺(tái)程序運(yùn)行的軟件。有許多軟件在安裝時(shí)要求無(wú)

27、后臺(tái)程序同時(shí)運(yùn)行。雖然我們看到“建議在安裝時(shí)關(guān)閉其他應(yīng)用程序”的提示總是不太在意,但有的軟件卻對(duì)這方面比較敏感,如智能陳橋五筆輸入軟件,他在安裝時(shí)不允許舊版本的陳橋五筆處于運(yùn)行狀態(tài)。 3)升級(jí)時(shí)需要相應(yīng)支持的軟件。有一些軟件安裝需要其他文件的支持,如游戲程序一般需要較高版本的DirectX的支持,還有一些數(shù)據(jù)庫(kù)軟件需要VB、VC運(yùn)行庫(kù)或ODBC的支持等,若安裝程序檢測(cè)到條件不足時(shí),安裝程序就會(huì)無(wú)法進(jìn)行下去。這時(shí)可以到原下載網(wǎng)站去下載支持文件或者根據(jù)提示信息重新安裝有關(guān)的軟件。 4)只需要進(jìn)行在線更新的軟件按。有些軟件可以自動(dòng)鏈接到廠家或軟件公司的網(wǎng)站看是否有新的更新的版本,如果有新的版本就

28、進(jìn)行升級(jí)。 總的來(lái)說(shuō),絕大部分應(yīng)軟件升級(jí)的要求并不高,只要直接執(zhí)行Setup.exe文件即可,有些軟件的升級(jí)更簡(jiǎn)單,只需要將相應(yīng)文件拷貝到原安裝路徑下覆蓋原文件即可。本文采用的就是這種最簡(jiǎn)單的方案。采用通用的方法,即比較Client和Server兩端配置文件中版本號(hào)的大大小來(lái)決定是否有更新,這種思路很通用。 1.7 常見(jiàn)的升級(jí)方式 常見(jiàn)的升級(jí)方式有以下幾種,每種方式都有自己的特點(diǎn),用戶可以根據(jù)自己的情況選擇不同的升級(jí)方式: 1)下載升級(jí)包 從軟件商的網(wǎng)站或其他網(wǎng)站下載軟件升級(jí)包,然后運(yùn)行其中的可執(zhí)行文件,就會(huì)對(duì)原有軟件進(jìn)行升級(jí)。比如我們常會(huì)在殺毒軟件的網(wǎng)站上看到各種各樣的升級(jí)包

29、。 這種升級(jí)方式比較簡(jiǎn)單,特別適合本機(jī)不能上網(wǎng)的用戶,如果幾臺(tái)計(jì)算機(jī)安裝了同一款軟件的同一版本而相互之間又沒(méi)有聯(lián)網(wǎng)的情況下,此種升級(jí)方式是比較合適的。 2)在線升級(jí) 這種方式可謂“自動(dòng)化”升級(jí),用戶只需要保證網(wǎng)絡(luò)是暢通的,點(diǎn)擊升級(jí)軟件界面上的“在線升級(jí)”或“自動(dòng)升級(jí)”按鈕,軟件就會(huì)自動(dòng)連接到相應(yīng)的網(wǎng)站上去,檢查本機(jī)上已安裝的組件,然后列出網(wǎng)站上可更新的內(nèi)容。如果用戶點(diǎn)擊“確認(rèn)升級(jí)”按鈕,就會(huì)自動(dòng)更新本機(jī)已安裝的軟件,然后重新啟動(dòng)該軟件,就是現(xiàn)在的最新版本了。這種升級(jí)方式是最簡(jiǎn)單的,用戶只需要按照提示一步一步進(jìn)行就可以了,即使對(duì)電腦不熟悉的人都可以完成軟件的升級(jí),但是必須保證網(wǎng)絡(luò)是暢通的,

30、如果網(wǎng)絡(luò)中斷了,那么升級(jí)失敗,軟件還是原來(lái)的版本,可以在網(wǎng)絡(luò)通暢的時(shí)候重新升級(jí)。 3)局域網(wǎng)升級(jí) 有些軟件會(huì)提供從局域網(wǎng)上升級(jí)的功能。如金山毒霸。首先將服務(wù)器上的金山毒霸升級(jí)到最新版本。然后將服務(wù)器上的金山毒霸安裝目錄設(shè)置為只讀共享,并將局域網(wǎng)其他機(jī)器上的獨(dú)霸升級(jí)程序設(shè)置為“本地、局域網(wǎng)上升級(jí)”,升級(jí)目錄設(shè)為服務(wù)器上獨(dú)霸安裝目錄下的Update目錄,選定路徑就可以自動(dòng)升級(jí)了。 這種方式對(duì)于網(wǎng)絡(luò)管理員是很省時(shí)省力的,但是目前很多軟件沒(méi)有提供這種升級(jí)方式,所以網(wǎng)絡(luò)管理員通常采用Ghost進(jìn)行備份安裝。 4)覆蓋安裝 此升級(jí)方式就是直接將新版本軟件覆蓋舊版本軟件,從而達(dá)到升級(jí)的效果。但是需

31、要注意的是新本跟舊版軟件的安裝目錄必須一樣,否則升級(jí)不成功。如我們常常從一種操作系統(tǒng)升級(jí)到另外一種操作系統(tǒng)。這種升級(jí)方式的好處是不管是系統(tǒng)軟件還是應(yīng)用軟件,升級(jí)后都保持原來(lái)的設(shè)置,不需要重新設(shè)置,特別是對(duì)操作系統(tǒng),采用這種升級(jí)方式我們不需要重新安裝大量的應(yīng)用程序。 5)移除后安裝 這是很多軟件作者建議的安裝方式,如果使用第四種方法升級(jí)失敗了,那么建議用戶使用這種方式。這種方式將原版本刪除后再安裝新版本,可以保證安裝的完整、準(zhǔn)確。在移除舊版本的軟件之前,如果軟件帶有數(shù)據(jù)庫(kù),或其他用戶資料,則應(yīng)保存數(shù)據(jù)庫(kù)的內(nèi)容或?qū)?shù)據(jù)導(dǎo)出,安裝完新版本之后再導(dǎo)入,也有軟件升級(jí)時(shí)提供了數(shù)據(jù)自動(dòng)備份的功能,但是目

32、前這種軟件很少。由于是完整的安裝,這種方式需要的時(shí)間比較長(zhǎng)。本文也是采取這種方式。 1.8 軟件升級(jí)原理 雖然升級(jí)方式多種多樣,但是他們的原理是大同小異的,就是把新版本的軟件與計(jì)算機(jī)上已安裝的軟件進(jìn)行對(duì)比,然后將舊版本中欲更新的部分換成新版本軟件中相應(yīng)的部分。例如升級(jí)殺毒軟件就是更新病毒庫(kù),有經(jīng)驗(yàn)的用戶甚至可以在病毒庫(kù)中加入新的病毒代碼,從而預(yù)防新的病毒。在更新硬件的驅(qū)動(dòng)程序時(shí),就是用新的INF文件代替系統(tǒng)中舊的INF文件(在Windows 2000系統(tǒng)中,系統(tǒng)盤的WINNT\INF中存放的全是驅(qū)動(dòng)程序文件,在其他系統(tǒng)中,驅(qū)動(dòng)程序存放在系統(tǒng)盤的Windows\INF文件夾中)。在進(jìn)行完

33、全安裝時(shí),則進(jìn)行了較大的改動(dòng)。我們也可以看成是用新的部分代替原軟件中舊的部分,只是替換的部分很多。 為了便于升級(jí),很多軟件采用了模塊化設(shè)計(jì)的思想,這也是軟件發(fā)展的方向。任何整體都是由部分組成的,將一個(gè)軟件分為若干個(gè)功能模塊,每個(gè)模塊完成一個(gè)任務(wù),那么在升級(jí)的時(shí)候?qū)ο鄳?yīng)的模塊進(jìn)行升級(jí),而不影響其他部分。 1.9 論文主要的工作內(nèi)容 本論文主要的工作內(nèi)容包括: 1. 分析課題的可行性和需求分析說(shuō)明; 2. 根據(jù)選定的開(kāi)發(fā)方案,對(duì)解決方案的功能模塊進(jìn)行分析設(shè)計(jì),以及根據(jù)功能模塊的需要詳細(xì)設(shè)計(jì)出數(shù)據(jù)存儲(chǔ)方式和存儲(chǔ)結(jié)構(gòu),最后根據(jù)系統(tǒng)實(shí)現(xiàn)的功能結(jié)合系統(tǒng)數(shù)據(jù)存儲(chǔ)方式選擇相關(guān)技術(shù)和平臺(tái); 3.

34、 根據(jù)制定的開(kāi)發(fā)方案總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)的精神,開(kāi)發(fā)出相應(yīng)的應(yīng)用程序,并實(shí)現(xiàn)課題預(yù)期的功能和目標(biāo); 37 XX院本科畢業(yè)設(shè)計(jì)(論文) 2 相關(guān)開(kāi)發(fā)技術(shù)和工具介紹 2 相關(guān)開(kāi)發(fā)技術(shù)和工具介紹 2.1 Windows應(yīng)用程序介紹 Windows應(yīng)用程序又稱GUI(圖像用戶界面)應(yīng)用程序,它在我們計(jì)算機(jī)中無(wú)處不在,它在軟件開(kāi)發(fā)歷史上曾風(fēng)靡一時(shí),且至今仍在眾多的系統(tǒng)開(kāi)發(fā)中在占有一席之地。Windows應(yīng)用程序的設(shè)計(jì)一般采用C/S (Client/Server,客戶機(jī)/服務(wù)器)結(jié)構(gòu)進(jìn)行開(kāi)發(fā)。C/S結(jié)構(gòu)是大家熟悉的軟件系統(tǒng)體系結(jié)構(gòu)

35、,它通過(guò)將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通信開(kāi)銷,可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì)。C/S結(jié)構(gòu)是相對(duì)現(xiàn)今的另一種開(kāi)發(fā)模式B/S結(jié)構(gòu)而言,B/S機(jī)構(gòu)開(kāi)發(fā)是隨著Internet的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面是通過(guò)客戶端瀏覽器來(lái)解析呈現(xiàn),其主要邏輯是在服務(wù)器端實(shí)現(xiàn)。在現(xiàn)今的開(kāi)發(fā)模式中B/S結(jié)構(gòu)也有其自身的優(yōu)勢(shì):它采用弱客戶端,客戶端僅需要一個(gè)瀏覽器解析完成,其它的實(shí)現(xiàn)一般采用服務(wù)器端動(dòng)態(tài)技術(shù)。但是其相對(duì)C/S開(kāi)發(fā)有很多的問(wèn)題呈現(xiàn),如交互界面豐富性,安全問(wèn)題等方面,所以至今C/S結(jié)構(gòu)在軟件開(kāi)發(fā)中仍有不可取代的地位。 在Windows應(yīng)用

36、程序的開(kāi)發(fā)技術(shù)平臺(tái)主要有C++的MFC開(kāi)發(fā)、SUN公司的J2EE開(kāi)發(fā)平臺(tái)上的GUI編程、VB與Delphi上的開(kāi)發(fā)以及微軟的.NET平臺(tái)都提供了相應(yīng)的開(kāi)發(fā)。這些技術(shù)各有所長(zhǎng),其中最出名的就是Delphi和.NET平臺(tái)的開(kāi)發(fā)模式,它們都以快速開(kāi)發(fā)而著稱,但VB語(yǔ)言的落后呈明顯趨勢(shì),現(xiàn)今微軟在平臺(tái)系統(tǒng)上的優(yōu)勢(shì)和前沿的可復(fù)用性設(shè)計(jì),大大的推動(dòng)了.NET技術(shù)的快速應(yīng)用。很多Windows應(yīng)用程序都采用了微軟的.NET技術(shù)來(lái)實(shí)現(xiàn)。 2.2 .NET Framework簡(jiǎn)介 .NET Framework是Microsoft推出的新開(kāi)發(fā)平臺(tái),它簡(jiǎn)化了各種軟件結(jié)構(gòu)的開(kāi)發(fā),并在Visual Studio

37、 這個(gè)強(qiáng)大的IDE配合下,加快了軟件系統(tǒng)開(kāi)發(fā)的效率和縮短了軟件開(kāi)發(fā)的周期。 .NET Framework是支持生成和運(yùn)行下一代應(yīng)用程序和 XML Web services 的內(nèi)部 Windows 組件,它具有兩個(gè)主要組件:公共語(yǔ)言運(yùn)行庫(kù)(CLR)和.NET Framework類庫(kù)。CLR是.NET Framework的基礎(chǔ)。你可以將它的運(yùn)行庫(kù)看作一個(gè)在執(zhí)行時(shí)管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),強(qiáng)制實(shí)施嚴(yán)格的類型安全以及可確保安全性和可靠性的多種形式的代碼準(zhǔn)確性。事實(shí)上,代碼管理的概念是運(yùn)行庫(kù)的基本原則。以運(yùn)行庫(kù)為目標(biāo)的代碼稱為托管代碼,.NET中絕大部分都屬于這

38、類,而不以運(yùn)行庫(kù)為目標(biāo)的代碼稱為非托管代碼,如指針等。.NET Framework的另一個(gè)主要組件就是類庫(kù),它是一個(gè)完全面向?qū)ο箢愋桶踩目蓮?fù)用類庫(kù)集合,我們可以使用它們來(lái)開(kāi)發(fā)多種應(yīng)用程序,這些應(yīng)用程序既包括傳統(tǒng)的命令行(控制臺(tái)應(yīng)用程序)和圖形用戶界面 (GUI,即一般的Windows應(yīng)用程序)應(yīng)用程序,也可以進(jìn)行基于B/S的ASP.NET Web開(kāi)發(fā)如Web Form 、ASP.NET MVC和 Web services等),以及Remote、WCF、WWF、WPF等微軟.NET的開(kāi)發(fā)新技術(shù)新模式。 .NET Framework可由非托管組件承載,這些組件將公共語(yǔ)言運(yùn)行庫(kù)加載到它們的進(jìn)程中

39、并啟動(dòng)托管代碼的執(zhí)行,從而創(chuàng)建一個(gè)可以同時(shí)利用托管和非托管功能的軟件環(huán)境。.NET Framework不但提供若干個(gè)運(yùn)行庫(kù)宿主,而且還支持第三方運(yùn)行庫(kù)宿主的開(kāi)發(fā)。Microsoft于2005年推出了VS2005中集成了.NET Framework2.0,于.NET Framework1.0的基礎(chǔ)上增加了很多類庫(kù),使其功能更強(qiáng)大,在2008和2010年分別推出的VS2008、VS2010中集成了.NET Framework3.5和.NET Framework4.0,更添加了多種開(kāi)發(fā)新技術(shù)。使得.NET平臺(tái)更加的強(qiáng)大,并一步一步的加快軟件開(kāi)發(fā)的開(kāi)發(fā)效率,縮短軟件的開(kāi)發(fā)周期 2.3 ASP.N

40、ET的發(fā)展基礎(chǔ) 隨著PHP,JSP的技術(shù)的出現(xiàn),ASP的王者地位受到了嚴(yán)峻的挑戰(zhàn)。JSP的技術(shù)在執(zhí)行效率,安全性等特性上已經(jīng)完全超過(guò)了ASP,同時(shí)還具有ASP所無(wú)法比擬的跨平臺(tái)性, JSP的誕生,使越來(lái)越多的人開(kāi)始選擇它,ASP技術(shù)面臨前所未有的危機(jī)。 在這種情況下,Microsoft公司很快發(fā)布了其宏偉的“Windows.NET”計(jì)劃。 ASP.NET不僅僅是下一版本的 Active Server Page (ASP);它是統(tǒng)一的Web 開(kāi)發(fā)平臺(tái),用來(lái)提供開(kāi)發(fā)人員快速生成企業(yè)級(jí) Web 應(yīng)用程序所需的服務(wù)。ASP.NET 的語(yǔ)法在很大程度上與 ASP 兼容,同時(shí)它還提供一種新的編程模型和

41、結(jié)構(gòu),用于生成更安全、可伸縮和穩(wěn)定的應(yīng)用程序??梢酝ㄟ^(guò)在現(xiàn)有 ASP 應(yīng)用程序中逐漸添加 ASP.NET 功能,隨時(shí)增強(qiáng)該ASP 應(yīng)用程序的功能 ASP.Net可完全利用.Net架構(gòu)的強(qiáng)大,安全,高效的平臺(tái)特性。ASP.Net是運(yùn)行在服務(wù)器后端編譯后的普通語(yǔ)言運(yùn)行時(shí)代碼,運(yùn)行時(shí)早綁定(Early Binding),即時(shí)編譯,本地優(yōu)化,緩存服務(wù),零安裝配置,基于運(yùn)行時(shí)代碼受管與驗(yàn)證的安全機(jī)制等都為ASP.Net帶來(lái)卓越的性能。 對(duì)XML,SOAP,WSDL等Internet標(biāo)準(zhǔn)的強(qiáng)健支持為ASP.Net在異構(gòu)網(wǎng)絡(luò)里提供了強(qiáng)大的擴(kuò)展性。 ASP.NET是微軟力推的功能強(qiáng)大的編程環(huán)境,可以使用

42、C#等多種高級(jí)語(yǔ)言及腳本語(yǔ)言、HTML、XML、XSL等來(lái)創(chuàng)建基于網(wǎng)絡(luò)的應(yīng)用程序。ASP.NET將C#作為一種面向?qū)ο笳Z(yǔ)言,在很多方面來(lái)看,C#將成為微軟的與Java相似的語(yǔ)言。 C#是ASP.NET開(kāi)發(fā)中一個(gè)最重要的功能,微軟會(huì)將C#發(fā)展成為Java的強(qiáng)勁對(duì)手。這也是微軟.Net框架的一個(gè)重要組成部分。 ASP.NET在面向?qū)ο笮浴?shù)據(jù)庫(kù)連接、大型站點(diǎn)應(yīng)用等方面都優(yōu)于ASP程序,ASP.NET還提供更多的其他方面的新特性,例如:內(nèi)置的對(duì)象緩存和頁(yè)面結(jié)果緩存;內(nèi)置的XML支持,可用于XML數(shù)據(jù)集的簡(jiǎn)單處理;服務(wù)器控制提供了更充分的交互式制等。 ASP.NET依然完全鎖定在微軟的操作系統(tǒng)中,

43、要真正發(fā)揮ASP.NET潛力,你要使用C#或VB.net。這兩種語(yǔ)言將成為ASP.NET標(biāo)準(zhǔn)的核心的腳本語(yǔ)言。 2.4 C#編程語(yǔ)言 微軟宣布了它的最新編程語(yǔ)言C#是專門為.NET應(yīng)用而開(kāi)發(fā)出的語(yǔ)言,這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運(yùn)行庫(kù)的支持下,.NET框架的各種優(yōu)點(diǎn)在C#中表現(xiàn)得淋漓盡致,這是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它將作為Visual Studio中的一部分推出。C#(發(fā)音為“C-Sharp”)既保持了C++中熟悉的語(yǔ)法,并且還包含了大量的高效代碼和面向?qū)ο筇匦?。?jù)微軟產(chǎn)品經(jīng)理透露,C#語(yǔ)言將在保持C/C++靈活性的基礎(chǔ)上為程序員帶來(lái)更高效的RAD開(kāi)發(fā)方式

44、。它不僅能用于WEB服務(wù)程序的開(kāi)發(fā),并且還能開(kāi)發(fā)強(qiáng)大的系統(tǒng)級(jí)程序。 C#是一種簡(jiǎn)潔且類型安全的面向?qū)ο笳Z(yǔ)言,開(kāi)發(fā)人員可以用其來(lái)構(gòu)建在.NET Framework平臺(tái)上運(yùn)行的編程語(yǔ)言,用其可以創(chuàng)建在.NET Framework上運(yùn)行的多種應(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#的一些突出的特點(diǎn), ●簡(jiǎn)潔的語(yǔ)法 ●精心地面向?qū)ο笤O(shè)計(jì) ●與Web的緊密結(jié)合 ●完整的安全性與錯(cuò)誤處理 ●

45、版本處理技術(shù) ●靈活性與兼容性 ●安全性。 正是由于其靈活性,C#允許與C風(fēng)格的需要傳遞指針型參數(shù)的API進(jìn)行交互操作,DLL的任何入口點(diǎn)都可以在程序中進(jìn)行訪問(wèn)。C#遵守.NET公用語(yǔ)言規(guī)范(Common Language Specification, CLS),從而保證了C#組件與其它語(yǔ)言組件間的互操作性。元數(shù)據(jù)(Metadata)概念的引入既保證了兼容性,又實(shí)現(xiàn)了類型安全。 2.5 開(kāi)發(fā)平臺(tái) Visual Studio 2005、IIS 5.1服務(wù)器、.NET Framework 2.0 圖 2.1 VS2005開(kāi)發(fā)工具界面 2.6 通信協(xié)議 HTTP協(xié)議

46、(超文本傳輸協(xié)議)的主要特點(diǎn)可概括如下: (1)簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 (2)由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。 (3)靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。  (4)無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。 (5)無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理

47、沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。 另外,在實(shí)驗(yàn)中發(fā)現(xiàn)很多網(wǎng)絡(luò)都設(shè)置了防火墻,考慮到安全問(wèn)題,網(wǎng)絡(luò)管理員會(huì)屏蔽很多端口。而對(duì)于HTTP最常用的80端口通常是開(kāi)放的,這也是選擇HTTP協(xié)議的一個(gè)重要因素。 2.7 相關(guān)知識(shí) 2.7.1 委派 委派是C#引入的一種新的數(shù)據(jù)類型,它非常類似于C/C++中的函數(shù)指針,常常用于在編譯時(shí)未綁定的動(dòng)態(tài)方法調(diào)用。與函數(shù)指針不同的是委派在C#中完全實(shí)現(xiàn)了面向?qū)ο?,它既可以引用靜態(tài)方法,也可以引用實(shí)例方法,而函數(shù)指針只能引用靜態(tài)

48、方法。C#中的委派同時(shí)也是類型安全的。 作為一種面向?qū)ο蟮臄?shù)據(jù)類型,委派的使用分為三步:委派聲明,委派實(shí)例化和委派調(diào)用。委派聲明就是定義一個(gè)封裝特定參數(shù)類型和返回值類型的方法體(靜態(tài)方法或?qū)嵗椒ǎ┑臄?shù)據(jù)類型,看下面的示例: delegate int Compute (int left, int right); 可以看到,委派類型Compute包含了方法的兩個(gè)要素: 參數(shù)類型和返回值類型。委派類型和方法只有滿足下面兩個(gè)條件,才能說(shuō)它們是兼容的: 1. 參數(shù)的數(shù)量相同,并且它們的類型也按順序相同; 2. 返回值相同。 委派類型相同指的是它們聲明的類型為同一類型(名字一樣)

49、。而委派實(shí)例相等則是指它們綁定的方法為同一個(gè)方法,或相同的方法按相同的順序組成的方法鏈,而它們本身的類型只要兼容即可(同樣滿足上面兩個(gè)條件),不必強(qiáng)求同名。 委派實(shí)例化就是將委派類型綁定到特定方法的過(guò)程,和其他對(duì)象的實(shí)例化相似,都需要用new語(yǔ)句,只是必須接受和該委派類型兼容的方法名作為new語(yǔ)句的參數(shù)。如果是實(shí)例方法,必須采用兩者中間加點(diǎn)號(hào)的方式同時(shí)提供實(shí)例對(duì)象和方法。 委派實(shí)例化后就可以像調(diào)用方法一樣進(jìn)行委派調(diào)用了。 委托是一個(gè)類,它定義了方法的類型,使得可以將方法當(dāng)作另一個(gè)方法的參數(shù)來(lái)進(jìn)行傳遞,這種將方法動(dòng)態(tài)地賦給參數(shù)的做法,可以避免在程序中大量使用If-Else(Switch

50、)語(yǔ)句,同時(shí)使得程序具有更好的可擴(kuò)展性。 2.7.2 事件 事件是一種使對(duì)象或類能夠提供通知的成員,類或?qū)ο罂梢酝ㄟ^(guò)事件為其他類或?qū)ο笸ㄖl(fā)生的相關(guān)事情,客戶端則可以通過(guò)提供事件處理程序?yàn)橄鄳?yīng)的事件添加可執(zhí)行代碼。事件是對(duì)象發(fā)送的消息,已發(fā)信號(hào)通知操作的發(fā)生。而操作可能由用戶交互(例如鍵盤或鼠標(biāo)操作)引起的,也可能由某些系統(tǒng)行為或其他邏輯觸發(fā)。發(fā)送或引發(fā)事件的對(duì)象稱為“發(fā)行者”,接收事件并對(duì)其作出響應(yīng)的對(duì)象稱為“訂閱者”。 委派事件的基礎(chǔ),在事件通信中時(shí)間發(fā)行者并不知道哪個(gè)對(duì)象或方法將接收并處理由其引發(fā)的事件,委派就是事件發(fā)送發(fā)和接收方之間的紐帶。 事件處理程序本身都是方法成員,事件處

51、理程序的唯一限制是其必須與事件所要求的委托簽名匹配,也包括返回類型和參數(shù)。這個(gè)簽名是事件定義的一部分,可以通過(guò)一個(gè)委托類型來(lái)指定。 下面的示例聲明了名為“EventName”的公共事件,其委托類型為EventNameEventHandler; Public event EventNameEventHandler EventName; 示例: public delegate void ShowHandler(); //聲明一個(gè)公共的委托類 public event ShowHandler OnShow; //聲明一個(gè)事件 2.7.3 線程 在Windows Tas

52、k Manager 窗口中,還包含了進(jìn)程使用的CPU的情況。這是因?yàn)檫M(jìn)程也有一個(gè)由計(jì)算機(jī)的處理器使用的執(zhí)行次序。這個(gè)執(zhí)行次序就稱為線程。每個(gè)進(jìn)程至少有一個(gè)執(zhí)行順序或線程。線程的執(zhí)行順序是由應(yīng)用程序的方法代碼來(lái)決定的。跟準(zhǔn)確地講,線程其實(shí)是指向進(jìn)程的指令流部分的一個(gè)指針。線程實(shí)際上不包括指令,只是指出了當(dāng)前和將來(lái)可能要使用的路徑,而這是通過(guò)數(shù)據(jù)和分支判斷決定的指令來(lái)完成的。 .NET Framework 支持自由線程,所以在所有的.NET語(yǔ)言中都可以使用自由線程。 使用線程之前一定記住先添加引用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#語(yǔ)言和公共運(yùn)行庫(kù)(CLR)中新增加的一項(xiàng)新功能,使用泛型類型可以最大限度地重用代碼、保護(hù)類型的安全和提高。使用泛型可以參數(shù)化代碼,然后在使用的時(shí)候,填充具體的類型參數(shù),該參數(shù)是泛型類型要操作的對(duì)象類型。常見(jiàn)的場(chǎng)景是使用泛型列表,如下所示: var letters = new List() letters.Add(“Alpha”); letters.Add(“Beta”); letters.Add(“Charlie”); foreach(var letter in letters) { Consol

55、e.Writeline(letter); } 在前面的代碼中,letters 是泛型的字符串列表。注意這個(gè)尖括號(hào),它指定字符串類型,new List()用來(lái)實(shí)例化letters.List的文檔說(shuō)明它是參數(shù)化類型,被定義為L(zhǎng)ist ,這里的T是類型參數(shù),它意味著你可以使用任何類型替換T,而且List可以操作這個(gè)類型。 Dictionary類 Dictionary類泛型類是表示鍵和值的集合(類型參數(shù)TKey和TValue分別表示鍵和值的類型)該集合稱為“字典”,其中的每個(gè)添加項(xiàng)都由一個(gè)值及相關(guān)的鍵組成。Diction

56、ary類泛型類提供了一組鍵到一組值的映射,由于該類作為一個(gè)哈希表來(lái)實(shí)現(xiàn),因此通過(guò)鍵來(lái)檢索值的速度非???。 2.7.5 裝箱與拆箱 1、裝箱和拆箱是一個(gè)抽象的概念 2、裝箱是將值類型轉(zhuǎn)換為引用類型 ;拆箱是將引用類型轉(zhuǎn)換為值類型 利用裝箱和拆箱功能,可通過(guò)允許值類型的任何值與Object 類型的值相互轉(zhuǎn)換,將值類型與引用類型鏈接起來(lái) 例如: int val = 100; object obj = val; Console.WriteLine (“對(duì)象的值 = {0}", obj); 這是一個(gè)裝箱的過(guò)程,是將值類型轉(zhuǎn)換為引用類型的

57、過(guò)程 int val = 100; object obj = val; int num = (int) obj; Console.WriteLine ("num: {0}", num); 這是一個(gè)拆箱的過(guò)程,是將值類型轉(zhuǎn)換為引用類型,再由引用類型轉(zhuǎn)換為值類型的過(guò)程 XX院本科畢業(yè)設(shè)計(jì)(論文) 5 系統(tǒng)實(shí)現(xiàn) 3 需求分析 3.1 應(yīng)用需求分析 如今計(jì)算機(jī)軟件技術(shù)的發(fā)展已到了一個(gè)較高水平,許多傳統(tǒng)行業(yè)和新興行業(yè)如電子商務(wù)等的發(fā)展已離不開(kāi)計(jì)算機(jī)軟件技術(shù)

58、的支撐,它們都在不同程度和不同形式的利用計(jì)算機(jī)實(shí)現(xiàn)各種的自動(dòng)化、機(jī)器化,不再是人工手動(dòng)管理。尤其是Internet的飛速發(fā)展,將整個(gè)世界聯(lián)系在一起,信息廣泛的在Internet上快速的傳播,信息的變化日新月異,再不斷的飛速膨脹,信息的變化對(duì)于企業(yè)的影響也越來(lái)越大,信息的收集已經(jīng)不再是人工方式,決策的制定也變得越來(lái)越復(fù)雜,導(dǎo)致軟件出來(lái)了大型的管理系統(tǒng)ERP,并影響著軟件的發(fā)展,推動(dòng)著軟件技術(shù)的更新。 信息時(shí)代,人們的工作生活依賴于眾多軟件,大多數(shù)軟件處于軟件測(cè)試和發(fā)布初期,升級(jí)的改動(dòng)是非常頻繁的。如果依靠傳統(tǒng)的維護(hù)方式——軟件維護(hù)人員挨個(gè)去給每臺(tái)機(jī)器上的軟件做升級(jí)維護(hù),在機(jī)子數(shù)量較少的情況下,

59、一兩個(gè)維護(hù)人員就可以應(yīng)付,但如果客戶端用戶數(shù)量成百上千且比較分散,這種情況下采用傳統(tǒng)的升級(jí)維護(hù)方式幾乎是不可能完成的。針對(duì)這種情況,各個(gè)C/S模式的軟件紛紛將自己的軟件維護(hù)改為自動(dòng)升級(jí)以適應(yīng)現(xiàn)實(shí)的需求。 自動(dòng)更新的時(shí)候,客戶端軟件提交更新請(qǐng)求給固定的網(wǎng)址,然后網(wǎng)址返回最新版本的版本號(hào)。客戶端軟件和自己的版本號(hào)對(duì)比,如果發(fā)現(xiàn)服務(wù)器的版本和自己的版本不一樣,那么就請(qǐng)求下載升級(jí)補(bǔ)丁。服務(wù)器響應(yīng)請(qǐng)求,提供補(bǔ)丁下載;下載成功后,手動(dòng)或自動(dòng)安裝一下就可以了。 安裝補(bǔ)丁的時(shí)候,客戶端的主程序一般是要關(guān)閉的,除非采用動(dòng)態(tài)卸載、調(diào)入組件的技術(shù),比如網(wǎng)絡(luò)游戲,就是盡量讓玩家邊玩游戲邊更新。 如果更新的是主程

60、序,那么就必須關(guān)閉主程序了。可是主程序關(guān)閉了之后,誰(shuí)來(lái)調(diào)用安裝補(bǔ)丁呢?為了解決這個(gè)問(wèn)題,人們把主程序和自動(dòng)更新程序分開(kāi)來(lái)做。當(dāng)需要校驗(yàn)版本的時(shí)候,主程序調(diào)用自動(dòng)更新程序。自動(dòng)更新程序如果發(fā)現(xiàn)主程序需要更新,在下載了升級(jí)補(bǔ)丁之后,就會(huì)要求關(guān)閉主程序。主程序關(guān)閉之后,自動(dòng)更新程序調(diào)用升級(jí)補(bǔ)丁進(jìn)行安裝,安裝完成后再重新啟動(dòng)主程序。自動(dòng)更新程序自動(dòng)退出,完成更新任務(wù)。這和你關(guān)閉電腦后再插網(wǎng)卡的原理是一模一樣的。其實(shí)生活中有很多現(xiàn)象可以借鑒到軟件設(shè)計(jì)中。 人們嫌這樣的升級(jí)仍然太麻煩,后來(lái)出現(xiàn)了B/S結(jié)構(gòu),大家像抓住了救命稻草一樣的追捧至今,希望能從這些勞動(dòng)中解脫出來(lái)。B/S結(jié)構(gòu)就是瀏覽器/服務(wù)器結(jié)構(gòu),

61、它所有的功能,都是在瀏覽器里完成。程序升級(jí)的時(shí)候,只需要在服務(wù)端升級(jí)一下就可以了,瀏覽器再次訪問(wèn)服務(wù)器的時(shí)候,得到的就是新版本。你可以把它理解成一個(gè)純粹的網(wǎng)站。是不是站長(zhǎng)更新的時(shí)候,你打開(kāi)網(wǎng)站就看到最新的頁(yè)面? 但是B/S結(jié)構(gòu)有天生的弱點(diǎn),因?yàn)樗腔诰W(wǎng)頁(yè)瀏覽的,所以安全性是首要的難題,你能瀏覽的東西,原則上別人也能瀏覽。而且出于安全考慮,B/S訪問(wèn)本地資源,比如串口,必須借助于其他技術(shù)實(shí)現(xiàn)。B/S也不是萬(wàn)能的,必須考慮實(shí)際應(yīng)用。 Winform程序相對(duì)web程序而言,功能更強(qiáng)大,編程更方便,但軟件更新卻相當(dāng)麻煩,要到客戶端一臺(tái)一臺(tái)的升級(jí),面對(duì)這個(gè)實(shí)際問(wèn)題,設(shè)計(jì)了一個(gè)通過(guò)軟件實(shí)現(xiàn)自動(dòng)升級(jí)技

62、術(shù)方案,彌補(bǔ)了這一缺陷。 3.2 系統(tǒng)功能需求 即便擁有多年軟件開(kāi)發(fā)經(jīng)驗(yàn)的團(tuán)隊(duì)也不會(huì)保證自己所做的軟件是完美的,它或多或少會(huì)存在一些缺陷,甚至?xí)嬖谥T多的漏洞。在軟件的使用中,也會(huì)不斷發(fā)現(xiàn)更多的問(wèn)題,這些問(wèn)題可能是軟件本省的問(wèn)題,也可能是運(yùn)行的軟硬環(huán)境變化造成的,而且用戶也會(huì)對(duì)軟件不斷地提出新的要求。所以,軟件的升級(jí)是不可避免的。對(duì)于用戶而言,軟件升級(jí)可以修補(bǔ)漏洞,確保數(shù)據(jù)安全;可以更新和增加新功能。對(duì)于軟件開(kāi)發(fā)上而言,為了滿足市場(chǎng)需求,也需要不斷地升級(jí)自己的軟件,力求做得更好。 對(duì)于用戶和軟件管理員,他們希望自己管理的軟件具有自動(dòng)更新功能,這樣會(huì)減少更多的維護(hù)成本。 為了滿足這些

63、要求,本課題試圖尋求一種比較通用的自動(dòng)升級(jí)平臺(tái)。 由于采用C/S結(jié)構(gòu),客戶端經(jīng)常需要更新,軟件更新的實(shí)質(zhì)上是在客戶端和服務(wù)器之間進(jìn)行通信和傳遞數(shù)據(jù)。程序更新時(shí),自動(dòng)升級(jí)的形式有:一是開(kāi)機(jī)后自動(dòng)隱藏運(yùn)行,這種方式的技術(shù)成本較高,要求高可靠性和可用性;二是在啟動(dòng)程序時(shí)運(yùn)行,一般設(shè)計(jì)為強(qiáng)制更新,這種方式要求升級(jí)速度要快;三是用戶手動(dòng)點(diǎn)擊功能菜單運(yùn)行,把升級(jí)文件放在共享文件夾中,由用戶承擔(dān)升級(jí)任務(wù);最后是綜合以上三種方式的兩種或三種并存。 3.2.1系統(tǒng)主要功能分析 本應(yīng)用系統(tǒng)自動(dòng)升級(jí)實(shí)踐課題是針對(duì)于C/S結(jié)構(gòu)的Windows應(yīng)用系統(tǒng)的開(kāi)發(fā)。采用微軟Microsoft Visual Studio

64、 IDE開(kāi)發(fā)工具,使用.NET框架的C#語(yǔ)言進(jìn)行實(shí)踐課題的開(kāi)發(fā)設(shè)計(jì)。 本課題需要完成的課題實(shí)踐內(nèi)容,如下: 1、 軟件升級(jí)的實(shí)現(xiàn)原理 2、 選擇一種具體實(shí)現(xiàn)方式 3、 軟件升級(jí)系統(tǒng)模型設(shè)計(jì) 4、 編碼實(shí)現(xiàn) 3.2.2自動(dòng)升級(jí)原理圖 圖3.1自動(dòng)升級(jí)原理圖 4 系統(tǒng)設(shè)計(jì) 4.1 系統(tǒng)設(shè)計(jì)思想 要深入理解.NET客戶端應(yīng)用程序更新組件的工作原理,需要仔細(xì)研究一下實(shí)現(xiàn)客戶端應(yīng)用程序更新有那些必須要做的事情。第一步需要做的是檢查是否有更新;當(dāng)發(fā)現(xiàn)有更新時(shí),開(kāi)始第二步工作——下載更新;當(dāng)更新下載完成時(shí),進(jìn)行最后一步的工作——實(shí)現(xiàn)更新。 (一) 為更新做檢查 作為開(kāi)發(fā)者

65、,首先你得告訴應(yīng)用程序到什么地方去做更新檢查,就是所謂定位。其次,確定何時(shí)做更新檢查。不可能用戶每次一運(yùn)行客戶端程序,而它就在后臺(tái)不停的進(jìn)行更新檢查,那多浪費(fèi)資源!最后還有一項(xiàng)重要的事情需要解決,那就是如何進(jìn)行更新檢查。.NET應(yīng)用程序更新組件使用HTTP進(jìn)行通訊,這就允許客戶端應(yīng)用程序穿透防火墻來(lái)進(jìn)行更新。并且進(jìn)行更新檢查所需要的地址就成了已知的Web服務(wù)器的一個(gè)URL地址,第一個(gè)問(wèn)題順利解決。 .NET應(yīng)用程序更新組件在組件生成的基礎(chǔ)上產(chǎn)生一個(gè)線程,該線程負(fù)責(zé)進(jìn)行更新檢查。該線程在大多數(shù)時(shí)間處于休眠狀態(tài),但會(huì)在設(shè)置好的間隔蘇醒并實(shí)現(xiàn)一次更新檢查。應(yīng)用程序?yàn)樾碌母滤龅臋z查的頻率依賴于各

66、應(yīng)用自身。進(jìn)行更新檢查的間隔常用值的范圍一般是從一個(gè)小時(shí)到幾天。這種輪詢的基本方法并不適合于所有情況。比如Microsoft Money只是在用戶讓它去進(jìn)行更新檢查時(shí)它才去檢查。在這種情況下,更新輪詢線程可被禁用。 通過(guò)用命令調(diào)用更新組件的CheckForUpdate()方法來(lái)實(shí)現(xiàn)更新檢查。 關(guān)于如何進(jìn)行更新檢查的方法有這樣幾種: 方法一:直接文件檢查——使用HTTP來(lái)比較服務(wù)器和客戶端應(yīng)用程序的最后的修改日期/時(shí)間戳是否一致。如果服務(wù)器上有更新的文件,客戶端就知道可以更新自己了。對(duì)于Web瀏覽器來(lái)講,也是同樣的道理,它知道是否需要重新下載一個(gè)html頁(yè)面或圖片或是否可以重復(fù)使用先前已下載的。當(dāng)應(yīng)用程序有一個(gè)新的版本可用時(shí),管理員簡(jiǎn)單地拷貝一個(gè)更新的版本來(lái)覆蓋Web服務(wù)器上的舊版本。這種方法的問(wèn)題在于更新不是自動(dòng)進(jìn)行,由此會(huì)出現(xiàn)潛在的失敗可能。比如,如果管理員正在更新Web服務(wù)器上的應(yīng)用程序版本,同時(shí)有個(gè)客戶正在下載更新之前的版本,那么這個(gè)客戶的計(jì)算機(jī)上就會(huì)既存在更新之前的一些文件,也存在更新之后新版本的一些文件?;谏鲜鲈?,對(duì)于重要的應(yīng)用程序不提倡使用直接文件檢查來(lái)更新。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!