日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

.net軟件開發(fā) :ASP.NET底層架構(gòu)探索之進(jìn)入ASP.NET

 昵稱31500 2007-07-18

.net軟件開發(fā) :ASP.NET底層架構(gòu)探索之進(jìn)入ASP.NET

來源:http://www./ArticleView/2007-1-15/Article_View_887.Htm

ASP.NET是一個(gè)非常強(qiáng)大的構(gòu)建Web應(yīng)用的平臺(tái),它提供了極大的靈活性和能力以致于可以用它來構(gòu)建所有類型的Web應(yīng)用。絕大多數(shù)的人只熟悉高層的框架如WebForms和WebServices-這些都在ASP.NET層次結(jié)構(gòu)在最高層。在這篇文章中我將會(huì)討論ASP.NET的底層機(jī)制并解釋請(qǐng)求(request)是怎么從Web服務(wù)器傳送到ASP.NET運(yùn)行時(shí)然后如何通過ASP.NET管道來處理請(qǐng)求。


  對(duì)我而言了解平臺(tái)的內(nèi)幕通常會(huì)帶來滿足感和舒適感,深入了解也能幫助我寫出更好的應(yīng)用。知道可以使用哪些工具以及他們是怎樣作為整個(gè)復(fù)雜框架的一部分來互相配合的可以更容易地找出最好的解決方案,更重要的是可以在出現(xiàn)問題時(shí)更好的解決它們。這篇文章的目標(biāo)是從系統(tǒng)級(jí)別了解ASP.NET并幫助理解請(qǐng)求(request)是如何在ASP.NET的處理管道中流轉(zhuǎn)的。同樣,我們會(huì)了解核心引擎和Web請(qǐng)求如何在那里結(jié)束。這些信息大部分并不是你在日常工作時(shí)必須了解的,但是它對(duì)于理解ASP.NET架構(gòu)如何把請(qǐng)求路由到你的代碼(通常是非常高層的)中是非常有益的。

  不管怎么樣,ASP.NET從更低的層次上提供了更多的靈活性。HTTP運(yùn)行時(shí)和請(qǐng)求管道在構(gòu)建WebForms和WebServices上提供了同樣的能力-它們事實(shí)上都是建立在。NET托管代碼上的。而且所有這些同樣的功能對(duì)你也是可用的,你可用決定你是否需要建立一個(gè)比WebForms稍低一點(diǎn)層次的定制的平臺(tái)。

  WebForms顯然是最簡單的構(gòu)建絕大多數(shù)Web接口的方法,不過如果你是在建立自定義的內(nèi)容處理器(handler),或者有在處理輸入輸出內(nèi)容上有特殊的要求,或者你需要為另外的應(yīng)用建立一個(gè)定制的應(yīng)用程序服務(wù)接口,使用這些更低級(jí)的處理器(handler)或者模塊(module)能提供更好的性能并能對(duì)實(shí)際請(qǐng)求處理提供更多的控制。在WebForms和WebServices這些高層實(shí)現(xiàn)提供它們那些能力的同時(shí),它們也對(duì)請(qǐng)求增加了一些額外負(fù)擔(dān),這些都是在更底層可以避免的。

  ASP.NET是什么

  讓我們以一個(gè)簡單的定義開始:什么是ASP.NET?我喜歡這樣定義ASP.NET:

  ASP.NET是一個(gè)復(fù)雜的使用托管代碼來從頭到尾處理Web請(qǐng)求的引擎。

  它并不只是WebForms和WebServies…

  ASP.NET是一個(gè)請(qǐng)求處理引擎。它接收一個(gè)發(fā)送過來的請(qǐng)求,把它傳給內(nèi)部的管道直到終點(diǎn),作為一個(gè)開發(fā)人員的你可以在這里附加一些代碼來處理請(qǐng)求。這個(gè)引擎是和HTTP/Web服務(wù)器完全分隔的。事實(shí)上,HTTP運(yùn)行時(shí)是一個(gè)組件,使你可以擺脫IIS或者任何其他的服務(wù)器程序,將你自己的程序寄宿在內(nèi)。例如,你可以將ASP.NET運(yùn)行時(shí)寄宿在一個(gè)Windows form程序中(查看http://www./presentations/aspnetruntime/aspnetruntime.asp可以得到更加詳細(xì)的信息)

  運(yùn)行時(shí)提供了一個(gè)復(fù)雜但同時(shí)非常優(yōu)雅的在管道中路由請(qǐng)求的機(jī)制。其中有很多相關(guān)的對(duì)象,大多數(shù)都是可擴(kuò)展的(通過繼承或者事件接口),在幾乎所有的處理流程上都是如此。所以這個(gè)框架具有高度可擴(kuò)展性。通過這個(gè)機(jī)制,掛接到非常底層的接口(比如緩存,認(rèn)證和授權(quán))都變得可能了。你甚至可以在預(yù)處理或者處理后過濾內(nèi)容,也可以簡單的將符合特殊標(biāo)記的請(qǐng)求直接路由你的代碼或者另一個(gè)URL上。存在著許多不同的方法來完成同一件事,但是所有這些方法都是可以簡單直接地實(shí)現(xiàn)的,同時(shí)還提供了靈活性,可以得到最好的性能和開發(fā)的簡單性。

  整個(gè)ASP.NET引擎是完全建立在托管代碼上的,所有的擴(kuò)展功能也是通過托管代碼擴(kuò)展來提供的

  整個(gè)ASP.NET引擎是完全建立在托管代碼上的,所有的擴(kuò)展功能也是通過托管代碼擴(kuò)展來提供的。這是對(duì)。NET框架具有構(gòu)建復(fù)雜而且高效的框架的能力的最好的證明。ASP.NET最令人印象深刻的地方是深思熟慮的設(shè)計(jì),使得框架非常的容易使用,又能提供掛接到請(qǐng)求處理的幾乎所有部分的能力。

  通過ASP.NET你可以從事從前屬于ISAPI擴(kuò)展和IIS過濾器領(lǐng)域的任務(wù)-有一些限制,但是比起ASP來說是好多了。ISAPI是一個(gè)底層的Win32風(fēng)格的API,有著非常粗劣的接口而且難以用來開發(fā)復(fù)雜的程序。因?yàn)镮SAPI非常底層,所以它非常的快,但是對(duì)于應(yīng)用級(jí)的開發(fā)者來說是十分難以管理的。所以,ISAPI通常用來提供橋接的接口,來對(duì)其他應(yīng)用或者平臺(tái)進(jìn)行轉(zhuǎn)交。但是這并不意味者ISAPI將消亡。事實(shí)上,ASP.NET在微軟的平臺(tái)上就是通過ISAPI擴(kuò)展來和IIS進(jìn)行交互的,這個(gè)擴(kuò)展寄宿著。NET運(yùn)行時(shí)和ASP.NET運(yùn)行時(shí)。ISAPI提供了核心的接口,ASP.NET使用非托管的ISAPI代碼通過這個(gè)接口來從Web服務(wù)器獲取請(qǐng)求,并發(fā)送響應(yīng)回客戶端。ISAPI提供的內(nèi)容可以通過通用對(duì)象(例如HttpRequest和HttpResponse)來獲取,這些對(duì)象通過一個(gè)定義良好并有很好訪問性的接口來暴露非托管數(shù)據(jù)。
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多