呂麗萍,劉 雯
(濮陽職業(yè)技術(shù)學(xué)院,河南 濮陽 457000)
在一個(gè)系統(tǒng)的開發(fā)設(shè)計(jì)中,網(wǎng)站建設(shè)是其中重要的一環(huán),ASP.NET動(dòng)態(tài)網(wǎng)頁(yè)技術(shù),可簡(jiǎn)化開發(fā)操作,分離程序代碼和網(wǎng)頁(yè)內(nèi)容,可分享資源,節(jié)約成本,相應(yīng)的提高了系統(tǒng)開發(fā)的效率。下面從 ASP.NET的發(fā)展、特點(diǎn)以及其運(yùn)行模式來分析ASP.NET技術(shù)在系統(tǒng)開發(fā)中的應(yīng)用。
ASP第一個(gè)版本是 0.9測(cè)試版。它能將代碼直接嵌入HTML,并且通過內(nèi)置的組件實(shí)現(xiàn)強(qiáng)大功能,ActiveX Data Objects (ADO)使得建立動(dòng)態(tài)頁(yè)面變得簡(jiǎn)單、方便。到ASP2.0,內(nèi)置的Microsoft Transaction Server(MTS)也使制做組件變得簡(jiǎn)單。
但ASP還存在許多缺陷:①組件部署和組態(tài)困難;②缺乏良好的開發(fā)模型及程序語言;③Session狀態(tài)信息限于單機(jī)使用;④業(yè)務(wù)邏輯和頁(yè)面邏輯混合。
為克服ASP的不足,Microsoft推出Active Server pages-ASP.NET。Microsoft.NET平臺(tái)的基本思想是:用戶將能控制信息的傳送時(shí)間、方式和內(nèi)容。計(jì)算機(jī)、設(shè)備和服務(wù)能相輔相成來提供更廣泛的服務(wù),而不是由用戶提供唯一的集成。側(cè)重點(diǎn)轉(zhuǎn)移到計(jì)算機(jī)、設(shè)備和服務(wù)群組上,而不是連接互聯(lián)網(wǎng)的單一網(wǎng)站或設(shè)備上。使其加強(qiáng)合作,提供更豐富、廣泛的解決方案。企業(yè)可提供一種方式,允許用戶將其服務(wù)和產(chǎn)品無縫嵌入到自己的電子構(gòu)架中。
在編寫代碼方面可頁(yè)面邏輯和業(yè)務(wù)邏輯分開,分離程序代碼與顯示內(nèi)容,程序代碼更簡(jiǎn)單,使網(wǎng)頁(yè)更易編寫。
允許使用編譯式語言,具有較好的執(zhí)行效率以及跨語言的兼容性。
ASP.NET提供很多Server Control,能在網(wǎng)頁(yè)執(zhí)行期間自動(dòng)檢測(cè)瀏覽器所支持的功能,并自動(dòng)生成客戶端瀏覽器可用的網(wǎng)頁(yè)??梢灾痪帉懸环荽a供不同的客戶端瀏覽器使用。
能提供三種不同的登錄驗(yàn)證方式:Windows、Passport和Cookie。也可運(yùn)用Impersonation功能使用登錄者權(quán)限執(zhí)行程序代碼或存取資源。
由于 ASP.NET的程序代碼是編譯過的,所以執(zhí)行時(shí)會(huì)比ASP的直譯方式快很多。另外,ASP.NET也提供快?。╟ache)的能力,有效地縮短了服務(wù)器的應(yīng)答時(shí)間。
可直接把相關(guān)文件復(fù)制到目的計(jì)算機(jī)相應(yīng)目錄下,不需要考慮組件注冊(cè)問題。
采用容易閱讀的XML組態(tài)文件Web.Config,只將其放在Web應(yīng)用程序相關(guān)目錄中即可完成組態(tài)的操作。
使用ASP.NET,Session的狀態(tài)可在不同計(jì)算機(jī)的不同進(jìn)程中維護(hù),來解決web Farm中session的維護(hù)問題。
能解決應(yīng)用程序故障。針對(duì)內(nèi)存泄漏,能自動(dòng)重新啟動(dòng)進(jìn)程以增進(jìn)適用性。
可編譯成MSIL(Microsoft Intermediate Language)的程序語言都能成為制作ASP.NET網(wǎng)頁(yè)的語言,其中ASP.NET主要使用的三種程序語言為:Visual Basic.NET、C#、Java Script。
MSIL是介于高級(jí)程序語言及機(jī)器碼之間的一種中介語言,在ASP.NET中,程序語言先編譯成MSIL,然后再被編譯成機(jī)器碼執(zhí)行。
介于MSIL和機(jī)器碼之間的編譯器被稱為JIT(Just-In-Time)編譯器,由于MSIL十分接近機(jī)器碼,從MSIL編譯成機(jī)器碼后執(zhí)行速度快,可以即時(shí)被編譯成機(jī)器碼在不同計(jì)算機(jī)中執(zhí)行,見圖1。
圖1 ASP.NET在不同計(jì)算機(jī)上的編譯方法
這樣MSIL便具有了跨平臺(tái)的特性。相對(duì)于ASP的運(yùn)作模式,ASP.NET多一次編譯工作。ASP.NET網(wǎng)頁(yè)第一次被瀏覽要經(jīng)過兩次編譯,第一次編譯速度慢于ASP,第二次編譯速度優(yōu)于ASP,即ASP.NET兩次編譯執(zhí)行總時(shí)間要大于ASP編譯執(zhí)行時(shí)間,所以速度比 ASP網(wǎng)頁(yè)慢,但第一次被瀏覽后,MSIL被存儲(chǔ)下來,所以同一網(wǎng)頁(yè)第二次被瀏覽時(shí),只需花費(fèi)從MSIL編譯到機(jī)器碼后再執(zhí)行的時(shí)間,結(jié)果就比ASP網(wǎng)頁(yè)要快很多。
用C#、VisualBasic.NET等.NET程序語言編寫好程序代碼后,便可用.NET提供的編譯器編譯程序,以產(chǎn)生EXE或DLL文件。但此時(shí)所編譯出的程序是中間語言 IL(Intermediate Language),并非 CPU 可以執(zhí)行的機(jī)器碼。CLR(Common Language Runtime)的Class Loader在執(zhí)行時(shí),會(huì)將IL程序代碼載入內(nèi)存,然后再通過 JIT(Just-In-Time)的方式編譯成此平臺(tái)可執(zhí)行的程序。因此,無論制作者使用哪種程序語言,網(wǎng)頁(yè)都可以將組件的源代碼和使用組件網(wǎng)頁(yè)的源代碼一起編譯,直接使用這些組件,從而達(dá)到節(jié)省成本、分享資源的目的。
1 [美]G..AndrewDuthie著. ASP.NET程序設(shè)計(jì).北京:清華大學(xué)出版社,2002:23~28
2 Lloyd D. Integrating reporting services into ASP.NET. Dr Dows Journal, v29, Fwbruary, 2005:33~68