リクエスト処理パイプライン
リクエスト パイプラインは、HTTP リクエストの処理に使用されるモジュールの組み合わせです。ASP.NET では、リクエスト パイプラインには、IHttpModule
と IHttpHandler という 2 つのコア コンポーネントがあります。 コード>。すべての HTTP リクエストは <code>IHttpHandler
に入り、IHttpHandler
が最終処理を実行し、IHttpModule
が HttpApplication
オブジェクトをサブスクライブします。イベントの場合、IHttpHandler
が HTTP リクエストを処理する前にリクエストを前処理することも、IHttpHandler
が HTTP リクエストを処理した後にリクエストを再処理することもできます。 IHttpModule
和IHttpHandler
。所有的HTTP请求都会进入IHttpHandler
,有IHttpHandler
进行最终的处理,而IHttpModule
通过订阅HttpApplication
对象中的事件,可以在IHttpHandler
对HTTP请求进行处理之前对请求进行预处理或IHttpHandler
对HTTP请求处理之后进行再次处理。
在IIS7之前,如IIS6或IIS5,请求处理管道分为两个:IIS请求处理管道和ASP.NET管道,若客户端请求静态资源则只有IIS管道进行处理,而ASP.NET管道不会处理该请求。从IIS7开始两个管道合二为一,称为集成管道。
上图中主要描述ASP.NET运行时对HTTP请求的处理且不涉及太多细节。
HttpApplication与HttpModule
HTTP请求由ASP.NET运行时接管之后,HttpRun<a href="http://www.php.cn/wiki/1268.html" target="_blank">time</a>
会利用HttpApplicationFactory
创建或从HttpApplication
对象池(.NET中类似的机制有线程池和字符串拘留池)中取出一个HttpApplication
对象,同时ASP.NET会根据配置文件来初始化注册的HttpModule
,HttpModule
在初始化时会订阅HttpApplication中的事件来实现对HTTP请求的处理。
在ASP.NET MVC5中,Global.asax
文件中定义了MvcApplication
类,继承自HttpApplication
类:
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteTable.Routes.Add("xfhHandler", new Route( "{controller}/{action}", new RouteValueDictionary(new Dictionary<string>() { ["controller"] = "home", ["action"] = "index" }), new XfhUrlRouteHandler()) ); //RouteConfig.RegisterRoutes(RouteTable.Routes); } }</string>
Application_Start()
方法最先执行,一般在该方法中添加一些配置,如路由注册、全局过滤器的注册等。
Route
一个HTTP请求会经过至少一个HttpModule
的处理。UrlRoutingModule
是非常重要的模块,它是路由系统的核心。路由系统的职责是从请求URL中获取controller和action的名称以及其它请求数据。UrlRoutingModule
根据当前请求的URL和RouteTable
中已注册的路由模板进行匹配并返回第一个和当前请求相匹配的路有对象Route
,然后根据路有对象获取路由数据对象RouteData
(ASP.NET MVC中,路由数据必须包含controller和action的名称),再有RouteData
获取IRouteHandler
最终有IRouteHandler
得到IHttpHandler
。
HttpHandler
一个HTTP请求最终要进入HttpHanler中进行处理,一次HTTP请求只能被一个HttpHandler进行处理。
Controller
IHttpHandler
在ProcessRequest
方法中对当前请求进行处理,在该方法中通过ControllerBuilder
得到IControllerFactory
然后通过反射的方式获取Controller
的类型。
Action
ASP.NET MVC中ControllerBase
是所有Controller
的基类,在类型的Execute
方法中通过IActionInvoker
的InvokeAction
方法来执行对Action
的调用。在Action
IIS6 や IIS5 などの IIS7 より前は、要求処理パイプラインは、IIS 要求処理パイプラインと ASP.NET パイプラインの 2 つに分割されていました。クライアントが静的リソースを要求した場合、IIS パイプラインのみがそれを処理し、ASP.NET が処理します。パイプラインはリクエストを処理しません。 IIS7 以降、2 つのパイプラインは 1 つに結合され、統合パイプラインと呼ばれます。
🎜HttpApplication と HttpModule🎜🎜
🎜 HTTP リクエストが ASP.NET ランタイムによって引き継がれた後、HttpRun<a href="http://www.php.cn/wiki/1268.html" target="_blank">time🎜</a>
は、HttpApplicationFactory
を使用して HttpApplication
を作成するか、HttpApplication
から作成します。 > オブジェクト プール (NET の同様のメカニズムには、スレッド プールや 文字列 🎜 保持プールなど) HttpApplication オブジェクトを作成すると、ASP.NET は HttpModule設定ファイル🎜 /code>、HttpModule
は、初期化中に HttpApplication のイベントをサブスクライブして、HTTP リクエストを処理します。 🎜🎜ASP.NET MVC🎜5 の Global.asax
ファイル内MvcApplication
クラスは、HttpApplication
から継承されて定義されています。クラス: 🎜
🎜
//数值越小,执行优先级越高public enum FilterScope { Action= 30, Controller= 20, First= 0, Global= 10, Last= 100}🎜
Application_Start()
メソッドが最初に実行されます。通常、このメソッドには ルーティング 🎜 登録、グローバル フィルターの登録🎜など🎜🎜ルート🎜🎜
🎜 HTTP リクエストは、少なくとも 1 つのHttpModule
によって処理されます。 UrlRoutingModule
は、ルーティング システムの中核となる非常に重要なモジュールです。ルーティング システムの役割は、コントローラ名とアクション名、およびその他の名前を以下から取得することです。リクエスト URL 🎜リクエスト データ。 UrlRoutingModule
は、現在のリクエストの URL と RouteTable
に登録されているルーティング テンプレートと一致し、現在のリクエストに一致する最初のルート オブジェクトを返しますRoute code> を取得し、ルート オブジェクトに基づいてルート データ オブジェクト <code>RouteData
を取得します (ASP.NET MVC では、ルート データにはコントローラーとアクションの名前が含まれている必要があります)。次に RouteData code> は <code>IRouteHandler
を取得し、最後に IRouteHandler
を取得して IHttpHandler
を取得します。 🎜🎜HttpHandler🎜🎜
🎜 HTTP リクエストは、最終的に HttpHanler に入り、処理されます。 🎜🎜Controller🎜🎜
🎜IHttpHandler
は、ProcessRequest
メソッドで現在のリクエストを処理します。このメソッド、IControllerFactory
は ControllerBuilder
を通じて取得され、Controller
の型はリフレクションを通じて取得されます。 🎜🎜アクション🎜🎜
🎜 ASP.NET MVC のControllerBase
は、すべての Controller
のベースです。 > クラス、タイプの Execute
メソッドで、Action
への呼び出しは IActionInvoker
の InvokeAction
メソッドを通じて実行されます。 >。 Action
が実行される前に、🎜model🎜バインディングとモデル認証の操作が実行されます。 🎜Filters
在ASP.NET MVC5中有常用的过滤器有5个:IAuthenticationFilter
、IAuthorizationFilter
、IActionFilter
、IResultFilter
、I<a href="http://www.php.cn/wiki/265.html" target="_blank">Exception</a>Filter
。
在ASP.NET MVC中所有的过滤器最终都会被封装为Filter
对象,该对象中FilterScope
类型的属性Scope
和int
类型属性<a href="http://www.php.cn/wiki/1360.html" target="_blank">Ord</a>er
用于决定过滤器执行的先后顺序,具体规则如下:
Order
和FilterScope
的数值越小,过滤器的执行优先级越高;Order
比FilterScope
具有更高的优先级,在Order
属性值相同时才会被考虑
//数值越小,执行优先级越高public enum FilterScope { Action= 30, Controller= 20, First= 0, Global= 10, Last= 100}
ActionResult
Action
执行完毕之后会返回ActionResult
类型对象作为对此次请求进行处理的结果,对于不是ActionResult
类型的返回值,ASP.NET MVC会将其转换为ActionResult
类型。
请求生命周期
ASP.NET 应用程序的生命周期以浏览器向 Web 服务器发送请求为起点,请求到达服务器后进入处理管道,至浏览器接收服务器响应时为止。
最后附上一张老外绘制的ASP.NET请求管道图,图片来自《ASP.NET MVC Interview Questions and Answers Book》这本书。
课程推荐
以上がASP.NET MVC5 要求処理パイプラインとライフサイクルに関する詳細なチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
