天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇]

  ASP.NET Process Model索引

  • ASP.NET Process Model之一:IIS 和 ASP.NET ISAPI
  • ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇]
  • ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[下篇]

  相信大家都使用過ASP.NET進(jìn)行過基于Web的應(yīng)用開發(fā),ASP.NET是什么?如果站在一個(gè)相對(duì)High Level的角度,我們可以這樣來定義ASP.NETASP.NET是一個(gè)基于Web的開發(fā)平臺(tái),提供構(gòu)建企業(yè)級(jí)應(yīng)用所需的Service、Programming Model和Software的Infrastructure。如果我們以一個(gè)Low Level的角度來看,它本質(zhì)上就是一個(gè)消息處理器:他接受IIS(確切地說應(yīng)該是ASP.NET ISAPI)Forward的Http Request (我們可以看成是一個(gè)Request Message),經(jīng)過一系列的處理,最終產(chǎn)生一個(gè)用戶希望的Response(這也是一個(gè)Message,對(duì)于.ASPx Page來說是一個(gè)Html document,對(duì)于一個(gè)Web Service來說是一個(gè)Soap)。所以本篇文章的主要目的在于站在一個(gè)相對(duì)Low Level的角度介紹ASP.NET的整個(gè)Http Request Processing Model。我們?cè)L問一個(gè)基于ASP.NET的資源,IIS是第一道屏障,在第一個(gè)部分我分別就IIS 5.x和IIS 6的差異介紹了IIS對(duì)Http Request的處理,今天我們來繼續(xù)后面的故事。

  一、從Unmanaged Environment到Managed Environment

  上一部分我們說到IIS收到一個(gè)基于ASP.NET資源文件的訪問,它會(huì)把Http Request交給一個(gè)ASP.NET ISAPI Extension處理。ASP.NET ISAPI 會(huì)加載CLR,從而創(chuàng)建一個(gè)托管的環(huán)境。ASP.NET ISAPI Extension定義在一個(gè)名為ASPNET_isapi.dll中,ASPNET_isapi.dll是一個(gè)純Native的、高效的Dll,也就是說,雖然ASP.NET ISAPI通過加載CLR創(chuàng)建一個(gè)托管的環(huán)境,但是ASP.NET ISAPI本省卻運(yùn)行在一個(gè)Unmanaged的環(huán)境中。而我們的ASP.NET Application確是完全的Managed code,運(yùn)行在一個(gè)Managed的環(huán)境中。要了解ASP.NET Http Runtime Pipeline這個(gè)純托管的Runtime,我們必須先了解從Unmanaged Environment到Managed Environment的這道橋梁。

  上圖簡(jiǎn)單表述了在IIS 6環(huán)境下,從非托管環(huán)境到托管環(huán)境的過程。從圖中我們可以看到,ASP.NET ISAPI運(yùn)行在一個(gè)非托管環(huán)境之中。ASP.NET ISAPI經(jīng)過系列COM級(jí)別的class調(diào)用(由于這些被調(diào)用的Class都是一個(gè)個(gè)undocumented class,所以要真正說清楚調(diào)用流程中每個(gè)具體的細(xì)節(jié)是一件很難的事情,而且也確實(shí)沒有很大的必要去挖掘它,因?yàn)榫唧w的實(shí)現(xiàn)可能會(huì)經(jīng)常變動(dòng),如果對(duì)此具有好奇心的朋友可以通過一些Tool,比如Reflector去仔細(xì)研究一下),最終的調(diào)用降臨到一個(gè)托管的、繼承自System.Web.Hosting.ISAPIRuntime類的對(duì)象上。ISAPIRuntime 是一個(gè)特殊的class,他實(shí)現(xiàn)了Interface System.Web.Hosting.IISAPIRuntime。下面是該Interface的定義。通過定義我們可以看到,這是一個(gè)基于COM的Interface,也就是說Caller可以通過COM的方式調(diào)用實(shí)現(xiàn)該Interface的Class的對(duì)象。在這里,這個(gè)最初的Caller就是ASP.NET ISAPI。從這里我們可以總結(jié)出:ASP.NET ISAPI通過調(diào)用System.Web.Hosting.ISAPIRuntime Instance的ProcessRequest方法,進(jìn)而從非托管的環(huán)境進(jìn)入了托管的環(huán)境。

[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("08a2c56f-7c16-41c1-a8be-432917a1a2d1")]
public interface IISAPIRuntime
{
void StartProcessing();
void StopProcessing();
[
return: MarshalAs(UnmanagedType.I4)]
int ProcessRequest([In] IntPtr ecb, [In, MarshalAs(UnmanagedType.I4)] int useProcessModel);
void DoGCCollect();
}

NET技術(shù)ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline[上篇],轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品国产在线手机在线 | 欧美gv明星 | 广西美女色炮150p图 | 国产午夜精品久久久久九九 | 久久伊人影视 | 2021国产精品国产精华 | 国产永久免费视频 | 久久偷拍vs国产在线播放 | 伊人久久精品AV无码一区 | 男人到天堂a线牛叉在线 | 十八禁肉动漫无修在线播放 | 自拍偷拍12p| 姑娘日本大全免费观看版中文翻译 | 日本19禁啪啪吃奶大尺度 | 爽死你个放荡粗暴小淫货漫画 | 亚洲精品国偷拍自产在线观看蜜臀 | 好姑娘BD高清在线观看免费 | 菠萝视频高清版在线观看 | 亚洲爱视频 | 成人国产在线视频 | 三级黄色在线免费观看 | 国产一区免费在线观看 | 亚洲AV无码一区二区三区牛牛 | 欧美性受xxxx狂喷水 | 欧美亚洲国内日韩自拍视频 | 99视频福利 | 国产成人亚洲精品午夜国产馆 | 秋葵app秋葵官网18在线观看 | 亚洲一日韩欧美中文字幕在线 | 国产精品人妻无码久久久蜜桃 | 97人人碰免费视频公开 | 国色天香视频在线社区 | 亚洲精品视频免费在线观看 | 2020精品极品国产色在线 | 嫩小幼处在线 | 亚洲精品中文字幕一二三四区 | 欧洲内射XXX高清 | 黄桃AV无码免费一区二区三区 | 亚洲日本在线不卡二区 | 色窝窝亚洲AV在线观看 | 国产亚洲视频在线播放香蕉 |