HTTP Pipeline

HTTP Pipeline




HTTP Pipeline
HTTP Pipeline










 

 

 

HttpContext



• The HttpContext class models HTTP message exchange
– Properties hold references to HttpRequest, HttpResponse, state management objects, etc.
– Current context always available to processing thread via static HttpContext.Current property

Integration with IIS



• By default, the server-side HTTP pipeline relies of IIS to receive and dispatch HTTP requests
  1. Requests dispatched through ISAPI extension, ASPNET_ISAPI.DLL
  2. ASPNET_ISAPI.DLL passes requests through named pipe to a worker process called ASPNET_WP.EXE
  3. ASPNET_WP.EXE processes requests using HttpRuntime–based pipeline
  4. Pipeline can be integrated with other web servers too
HttpContext - Integration with IIS

Implementing an HTTP handler



• HTTP handlers process request messages and generate response messages

– Handlers are simply classes that implement IHttpHandler interface
– ProcessRequest called when HTTP request targeting handler's URI arrives
– HttpContext argument represents the HTTP request and corresponding response
– Handlers can be instantiated by default factory
– If handler’s IsReusable property is true, handler will be reused

interface IHttpHandler

{
void ProcessRequest(HttpContext ctx);
bool IsReuseable { get; }
}

namespace MyNamespace

{
      public class BasicHandler : IHttpHandler
     {
           public void ProcessRequest(HttpContext ctx)
          {
                 ctx.Response.ContentType = "text/xml";
                 ctx.Response.Write("");
                 ctx.Response.Write(ctx.Request.ServerVariables["PATH_INFO"]);
                 ctx.Response.Write("");
          }
         public bool IsReusable { get { return true; } }
    }
}

Deploying an HTTP handler


• Once an HTTP handler is implemented, it must be deployed

– Handler's assembly must be put in target virtual directory'sbin subdirectory or GAC
element must be added to virtual directory's web.config file
– Entry must be added to virtual directory's IIS script map



    
     



HTTP modules



• HTTP handlers allow you to extend the end of the HTTP serverside pipeline. HTTP modules allow you to extend the middle of the pipeline and examine and possibly modify HTTP messages as they pass by.

Implementing an HTTP module



• HTTP modules process events about HTTP request and response message progress through pipeline
– Modules are simply classes that implement IHttpModule
– Modules instantiated and used by HttpApplication objects to process HTTP requests
– Init/Dispose called to connect/disconnect module's handlers to/from HttpApplication object's events
– Specific event handlers added to module as needed

interface IHttpModule

{
      void Init(HttpApplication app);
      void Dispose();
}

public class MyModule : IHttpModule

{
      public void Init(HttpApplication httpApp)
     {
          httpApp.BeginRequest += new EventHandler(this.OnBeginRequest);
      }
      public void Dispose() {}
     // event handlers
     public void OnBeginRequest(object o, EventArgs ea)
    {
           HttpApplication httpApp = (HttpApplication) o;
           HttpContext ctx = (HttpContext) ea.ExtendedInfo;
          ... // write your code here
      }

}
 

Deploying an HTTP module



• Once an HTTP module is implemented, it must be deployed
– Module's assembly must be put in target virtual directory's bin subdirectory or GAC
element must be added to virtual directory's web.config file

No comments:

Post a Comment

Labels

.NET Framework Interview Questions (7) .NET Interview Questions (10) .NET Remoting Interview Questions (1) ADO.NET and BLOB Error (1) ADO.NET Interview Questions (4) Agile Articles (9) AJAX Articles (5) AJAX Interview Questions (11) Algorithms (2) Analytics Articles (2) Analytics Interview Questions (3) Android FAQs - Part 1 (2) Articles (13) ASP.NET Articles (24) ASP.NET Error and Resolution (4) ASP.NET Interview Questions (23) ASP.NET Tutorial (8) AWS Interview Questions (16) Business Analyst Interview Questions (1) Cloud Computing Interview Questions (16) CSharp Articles (17) CSharp Interview Questions (32) CSharp Tutorial (17) Data Analysis (2) Data Structure (1) Design Pattern Articles (5) DevOps Tutorial (1) Digital Marketing Interview Questions (1) Download Templates (1) Error Resolution (6) Excel Articles (9) Excel Macros (1) Excel Tips and Tricks (10) HTML5 Interview Questions (3) HTML5 Tutorial (3) Interview Preparation (2) Interview Questions (24) Introduction to Business Analytics (10) Introduction to Python (7) Introduction to R Programming (23) JAVA Articles (6) Java Tutorial (5) LINQ Articles (4) LINQ Interview Questions (2) LINQ Tutorial (3) Microservices Interview Questions (1) MVCInterviewQuestions (2) OOPs Interview Questions (4) Oracle 9i Tutorial (14) Oracle Articles (2) Oracle Interview Questions (15) Outlook Error (1) PHP Interview Questions (3) PHP Tutorial (3) Product Management (12) Product Management Interview Questions (14) Product Owner Interview Questions (2) Program Management (5) Project Management (13) Project Management Articles (34) Project Management Interview Questions (25) Quiz (1) RallyDev Help (1) Scrum Master Interview Questions (11) Selenium Tutorial (1) Sharepoint Articles (1) SQL Interview Questions (23) SQL Server Articles (20) SSIS Interview Questions (6) SSRS Interview Questions (1) Technical Program Management (12) Technical Program Management - Interview Questions (24) TechnicalProgramManagement (5) Threading Interview Questions (2) Tutorial (8) UML Articles (3) UML Interview Questions (2) Unix (3) UNIX Tutorial (3) WCF Articles (20) WCF Interview Questions (9) WCF Quiz (2) WCF Tutorial (16) Web Service Articles (5) Web Service Interview Questions (3) Window Azure (1) XML Articles (6) XML Interview Questions (3) XML Tutorial (3)