ASP.NET Pre-Compilation and Keep-Alive

來源:互聯網
上載者:User
asp.net

ASP.NET Pre-Compilation and Keep-Alive
1、Pre-Compilation in Whidbey

ASP.NET一大特色就是Dynamic Compilation,但是有些場合Pre-Compilation卻是更好的選擇,比如,你不想訪問你的網站的第一個使用者癡癡的等待,或者你根本不想把任何源碼(包括HTML的內容)給你的使用者。

Pre-Compilation在ASP.NET 2.0中支援得很徹底,你可以選擇In-Place Pre-Compilation,只需要你訪問一下:
http://網站名稱/WebApp名稱/PreCompile.axd
系統就會將WebApp裡面所有的頁面先給你編譯一遍。

或者,更加徹底的方式,PreCompilation for Deployment,.Net Framework 2.0提供了一個命令列的工具(aspnet_compiler.exe),讓你將WebApp中所有的代碼、頁面(包括HTML)、靜態檔案全部編譯進dll,然後給你一個“Deployment-Ready WebApp”,No Code、No Html,呵呵,但是瀏覽起來和普通的WebApp沒有區別。

這篇文章包含了更多的資訊。

2、Pre-Compilation and Keep-Alive in .NET Framework 1.1

Whidbey畢竟是明年的事,其實在現在,我們也可以想一些辦法。

Global.asax裡面的那個Global類是繼承自HttpApplication的,我們可以自己插入一個中介層,來做一些自己的事情。比如我們建立一個PreGlobal類,繼承自HttpApplication,在PreGlobar.Init()方法中,建立一個新的線程,讓這個線程遍曆訪問WebApp中所有的.aspx和.ascx(對ascx就LoadControl(),對aspx就HttpWebRequest.Create(url).GetResponse()),這樣可以實現我們自己的“Pre-Compilation”,然後再讓Global繼承自我們自己的這個PreGlobal就可以了。

我們可以感覺到,如果一段時間沒有訪問WebApp,那麼當再次訪問時,速度大大降低,這是因為Clr會自動將網站的Assembly從記憶體中Unload,當再次訪問時,再載入Assembly,而這個動作是相當耗時的(想想在電腦上運行一個WinForm,它的啟動時間)。我們需要想一個辦法讓我們的WebApp始終Keep-Alive,這樣Clr就不會將它Unload了。方法還是PreGlobal.Init()方法,我們在這個方法中建立一個Timer對象,定時時間小於預設的Session到期時間即可,在其Elapsed事件中調用一下“HttpWebRequest.Create(網站url).GetResponse()”就可以讓我們的網站始終Alive了。

這個方法是從ASPAliance上看來的,具體出處已經找不到了。

3、Delphi8

D8的文章在CSDN上也漸漸多了起來。如果不討厭Pascal的文法,那麼D8安裝目錄的source目錄下的檔案實在是一個不錯的學習.NET的資源,裡面有D8的RTL、VCL.NET、Indy.NET、Web資料感知控制項實現的源碼,至少可以看看D8是如何將它的東西和.NET的東西結合起來的。

比如,在Borland.Delphi.System.pas裡面,我看到了TObject = System.Object,呵呵,和我們想象的一樣。在Borland.Vcl.Classes.pas裡面,我看到了TList有一個private成員FList是System.Collections.ArrayList類型的,於是顯然TList是通過彙總ArrayList來實現的。而在Borland.Vcl.Forms.pas裡面,可以看到TForm是從TCustomForm繼承下來,然後上面依次是TScrollingWinControl、TWinControl、TControl...和System.Windows.Forms.Form沒什麼關係,這也就是D8要分VCL.NET App和Win App的原因,VCL.NET很多控制項仍然是Borland按自己的方式寫的(雖然都是Managed Code寫的),他們和WinForms不一定完全相容的。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.