支持兩種編譯模型(Compilation Model)
一為動態編譯(Dynamic Compilation)另一個為先行編譯(Precompilation)
這讓程序設計師可以有更寬廣的選擇以決定不同網站何時該用何種編譯模型不但彈性大大提升且若采用先行編譯網站執行效能還可以更高分述如下
(一)ASPNET網站動態編譯(Dynamic Compilation)
在ASPNET 時就已經支援網站動態編譯也就是使用者第一次請求網站網頁時ASPNET會先將網站程式編譯成一個dll組件檔而後續的請求就會以此來回應而編譯過後的網站執行效能明顯較未編譯網站快上許多
然而雖說ASPNET 具有動態編譯的特性但它只支援如aspxascxnfig或globalasax這幾種檔桉類型只要它們有異動就會觸發系統進行動態編譯但這個模式有個很明顯的問題存在就是像bin目錄下的組件資源檔Web Services等等在程式設計階段也常進行修改但這些檔桉即使用異動也不會觸發系統重新進行編譯因此每每VSNET 的專桉有修改異動必須手動重新編譯整個專桉如此使用浏覽器執行網頁才會顯示最新修改的程式頁面
但是可能不少人嫌煩或者是初學者根本不知道修改後要手動重新編譯因此微軟針對動態編譯又再進行了更人性化的改良現在針對類別Web Service具型別的DataSetMaster PageThemes也支援異動時的動態編譯各位只要針對IE浏覽器重新Refresh就會自動觸發系統進行重新編譯看到的也當然是最新的畫面省卻程式設計師必須手動進行編譯算是一個貼心的改良
ASPNET 動態編譯和ASPNET 很像但是更完美了且當您建置(Build)整個Web網站後在bin目錄並不會產生dll的專桉程式許多ASPNET 的程式設計師開始驚慌疑惑與不安為什麽找不到專桉dll?沒有dll檔要如何部署網站?等等的疑惑其實沒什麽好疑惑的各位之所以會疑惑是因為你把ASPNET 當作是普世的標准凡是違反它的作法皆為異類進而ASPNET 的動態編譯就成為您眼中的〝異類〞但那是人的執著心與本位主義作崇的關系事實上ASPNET 的動態編譯才是更完美完美到根本不再需要dll只要有使用者進行請求時(Request)系統會自動進行動態編譯(仍然看不見dll檔)所以若您要部署網站時利用復制網站工具將aspxaspxcsnfig類別檔全部復制一份到新網站就行了(唯獨沒有dll檔)剩下的事情動態編譯會替您全部打理好
(二)ASPNET網站先行編譯(Precompilation)
除了上面所講的動態編譯外ASPNET 尚提供先行編譯(Precompilation)網站的功能它透過「ASPNET_ Compilerexe」這個指令來預先編譯整個網站祭司用通俗觀點來說明這樣的做法有幾個好處
()節省網頁第一次編譯的時間以往在ASPNET 這個編譯的機制雖然有效加速ASPNET網站整體性能但許多使用者或不明究裡的初學者卻抱怨第一次執行感覺好慢而預先編譯整個網站是連第一次都省掉了大概也不會有人再抱怨這個問題了
()保護網頁程式碼智慧財產在ASPNET 時可以將Code Behind編譯進dll之中但是若是以InLine Code開發或HTML標簽開發的程式則是一點保護作用也沒有此外即便您用Code Behind模式開發Web應用程式仍然會有許多標簽會產生在aspx之中這種情況尤以ASPNET 更甚如SqlDataSource連SQL命令都會顯示在HTML之中故透過預先編譯不但連程式碼都可以編譯進去甚至連aspx網頁中的HTML標簽也可以一並編譯進去對於程式碼的保護可以說多了一層保障與選擇
然而我們來看看微軟對於先行編譯好處的官方說法
()由於頁面和程式碼檔不需在第一次要求時編譯因此使用者可得到更快的回應時間這對於經常更
新的大型網站特別有用
()使用者浏覽網頁之前識別編譯時期錯誤的方法
()不需原始程式碼即可建立可部署到實際執行伺服器已編譯網站版本的能力
From:http://tw.wingwit.com/Article/program/net/201311/12603.html