熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET MVC 4框架:IIS 7.0與ASP.NET(2)

2013-11-13 12:32:32  來源: .NET編程 

    IIS 與ASPNET(

  ASPNET集成

  從上面對IIS x和IIS 的介紹中我們不難發現IIS與ASPNET是兩個相互獨立的管道(Pipeline)在各自管轄范圍內它們各自具有自己的一套機制對HTTP請求進行處理兩個管道通過ISAPI實現連通IIS是第一道屏障當對HTTP請求進行必要的前期處理(比如身份驗證等)時通過ISAPI將請求分發給ASPNET管道當ASPNET在自身管道范圍內完成對HTTP請求的處理時處理後的結果再返回到IISIIS對其進行後期處理(比如日志記錄壓縮等)最終生成HTTP響應反映了IIS 與ASPNET之間的橋接關系

  圖  基於IIS 與ASPNET雙管道設計

  從另一個角度講IIS運行在非托管的環境中而ASPNET管道則是托管的ISAPI還是連接非托管環境和托管環境的紐帶IIS x和IIS 把兩個管道進行隔離至少帶來了下面的一些局限與不足

  相同操作的重復執行IIS與ASPNET之間具有一些重復的操作比如身份驗證

  動態文件與靜態文件處理的不一致因為只有基於ASPNET動態文件(比如aspxasmxsvc等)的HTTP請求才能通過ASPNET ISAPI進入ASPNET管道而對於一些靜態文件(比如htmlxmlimg等)的請求則由IIS直接響應那麼ASPNET管道中的一些功能將不能用於這些基於靜態文件的請求比如我們希望通過Forms認證應用於基於圖片文件的請求就做不到

  IIS難以擴展對於IIS的擴展基本上就體現在自定義ISAPI但是對於大部分人來說這不是一件容易的事情因為ISAPI是基於Win的非托管的API並非一種面向應用的編程接口通常我們希望的是諸如定義ASPNET的HttpModule和HttpHandler一樣通過托管代碼的方式來擴展IIS

  對於Windows平台下的IIS來講ASPNET無疑是一等公民它們之間不應該是井水不犯河水而應該是你中有我我中有你的關系為此在IIS 中實現了兩者的集成通過集成可以獲得如下的好處

  允許通過本地代碼(Native Code)和托管代碼(Managed Code)兩種方式定義IIS Module這些IIS Module注冊到IIS中形成一個通用的請求處理管道由這些IIS Module組成的這個管道能夠處理所有的請求不論請求基於怎樣的資源類型比如可以將FormsAuthenticationModule提供的Forms認證應用到基於aspxCGI和靜態文件的請求

  將ASPNET提供的一些強大的功能應用到原來難以企及的地方比如將ASPNET的URL重寫功能置於身份驗證之前

  采用相同的方式去實現配置檢測和支持一些服務器特性(Feature)比如ModuleHandler映射定制錯誤配置(Custom Error Configuration)等

  圖演示了在ASPNET集成模式下IIS整個請求處理管道的結構可以看到原來ASPNET提供的托管組件可以直接應用在IIS管道中

  圖  基於IIS 與ASPNET集成管道設計

       返回目錄ASPNET MVC 框架揭秘

       編輯推薦

       ASP NET開發培訓視頻教程

       Microsoft NET框架程序設計視頻教程

       Java程序性能優化讓你的Java程序更快更穩定

       Visual C++音頻/視頻技術開發與實戰


From:http://tw.wingwit.com/Article/program/net/201311/16118.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.