佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > ASP.Net 請(qǐng)求響應(yīng)流程簡(jiǎn)述

ASP.Net 請(qǐng)求響應(yīng)流程簡(jiǎn)述

熱門標(biāo)簽:團(tuán)購(gòu)網(wǎng)站 科大訊飛語音識(shí)別系統(tǒng) Mysql連接數(shù)設(shè)置 服務(wù)器配置 銀行業(yè)務(wù) 阿里云 電子圍欄 Linux服務(wù)器

一、瀏覽器請(qǐng)求頁面的簡(jiǎn)單流程

當(dāng)瀏覽器請(qǐng)求靜態(tài)頁面時(shí),會(huì)發(fā)送請(qǐng)求給服務(wù)器軟件,服務(wù)器軟件直接去找對(duì)應(yīng)的靜態(tài)頁面,并返回給瀏覽器。

當(dāng)瀏覽器請(qǐng)求動(dòng)態(tài)頁面時(shí),服務(wù)器軟件收到請(qǐng)求,發(fā)現(xiàn)處理不了.aspx文件,就去映射表當(dāng)中根據(jù)后綴名找對(duì)應(yīng)的處理程序(aspnet_isapi.dll),這個(gè)處理程序?qū)崿F(xiàn)了服務(wù)器軟件提供的接口,即服務(wù)器軟件通過接口調(diào)用了這個(gè)處理程序當(dāng)中的方法。aspnet_isapi.dll會(huì)將請(qǐng)求轉(zhuǎn)交給.Net Framework,由它處理動(dòng)態(tài)頁面,創(chuàng)建頁面對(duì)象,生成相應(yīng)報(bào)文,響應(yīng)給瀏覽器。

當(dāng)服務(wù)器接收到瀏覽器的動(dòng)態(tài)頁面請(qǐng)求時(shí),去網(wǎng)站的程序集中找對(duì)應(yīng)的類,通過反射的方式創(chuàng)建類的對(duì)象,并運(yùn)行ProcessRequest方法處理用戶的需求,最后通過Write方法輸出響應(yīng)數(shù)據(jù)。

執(zhí)行Write時(shí),會(huì)把數(shù)據(jù)放入緩存區(qū),頁面執(zhí)行完畢后一次性返還給瀏覽器。

二、一般處理程序的IHttpHandler接口

服務(wù)器接收請(qǐng)求,要?jiǎng)?chuàng)建頁面對(duì)象的時(shí)候,發(fā)現(xiàn)每一個(gè)文件都是一個(gè)類,它不知道如何去調(diào)用方法創(chuàng)建頁面,于是就需要一個(gè)中間處理——將頁面類的對(duì)象轉(zhuǎn)成一個(gè)接口IHttpHandler類型,然后通過調(diào)用接口中的方法來實(shí)現(xiàn)處理。

一般處理程序是一個(gè)實(shí)現(xiàn)了IHttpHandler特殊接口的類,凡是實(shí)現(xiàn)了這個(gè)接口的類,都能作為一個(gè)外部請(qǐng)求的目標(biāo)程序。

如果被請(qǐng)求的類沒有實(shí)現(xiàn)這個(gè)接口,在轉(zhuǎn)換的時(shí)候就會(huì)出錯(cuò),提示沒有實(shí)現(xiàn)IHttpHandler接口。所以,一般處理程序里的方法,實(shí)際上是實(shí)現(xiàn)了IHttpHandler中的方法。

三、一般處理程序細(xì)節(jié)

IHttpHandler是重要的接口,context封裝了所有瀏覽器發(fā)來的請(qǐng)求報(bào)文,ProcessRequest方法表示頁面被訪問時(shí)調(diào)用這個(gè)方法里的代碼段,是個(gè)入口。Context.Response是對(duì)輸出的封裝,ContextType是響應(yīng)報(bào)文中的ContextType值,是響應(yīng)輸出的方式。

IsReusable是IHttpHandler中的另一個(gè)方法,設(shè)置頁面是否可以重用,以減少多次訪問時(shí)Web服務(wù)器的壓力。

四、詳細(xì)請(qǐng)求流程 

服務(wù)器接收到用戶請(qǐng)求,aspnet_isapi.dll將請(qǐng)求移交給Application Domain,它會(huì)間接調(diào)用HttpRuntime的靜態(tài)方法處理用戶的請(qǐng)求。

首先,分析請(qǐng)求報(bào)文,并把請(qǐng)求報(bào)文封裝成HttpWorkerRequest對(duì)象,之后拆解請(qǐng)求報(bào)文,將各個(gè)字段封裝位HttpRequest對(duì)象(這個(gè)對(duì)象包含QueryString和Form方法)。

HttpRequest對(duì)象和HttpResponse對(duì)象等,共同組成了HttpContext對(duì)象。

HttpApplicationFactory類查找Application池中有沒有現(xiàn)成可用的HttpApplication對(duì)象,如果有就直接拿來用,如果沒有,就創(chuàng)建一個(gè)。HttpApplication對(duì)象中有ProcessRequest方法,這個(gè)方法有HttpContext對(duì)象。正好拿剛才的來用。

HttpApplication對(duì)象進(jìn)入請(qǐng)求管道,先后執(zhí)行19個(gè)委托事件,在第8個(gè)事件時(shí)創(chuàng)建被請(qǐng)求頁面的對(duì)象,在第11和12個(gè)事件之間執(zhí)行被創(chuàng)建對(duì)象的ProcessRequest方法。

五、WebForm的頁面生命周期

在請(qǐng)求管道的第11個(gè)事件執(zhí)行被創(chuàng)建頁面類的PeocessRequest方法后,會(huì)調(diào)用BuildControlsTree方法進(jìn)入頁面的生命周期。

在頁面生命周期中會(huì)連續(xù)調(diào)用一連串的事件,其中一個(gè)Render方法會(huì)去遍歷整個(gè)控件樹,生成對(duì)應(yīng)的HTML代碼,最后組合成為整個(gè)頁面的HTML代碼返還給瀏覽器。

您可能感興趣的文章:
  • ASP.NET基于Ajax的Enter鍵提交問題分析
  • ASP.NET2.0使用Enter Key作為默認(rèn)提交問題分析(附源碼)
  • asp.net textbox javascript實(shí)現(xiàn)enter與ctrl+enter互換 文本框發(fā)送消息與換行(類似于QQ)
  • asp.net(c#)Enterprise Library 3.0 下載
  • asp.net實(shí)現(xiàn)取消頁面表單內(nèi)文本輸入框Enter響應(yīng)的方法

標(biāo)簽:棗莊 蚌埠 廣元 萍鄉(xiāng) 江蘇 衡水 衢州 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.Net 請(qǐng)求響應(yīng)流程簡(jiǎn)述》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    玉林市| 宣武区| 巴南区| 三都| 沙洋县| 邵东县| 吕梁市| 谢通门县| 钟山县| 佛教| 卫辉市| 仁布县| 广平县| 莆田市| 华阴市| 宿州市| 华容县| 白银市| 内黄县| 凤冈县| 册亨县| 兴仁县| 永州市| 江北区| 金华市| 泊头市| 滦平县| 遵义县| 惠州市| 鹿泉市| 镇安县| 建德市| 宁陕县| 邵阳县| 库车县| 远安县| 旬邑县| 洪洞县| 仙居县| 武夷山市| 平武县|