nicholas goossens r&d lead open box software session code: wux302
TRANSCRIPT
Understanding ASP.NET Under The Covers
Nicholas GoossensR&D LeadOpen Box SoftwareSession Code: WUX302
How does it work?
Classic ASP
ASP.NetAuthentication
Page Lifecycle
AJAX Controls
.aspx
.ashx
Handlers
User Controls
Custom Controls
Browser Targeting
Doc Types
Services
Master Pages
Client Script
Request
Response
Parsing
Agenda
ASP from Then till NowBuzzwordsRequest-to-Response WalkthroughASP.Net ExtrasSummary
Classic ASP
Interpreted languageIncluded embedded scripting code mixed into HTMLLimited to VBScriptRan in the same process as IISInherently not scalable (needed MTS)
ASP.Net Beginnings
Designed by Scott Guthrie & Mark AndersOriginally known as XSP
Not .NET-related – Java based !Became ASP+ with the design of the CLR
Rewritten in C#Renamed when .NET branding introduced
What is ASP.Net
A framework for developing and delivering information & applications on the web.Known primarily as a page framework.A complete Request/Response management system.Can handle and respond to all sorts of requests on the Internet (or an Intranet).
Characteristics of ASP.NET
Runs under its own worker process.No longer tied to IIS.Code execution managed by CLR.Code-Behind model allows code separation.Includes state handling facilities.Provides caching functionality.
Commonly Used Terms
RequestHTTP query from client to server
Response Data stream send from server to client
ASP.Net PipelineA series of extensible functionality points which continue the process of a request in order to eventually obtain a response.
Page LifecycleAnother series of functionality points that form the process of converting an ASPX page to HTML output.The entire page lifecycle occurs between two pipeline points.
Request-to-ResponseBlack Box
demo
Request-to-Response
Desktop Browser
http://www.microsoft.com/default.aspx
Black Box - Web Server (IIS)
Convert ASPX to HTML
Rendered HTML
Getting to .NET
http.sys
aspnet_isapi.dll (unmanaged)
Web Server (IIS)
Worker Process (Per App Pool)
App Domain (Per VD)
ISAPIRuntime (Managed)
http://www.asp.net/
Pipeline Kicked Off
ASP.NET Takes OverHttpRuntime.ProcessRequest
HttpContext created.This serves as an entry point into the
request, response, and other accessible variables.
An HttpApplication instance is created.
HttpApplication
Init method starts pipeline processing.
Request Initializationdemo
ASP.Net Pipeline
HttpApplication BuildStepsEvent ProcessingChecks Hooks from Global.asaxChecks hooks from HTTP Modules
URL-RewritingAuthentication - HttpContext.Current.UserCachingKick off Page Lifecycle
HttpApplication
BeginRequest
AuthenticateRequest / Post
AuthorizeRequest / Post
ResolveRequestCache / Post
MapRequestHandler / Post
AcquireRequestState / Post
PreRequestHandlerExecute / Post
ReleaseRequestState / Post
UpdateRequestCache / Post
LogRequest / Post
EndRequest
PreSendRequestHeaders
PreSendRequestContent
ASP.Net Pipelinedemo
HTTP Modules
Classes that implement IHttpModule.
MyModule : IHttpModule
ASP.NET HTTP Modules of Interest
WindowsAuthenticationModuleFormsAuthenticationModuleUrlAuthenticationModuleFileAuthorizationModuleServiceModelSessionStateModuleOutputCacheModule
ASP.Net Modulesdemo
Where the magic happensHttpApplication
BeginRequest
AuthenticateRequest / Post
AuthorizeRequest / Post
ResolveRequestCache / Post
MapRequestHandler / Post
AcquireRequestState / Post
PreRequestHandlerExecute / Post
ReleaseRequestState / Post
UpdateRequestCache / Post
LogRequest / Post
EndRequest
PreSendRequestHeaders
PreSendRequestContent
PreRequestHandlerExecute / Post
HTTP Handlers
Classes that implement IHttpHandler.
MyHandler : IHttpHandler
HTTP Handler Factories
Can also implement IHttpHandlerFactory.
MyHandlerFactory : IHttpHandlerFactory
Handler Installation
Any level in the Config chain
Handler factory that returns and executes the handler that will convert an ASPX page to HTML
output.
Handlersdemo
The PageHandlerFactory Class
Implements IHttpHandlerFactory.GetHandler method returns an IHttpHandler in the form of System.Web.UI.Page-derived class hierarchy.
Page class implements IHttpHandler.Page class inherits from Control.Control contains events/methods for the “Page Event Lifecycle”.PageHandlerFactory creates a class structure out of your request.
Anonymous ClassCreated from ASPX content
Determines language to be
used to generate page-gen class.
Specifies the partial class to
serve as the code-behind.
Optional:Name of the code-
file for Visual Studio.
Anonymous ClassCreated from ASPX content
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
Converted to instances of System.Web.UI.LiteralControl
that are added to the control tree of this class.Remember, this class will ultimately inherit from
System.Web.UI.Control
Anonymous ClassCreated from ASPX content
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
Program code directly added to generated class.
Anonymous ClassCreated from ASPX content
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
Converted to instances of the corresponding server control class for each of these control tags, that will be added to the control tree
of this class.The Form control instance is placed directly
in the control tree of the class being created; while the TextBox and Label
controls are added to the control tree of the Form control.
Anonymous ClassCreated from ASPX content
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
__PAGE System.Web.UI.Page
ctrl0 System.Web.UI.LiteralControl
Function Code
ctrl1 System.Web.UI.LiteralControl
form1 System.Web.UI.HtmlControls.HtmlForm
ctrl2 System.Web.UI.LiteralControl
TextBox1 System.Web.UI.WebControls.TextBox
ctrl3 System.Web.UI.LiteralControl
Label1 System.Web.UI.WebControls.Label
ctrl4 System.Web.UI.LiteralControl
ctrl5 System.Web.UI.LiteralControl
Remember: this class “ultimately” inherits from System.Web.UI.Page
Control IDs
Anonymous ClassCreated from ASPX content
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
LiteralControl
Page Class Generation
Anonymous Class Creationdemo
Page (Control) LifecyclePreInitInitInitCompleteCreateChildControls (IsPostBack)LoadViewState/LoadControlStateIPostBackDataHandler.LoadPostDataPreLoadLoadIPostBackDataHandler.RaisePostBackChangedEventIPostBackEventHandler.RaisePostBackEventLoadCompleteCreateChildControls (!IsPostBack)PreRenderDataBindPreRenderCompleteSaveViewState/SaveControlStateRenderUnload
Complete List
Control Rendering
Activated through the Control class’ Render method.Each control is designed to output something to the response buffer.Most controls output HTML.Some controls contain others in their tree.Control rendering involves recursively rendering child controls.Controls don’t need to output anything
ScriptManager
Getting a Response
“Rendering” uses an HtmlTextWriter stored in the Response object.Response object is part of HttpContext.Writer sent into Render method.After pipeline complete, contents returned up the chain to aspnet_isapi.dll then http.sys.Results viewed on browser.
Extras
PostbacksASCX User ControlsMaster PagesASHX HandlersThemes & SkinsAJAXMVC
Process Summary
IIS
Worker Process
Pipeline (Modules)
Lifecycle (Handlers)
Render (Response)
What To Take Away From This
ASP.NET does much more than serve pagesDecoupled architecture allows flexible hostingPipeline and Page Life cycle – two different thingsExtensible architecture allows opportunities for interception and alterationModule and Handler do the workBe mindful of how much is happening behind the scenes
Resources
How ASP.NET Workshttp://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp
ASP.NET Page Class Overviewhttp://msdn.microsoft.com/en-us/library/ms178138.aspx
IIS and the Process Modelhttp://dotnetslackers.com/articles/iis/ASPNETInternalsIISAndTheProcessModel.aspx
question & answer
www.microsoft.com/teched
International Content & Community
http://microsoft.com/technet
Resources for IT Professionals
http://microsoft.com/msdn
Resources for Developers
www.microsoft.com/learning
Microsoft Certification & Training Resources
Resources Tech·Ed Africa 2009 sessions will be made available for download the week after the event from: www.tech-ed.co.za
Related Content
WUX306 - Taking AJAX to the Next Level
WUX07-HOL - Diagnosing and Troubleshooting Web Applications in Internet Information Services (IIS) 7.0
AZP04-HOL - Building Windows Azure ServicesDAT01-HOL - Application Development for Microsoft SQL Server 2008: Let's Write Some Code!
Complete a session evaluation and enter to win!
10 pairs of MP3 sunglasses to be won
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.