呂麗萍,劉 雯
(濮陽職業技術學院,河南 濮陽 457000)
在一個系統的開發設計中,網站建設是其中重要的一環,ASP.NET動態網頁技術,可簡化開發操作,分離程序代碼和網頁內容,可分享資源,節約成本,相應的提高了系統開發的效率。下面從 ASP.NET的發展、特點以及其運行模式來分析ASP.NET技術在系統開發中的應用。
ASP第一個版本是 0.9測試版。它能將代碼直接嵌入HTML,并且通過內置的組件實現強大功能,ActiveX Data Objects (ADO)使得建立動態頁面變得簡單、方便。到ASP2.0,內置的Microsoft Transaction Server(MTS)也使制做組件變得簡單。
但ASP還存在許多缺陷:①組件部署和組態困難;②缺乏良好的開發模型及程序語言;③Session狀態信息限于單機使用;④業務邏輯和頁面邏輯混合。
為克服ASP的不足,Microsoft推出Active Server pages-ASP.NET。Microsoft.NET平臺的基本思想是:用戶將能控制信息的傳送時間、方式和內容。計算機、設備和服務能相輔相成來提供更廣泛的服務,而不是由用戶提供唯一的集成。側重點轉移到計算機、設備和服務群組上,而不是連接互聯網的單一網站或設備上。使其加強合作,提供更豐富、廣泛的解決方案。企業可提供一種方式,允許用戶將其服務和產品無縫嵌入到自己的電子構架中。
在編寫代碼方面可頁面邏輯和業務邏輯分開,分離程序代碼與顯示內容,程序代碼更簡單,使網頁更易編寫。
允許使用編譯式語言,具有較好的執行效率以及跨語言的兼容性。
ASP.NET提供很多Server Control,能在網頁執行期間自動檢測瀏覽器所支持的功能,并自動生成客戶端瀏覽器可用的網頁。可以只編寫一份代碼供不同的客戶端瀏覽器使用。
能提供三種不同的登錄驗證方式:Windows、Passport和Cookie。也可運用Impersonation功能使用登錄者權限執行程序代碼或存取資源。
由于 ASP.NET的程序代碼是編譯過的,所以執行時會比ASP的直譯方式快很多。另外,ASP.NET也提供快取(cache)的能力,有效地縮短了服務器的應答時間。
可直接把相關文件復制到目的計算機相應目錄下,不需要考慮組件注冊問題。
采用容易閱讀的XML組態文件Web.Config,只將其放在Web應用程序相關目錄中即可完成組態的操作。
使用ASP.NET,Session的狀態可在不同計算機的不同進程中維護,來解決web Farm中session的維護問題。
能解決應用程序故障。針對內存泄漏,能自動重新啟動進程以增進適用性。
可編譯成MSIL(Microsoft Intermediate Language)的程序語言都能成為制作ASP.NET網頁的語言,其中ASP.NET主要使用的三種程序語言為:Visual Basic.NET、C#、Java Script。
MSIL是介于高級程序語言及機器碼之間的一種中介語言,在ASP.NET中,程序語言先編譯成MSIL,然后再被編譯成機器碼執行。
介于MSIL和機器碼之間的編譯器被稱為JIT(Just-In-Time)編譯器,由于MSIL十分接近機器碼,從MSIL編譯成機器碼后執行速度快,可以即時被編譯成機器碼在不同計算機中執行,見圖1。

圖1 ASP.NET在不同計算機上的編譯方法
這樣MSIL便具有了跨平臺的特性。相對于ASP的運作模式,ASP.NET多一次編譯工作。ASP.NET網頁第一次被瀏覽要經過兩次編譯,第一次編譯速度慢于ASP,第二次編譯速度優于ASP,即ASP.NET兩次編譯執行總時間要大于ASP編譯執行時間,所以速度比 ASP網頁慢,但第一次被瀏覽后,MSIL被存儲下來,所以同一網頁第二次被瀏覽時,只需花費從MSIL編譯到機器碼后再執行的時間,結果就比ASP網頁要快很多。
用C#、VisualBasic.NET等.NET程序語言編寫好程序代碼后,便可用.NET提供的編譯器編譯程序,以產生EXE或DLL文件。但此時所編譯出的程序是中間語言 IL(Intermediate Language),并非 CPU 可以執行的機器碼。CLR(Common Language Runtime)的Class Loader在執行時,會將IL程序代碼載入內存,然后再通過 JIT(Just-In-Time)的方式編譯成此平臺可執行的程序。因此,無論制作者使用哪種程序語言,網頁都可以將組件的源代碼和使用組件網頁的源代碼一起編譯,直接使用這些組件,從而達到節省成本、分享資源的目的。
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