web程序基本運行機制,.NET運行機制

 2023-11-22 阅读 21 评论 0

摘要:.NET運行機制 .NET框架是一個多語言組件開發和執行環境,它提供了一個跨語言的統一編程環境。.NET框架的目的是便于開發人員更容易地建立Web應用程序和Web服務,使得Internet上的各應用程序之間,可以使用Web服務進行溝通。從層次結構來看,.NET框架

.NET運行機制

.NET框架是一個多語言組件開發和執行環境,它提供了一個跨語言的統一編程環境。.NET框架的目的是便于開發人員更容易地建立Web應用程序和Web服務,使得Internet上的各應用程序之間,可以使用Web服務進行溝通。從層次結構來看,.NET框架又包括三個主要組成部分:公共語言運行時(CLR:Common Language Runtime)、服務框架(Services Framework)和上層的兩類應用模板——傳統的Windows應用程序模板(Win Forms)和基于ASP NET的面向Web的網絡應用程序模板(Web Forms和Web Services)。公共語言運行時(CLR),是一個運行時環境,管理代碼的執行并使開發過程變得更加簡單。

.NET Framework 具有兩個主要組件:公共語言運行庫和 .NET Framework 類庫。

公共語言運行庫是 .NET Framework 的基礎。您可以將運行庫看作一個在執行時管理代碼的代理,它提供內存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼。

web程序基本運行機制,類庫是一個綜合性的面向對象的可重用類型集合,您可以使用它開發多種應用程序,這些應用程序包括傳統的命令行或圖形用戶界面 (GUI) 應用程序,也包括基于 ASP.NET 所提供的最新創新的應用程序(如 Web 窗體和 XML Web services)。

下面的插圖顯示公共語言運行庫和類庫與應用程序之間以及與整個系統之間的關系。該插圖還顯示托管代碼如何在更大的結構內運行。

net 安全機制、

受托管的代碼不能直接寫內存,是安全的,而非托管代碼是非安全代碼,可以使用指針操作內存。一般的項目使用托管代碼都行了,也就是說在程序里面不需要用到非安全代碼。對于一些對速度要求高的部分功能可以考慮使用非安全代碼,使用指針等讀寫內存,而對于真個項目來說還是受托管的安全代碼。
 

我們看一看.NET Framework運行機制和架構。

在開始之前,我們先跟隨考古學家參觀一下古老的ASP運行機制:

當你請求一個*.asp文件的時候,這個http request首先被inetinfo.exe進程所截獲,這個inetinfo.exe進程就是WWW服務進程,然后她會將這個請求轉交給 asp.dll進程,asp.dll進程就會解釋執行這個asp葉面,然后將解釋后的數據流返回給客戶端瀏覽器。

net命令的用法?轉過頭來我們看看如今的.NET Framework運行機制是如何處理一個http request.

當你請求一個*.aspx文件的時候,同樣的這個http request會被inetinfo.exe進程截獲,她判斷文件的后綴之后,將這個請求轉交給 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會通過一個被稱為Http PipeLine的管道,將請求發送給ASPNET_WP.exe進程,當這個http request進入ASPNET_WP.exe進程之后,會通過HttpRuntime來處理這個請求,處理完畢將結果返回客戶端。

當Http Request進入HttpRuntime之后,會繼續進入到一個被稱之為HttpApplication Factory的一個Container中,她會給出一個HttpApplication來處理傳遞進來的請求,這個請求會依次進入如下幾個 Container:

HttpModule->HttpHandler Factory->HttpHandler。

javascript運行機制、當系統內部的HttpHandler的ProcessResquest方法處理完畢之后,整個Http Request就完成了,客戶端也就得到相應的東東了。

整理一下ASP.NET Framework處理一個Http Request的流程:

HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->Http Pipeline-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()

注:

inetinfo.exe:

是Windows本身的一個系統進程。Windows用這個程序提供IIS服務,也就是說,當你機器中運行了這個程序,其他用戶理論上可以把你的計算機當作一個網站來訪問。
ASPNET_ISAPI.dll:
ISAPI縮寫詞=Internet Server Application Programming Interface ,網絡服務應用程序接口。iis的一部分。供http服務器調用的DLL程序集 aspnet_isapi.dll 當用戶請求一個aspx文件時,IIS會把這個請求交給.NET framework處理,fw會解析反射調用你寫好的cs代碼,然后在把返回的數據交給IIS,在IIS的網站上右鍵屬性-主目錄-配置-映射 里面 擴展名.aspx 文件被映射到aspnet_isapi.dll上
aspnet_wp.exe進程:
ASP.NET框架進程,提供.net運行的托管環境,.net的CLR(公共語言運行時)就是寄存在此進程中。
HttpRuntime
為當前應用程序提供一組 ASP.NET 運行時服務

HttpRuntime 對象在處理 HTTP 請求的 ASP.NET 管線模型的開頭使用。ProcessRequest 方法驅動所有后續的 ASP.NET Web 處理。

網頁開發人員可以使用 HttpRuntime 類屬性來查找關于當前應用程序域的信息,例如用于診斷目的。創建自定義進程管線或自定義宿主環境的開發人員應該在從 HttpWorkerRequest 或 SimpleWorkerRequest 類派生的類中調用 ProcessRequest 方法。

HttpApplication Factory和HttpApplication

HttpApplication對象是經由HttpApplicationFactory.GetApplicationInstance(并最終調用HttpRuntime.CreateNonPublicInstance)創建的HttpApplicationFactory它的主要任務是使用 URL 信息來查找 URL 虛擬目錄和匯集的 HttpApplication 對象之間的匹配關系。

HttpModuleHttpHandler

ASP.NET請求處理過程是基于管道模型的,這個管道模型是由多個HttpModule和HttpHandler組成,ASP.NET把http請求依次傳遞給管道中各個HttpModule,最終被HttpHandler處理,處理完成后,再次經過管道中的HTTP模塊,把結果返回給客戶端。我們可以在每個HttpModule中都可以干預請求的處理過程。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/185189.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息