主要目的是在网上记录一下学习笔记,如有不对,请指出 谢谢!! 

iis5.x:

  存在问题,inet info收到动态请求后,aspnt_isapi.dll会被加载到inetinfo.exe(挂载w3svc服务)这个进程中,与工作进程通过管道进行通信,存在性能瓶颈

所有的asp.net应用运行在相同进程(aspnet_wp.exe)进程的不同进程域,并不能完全隔绝各个进程的相互影响

Iis6.0

  将isapi动态链接库直接加载到工作进程,不在挂载w3svc,还是有元数据库(http请求解析出的数据去元数据库对应web程序)

加入应用程序池概念,为一个多个web应用创建一个应用程序池,每一个对应独立的工作进程w3wp.exe,提供进程级别的隔离机制

创建了http.sys的http监听器,他以驱动程序的形式运行在Windows的内核模式,是tcp/ip网络子系统的一部分,优点:始终处于运行状态,对用户的请求及时反映;稳定,运行在内核模式,不执行用户代码,不会受到其他影响;内核模式下数据缓存,频繁请求某个资源,会缓存。

问题:w3svc的功能:http请求接受,接受http.sys监听的http请求;配置管理,从metabase加载配置信息对相关组件配置;进程管理:创建、回收、监控工作进程

双管道模式,asp.net和iis不是同一个管道,通过isapi

Iis7:

w3svc后两组功能给了WAS,提供了对非http协议的支持。通过提取监听接口抽象出不同监听器,提供基于tcp、命名管道等传输协议支持。某种意义上来说,w3svc相当于http.sys的监听适配器,三种非http监听器和监听适配器定义在程序集SMSvcHost.exe中,四个windows服务,其中一个是wcf的tcp端口共享

无论是w3svc的http请求还是WCF提供的监听适配器接收到的其他协议的请求,最后都会被传递到WAS,在进行请求处理过程中通过内置配置管理模块加载相关的配置信息

iis7完成两个管道的集成

asp.net管道:

w3wp.exe会利用aspnet_isap.dll(包含isapi的定义)加载.net运行时,一个运行池可以承载一个或者多个web应用

HTTP请求处理:

http.sys监管接受到HTTP请求,经过w3svc判断如果是动态请求某个web应用,W3wp.exe利用aspnet_isapi.dll加载.net运行时(如果运行时未加载)

然后,iis会通过app domain factory为该web应用创建应用程序域。,然后一个特殊的运行时isapiruntime(system.web.dll  hosting)被加载,会接管该http请求。接管请求的isapiruntime会将请求封装为isapiworkrequset对象,然后传递给asp.net运行时httpruntime,至此,http请求进入asp.net管道。

Httpruntime会根据isapiworkrequest对象创建用于表示当前http请求的Context(上下文)对象HTTP context。

创建完成后,HTTP runtime会利用HTTP application factory创建或获取现有(asp.net维护者一个HTTP application对象池)的HTTP application对象,

在HTTP application初始化的时候,asp.net会根据配置文件加载并初始化注册的HTTP module对象,

HTTP application处理http请求的不同阶段会触发不同的事件,

而HTTP module的意义是通过注册HTTP application的相应事件,从而将所需要的操作(方法)注入到http处理的这个流程中,

最终完成HTTP请求的处理是在HTTP handler中,不同的HTTP请求对应不同的HTTP handle

HTTP application是整个asp.net的核心,一个对象在某个时刻只能处理一个http请求,所以采用对象池机制来创建或者获取对象,第一个请求过来,会创建多个对象放入池中,选择一个进行处理,处理完成不会被回收,释放到池中,如果都处于繁忙,不超过最大数量可以创建再去处理,不然只能放到队列中等待,处理HTTP请求相对复杂,不同阶段会触发相应的事件,。。。。。。。。

定制HTTP application:

Asp.net中的HTTP application派生于global.asax文件,按照Application_方法名

HTTPmodule:实现system.web.ihttpmodule接口 init实现自身初始化,接受一个HTTP application对象,配置HTTP handle 的方法,webconfig

可以在调用当前HTTP context的remaphandler方法,制定一个具体的HTTP handler对象,为了让asp.net直接跳过默认的HTTP handler映射操作(在HTTP application的postmaprequesthandler事件出发之前)

Asp.net mvc就是通过扩展asp.net实现的,扩展点主要体现在HTTP module和HTTP handler,整个。。mvc自定义这两个核心组件建立起来。

下一篇等学习完自建一个小型asp.net mvc框架之后再继续讨论。

Asp.Net 学习笔记(IIS不同版本和Asp.Net)的更多相关文章

  1. .net学习笔记---IIS 处理模型及ASP.NET页面生命周期

    本文是基于IIS6的处理模型. 当一个客户端页面访问IIS试图获取一些信息的时候,发生了什么事情?一个请求在通过了HTTP管道后又发生了什么?本文主要是描述这两个过程,即IIS处理asp.net请求和 ...

  2. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  3. 【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

    Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http:// ...

  4. 如鹏网学习笔记(十五)ASP.NET MVC核心基础笔记

    一.ASP.Net MVC简介 1,什么是ASP.NET MVC? HttpHandler是ASP.net的底层机制,如果直接使用HttpHandler进行开发难度比较大.工作量大.因此提供了ASP. ...

  5. 如鹏网学习笔记(十四)ASP.NET

    Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...

  6. OGG学习笔记05-OGG的版本

    刚接触OGG的时候,很容易被众多的版本搞晕,虽然官方有提供各版本对应认证OS和DB的表格. 个人认为一个比较简单的方式,是直接去edelivery.oracle.com下载OGG,选定一个大版本后,这 ...

  7. Dubbo -- 系统学习 笔记 -- 示例 -- 多版本

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 多版本 当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间 ...

  8. ASP.NET 学习笔记(一)ASP.NET 概览

    ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. ASP.NET 支持三种不同的开发模式:Web Pages(Web 页面).MVC(Mode ...

  9. ASP代码审计学习笔记 -3.上传漏洞

    1.ASP上传过程抓包分析: POST /4.asp HTTP/1.1 Host: 192.168.1.102 User-Agent: Mozilla/5.0 (Windows NT 10.0; WO ...

随机推荐

  1. 查询数据库中的表格---通过构造方法将数据存入到List集合中---遍历进行输出

    package cn.jy.demo; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Res ...

  2. SQL Server 查询中文字段返回为空

    昨晚维护系统数据时,遇到个奇怪现象.明明数据库里有数据,查询结果就是返回为空.具体情况是这样的,查询工作日志表里关于工作描述的情况,以中文内容匹配工作描述字段,其中匹配内容里包含有空格. 尝试去掉第一 ...

  3. Eclipse编辑XML自动提示(zz)

    Eclipse编辑XML自动提示 博客分类: j2se XMLEclipseiBATISSpringSQL  IED Eclipse Java EE IDE for Web Developers: D ...

  4. python学习 day2 (3月2日)

    .if if else 和 if elif else 的区别是: 前者 判断第一个 判断完第二个 之后还会执行else: 后者是只有满足条件(即都不符合if.elif里的条件时才会进入else) 不清 ...

  5. Ubuntu显示实时网速CPU内存等参数

    添加库 sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor 更新软件列表 sudo apt-get update 安装indica ...

  6. ubunut下安装ibus_pinyin中文输入法

    ubuntu安装中文输入法,,此处一ibus-pinyin为例为其安装中文输入法,,, 1. 设置(setting)---语言支持(language support)---汉语(chinese),,, ...

  7. 一道另类的区间dp题 -- P3147 [USACO16OPEN]262144

    https://www.luogu.org/problemnew/show/P3147 此题与上一题完全一样,唯一不一样的就是数据范围; 上一题是248,而这一题是262144; 普通的区间dp表示状 ...

  8. 转--O2O刷单“黑市”折射下的泡沫#神作#

    “XX打车和XX用车这样的公司,太不真诚.从前补贴的是现金,现在补贴的都是各种券,还有各种使用上的规则,为什么要设置这么多的限制?反正都要花一样的钱,为什么不能痛快点?让用户体验好一点?” 说这个话的 ...

  9. 686. Repeated String Match

    方法一.算是暴力解法吧,拼一段找一下 static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); cl ...

  10. php-fpm 的 pm.start_servers 参数调整

    大家注意一下 在 php-fpm 的配置文件中, pm.start_servers 必须是介于  pm.min_spare_servers 和  pm.max_spare_servers  这个值之间 ...