Http Processing logic :
Http Request detected : with in InetInfo.exe (W3SVC service ) : [if static resource] : return [if dymamic resource] load aspnet_isapi.dll [if not started aspnet.exe] start aspnet.exe init CLR create app domain load HTTP Runtime pass to asp.net pipeline
Problem :all application share one process : aspnet_wp.exe , but different domain.
- Load ISAPI dll into ASP.net process (instead of InetInfo.exe);
- Introduce Application pool;
- Create HTTP.SYS HTTP listener which running under windows kernel mode. HTTP.SYS is part of windows 2003 TCP/IP network driver programs.
what HTTP.SYS brings
- continue listening . as a network driver program, will continue listen HTTP and more responsive .
- stability: running under Windows kernel mode , saperate from other process.
- cache .HTTP.SYS will cache the most frequence request content .
HTTP Process Logic
HTTP Request detected : within HTTP.SYS : routed to W3svc load Metabase (from InetInfo.exe) forward to application pool If not exist: Create new Application pool. Load ISAPI dll Init CLR Create App Domain Pass to ASP.net process Pipeline.
- Introduce WAS .
- load configuration from Metabase .
- Create ,Recycle, monitor worker process .
- Listen Non-HTTP via listner Adapter Interface (TCP, NamedPipe, MSMQ).
Http Process Logic
HTTPRequest (from W3SVC, from WCF Listener Adapter) came : within WAS : Initialize If Application pool: not created : Create Application pool Dispatch to worker process Load ISAPI dll Init CLR Create App Domain Pass to ASP.net process Pipeline.
- CPU Throttling
- Trottle : keep CPU at a specified level .
Trottle under load :allow site to use all possible CPU where available .
Certificate Lazy loading . only load when the certificate is needed, and auto auto unload if reached idle period.
Server name indication . allows many SSL sites share the same IP.
Introduce CCS.Central Certificate Store . manage certificates in one machine (instead of every machine).
Dyanamic IP Restrictions/FTP Logon Restriction
Application initialization module
Allows do initialize job before a HTTP request come .