第一次總是比較慢
以前在dotnet 1.0 時介紹 ASP.NET 的工作原理時,總是滿懷興奮向客戶提到compilation 的好處,就是程式執行後,會留下編譯(compilation) 的結果,下次相同程式執行時,不必再編譯了. 但此處有個缺點,第一個 Request,總是最倒楣的,不但要等 compilation,而且要等 IIS 建立執行序。
在 dotnet 2.0 後,有了 precompilation的機制。作法是部署程式,以手動執行 aspnet_compiler 來扮演那第一個倒楣的Reqeust。
至於等 IIS 建立執行序這回事呢,還是無解呢。
Auto-Start
在 IIS 7.5 後(Windows Server 2008 R2 or Windows 7),此問題終於有解了。作法是修改 C:\Windows\System32\inetsrv\config\applicationHost.config,並且設定兩個地方。
1 修改應用程式集區 (Application Pool) 為自動啟動:搜尋 <applicationPools,並將對應的 application pool 加上 startMode=”AlwaysRunning”
<applicationPools> <add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" startMode="AlwaysRunning"> <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" /> </add>
2 修改應用程式為自動啟動:搜尋 <sites,並將對應的應用程式加上 serviceAutoStartEnabled="true"的屬性值
<sites> <site name="Default Web Site" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="c:\inetpub\wwwroot" /> </application> <application path="/MyApp" applicationPool="ASP.NET v4.0" serviceAutoStartEnabled="true" serviceAutoStartProvider="Service" serviceAutoStartMode="All"> <virtualDirectory path="/" physicalPath="E:\Projects\Smart\Dev\Rsi.Smart2G\Rsi.Smart2G.WebServices" /> </application>
Windows Server AppFabric
使用NotePad 修改 config總是怕怕的,尤其是 IIS 此等重要的設定,怎麼可以用如此簡易的工具來設定呢?客戶的資訊人員萬一修改錯誤,又得呼叫我們苦命的Vender 工程師,誰會給我們加班費呢?難道微軟沒有聽到我們的心聲嗎?
有的,這個 UI 設定工具,就是之前介紹的 Windows Server AppFabric。安裝後,只要簡單地在應用程式上按右鍵/Manage WCF and WF Services/Configure…,
接下來在左方功能表中選到 Auto Start,再選擇 Enable(all services will auto start)的選項。
按 Apply 鍵後,就大功告成了.
1 則留言:
請問設定AlwaysRunning 會有甚麼後果
張貼留言