欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET4的自動啟動特性淺析

 更新時間:2015年10月22日 11:27:02   投稿:lijiao  
本篇文章討論一個你可以選擇利用的ASP.NET4中小小的,但很棒的新特性,即自動啟動,需要的朋友可以參考下

自動啟動,先行初始化web應用,而不必等待外部客戶端訪問web服務器時才啟動的能力。這可以有助于你給第一個訪問者提供一個更快的回復體驗,避免撰寫定制腳本來“預熱(warm up)”服務器和準備好任何數據緩存。它可用于任何類型的ASP.NET應用,包括基于ASP.NET Web Forms和ASP.NET MVC的應用。

在ASP.NET 4中自動啟動Web應用

有些web應用在可以處理用戶訪問之前,需要裝載很多的數據,或做一些花費很大的初始化處理。今天使用 ASP.NET 的開發(fā)人員經常使用應用的Global.asax 文件中的 “Application_Start”事件處理函數來做這些工作(該事件是在第一個請求執(zhí)行時觸發(fā)的)。他們要么設計定制腳本,周期性地向應用發(fā)假的請求,來“喚醒它(wake it up)”,從而在客戶訪問之前執(zhí)行這個代碼,或者就讓那不幸的第一個訪問者等著這個邏輯執(zhí)行完才處理其請求(這可以給這些用戶造成很長的耽擱)。

ASP.NET 4中有一個叫“自動啟動(auto-start)”的新特性,可以較好地解決這個場景, 可以在IIS 7.5(隨Windows 7和Windows Server 2008 R2發(fā)布)上運行 ASP.NET 4時使用。這個自動啟動特性提供了一個可控制的方式來啟動一個應用工作進程,初始化ASP.NET 應用,然后接受HTTP請求。

將一個ASP.NET 4應用配置成自動啟動

要使用ASP.NET 4自動啟動特性,你首先配置IIS應用池工作進程,使在其中運行的應用在web服務器最先裝載時即自動啟動。配置方法是,打開IIS 7.5的applicationHost.config文件(C:\Windows\System32\inetsrv\config\applicationHost.config),在合適的< applicationPools>中加一個 startMode=”AlwaysRunning”屬性:

< applicationPools>  
   < add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />  
< /applicationPools> 

如果你運行Windows任務管理器,點擊“顯示所有用戶的進程”復選框,然后把applicationHost.config文件的startMode屬性改動保存的話,在文件保存后的瞬間就會看到一個新的“w3wp.exe” 工作進程啟動起來了。

一個單一IIS應用池工作進程可以宿主多個ASP.NET 應用,你可以通過在對應應用的 < application> 中加一個serviceAutoStartEnabled="true" 屬性,來指定在工作進程裝載時你想要哪些應用自動啟動起來:

< sites>  
   < site name="MySite" id="1">  
     < application path="/" serviceAutoStartEnabled="true" serviceAutoStartProvider="PreWarmMyCache" /> 
   < /site>  
< /sites> 
< serviceAutoStartProviders>  
   < add name="PreWarmMyCache" type="PreWarmCache, MyAssembly" />  
< /serviceAutoStartProviders> 

上面的serviceAutoProvider="PreWarmMyCache" 屬性引用了config文件中的一個提供器(provider)配置,允許你配置一個自定義的類,該類用于封裝應用的任何 "預熱(warming up)" 邏輯。這個類會在工作進程和應用預載時(在收到任何外部web請求之前)自動被調用,可用于執(zhí)行想要在接受和處理請求之前執(zhí)行的任何初始化或緩存裝載邏輯:

public class PreWarmCache : System.Web.Hosting.IProcessHostPreloadClient { 
  public void Preload(string[] parameters) {  
    // Perform initialization and cache loading logic here...  
  }  
} 

IIS會將應用啟動到這樣一個狀態(tài),在這個狀態(tài)中,它不能接受請求,直到你的 "預熱(warming up)" 邏輯完成為止。在Preload方法中的初始化代碼運行完返回之后,ASP.NET 應用會被標記為可處理請求了。

你也可以把新的自動啟動"warming up"特性與IIS7 應用請求導向(Application Request Routing, ARR) 擴展的負載平衡功能結合起來,用它來在應用完成初始化,可以接受HTTP請求之后,向負載平衡器發(fā)信號,在這個時候,服務器可以放入web farm來處理請求。

結束語

ASP.NET 4 和 IIS 7.5的自動啟動新特性提供了一個定義明確的方式,允許你在任何終端用戶訪問你的應用之前,運行花費大的應用啟動和預緩存邏輯,這允許你一開始就將應用“預熱(warmed up)”好,提供一個始終如一的高性能體驗。

希望本文對你有所幫助,對自動啟動特性有更深入的了解。

相關文章

  • 使用.NET Core創(chuàng)建exe應用程序

    使用.NET Core創(chuàng)建exe應用程序

    這篇文章介紹了使用.NET Core創(chuàng)建exe應用程序的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 使用.NET存儲XML數據的方法

    使用.NET存儲XML數據的方法

    使用.NET存儲XML數據的方法...
    2007-04-04
  • 使用asp.net的pageDataSource中時索引問題解決方法

    使用asp.net的pageDataSource中時索引問題解決方法

    當前頁面在數據的除第一頁的任何一個頁面時,重新條件查詢并且是新條件的總頁數小于剛才查詢得到的頁碼時,就會出現“索引 20 不是為負數,就是大于行數”的類似的錯誤
    2013-04-04
  • ASP.NET中repeater控件用法實例

    ASP.NET中repeater控件用法實例

    這篇文章主要介紹了ASP.NET中repeater控件用法,實例分析了repeater控件數據綁定、刪除等相關技巧,具有一定實用價值,需要的朋友可以參考下
    2014-12-12
  • asp.net jquery無刷新分頁插件(jquery.pagination.js)

    asp.net jquery無刷新分頁插件(jquery.pagination.js)

    采用Jquery無刷新分頁插件jquery.pagination.js 實現無刷新分頁效果:本示例Handler中采用StringBuilder的append方法追加HTML,小數據量可以,但是大數據或是布局常變,建議返回JSON格式的數據,性能和靈活性更好,望使用者好好把握
    2013-01-01
  • .NET Core3.0創(chuàng)建Worker Services的實現

    .NET Core3.0創(chuàng)建Worker Services的實現

    這篇文章主要介紹了.NET Core3.0創(chuàng)建Worker Services的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • ASP.NET MVC學習之NuGet在VS中的運用淺談

    ASP.NET MVC學習之NuGet在VS中的運用淺談

    這篇文章主要給大家介紹了關于ASP.NET MVC學習之NuGet在VS中運用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧。
    2018-01-01
  • ASP.NET下對cookies的操作實現代碼

    ASP.NET下對cookies的操作實現代碼

    ASP.NET下對cookies的操作實現代碼,需要的朋友可以參考下。
    2011-10-10
  • ASP.NET中配合JS實現頁面計時(定時)自動跳轉

    ASP.NET中配合JS實現頁面計時(定時)自動跳轉

    這篇文章主要介紹了ASP.NET中配合JS實現頁面計時(定時)自動跳轉,本文主要依靠JS實現需求,只是在ASP.NET中實現而已,需要的朋友可以參考下
    2015-06-06
  • ASP.NET MVC 從IHttp到頁面輸出的實例代碼

    ASP.NET MVC 從IHttp到頁面輸出的實例代碼

    MVCHandler應該算是MVC真正開始的地方。MVCHandler實現了IHttpHandler接口,ProcessRequest便是方法入口
    2013-09-09

最新評論