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