图文释疑IISweb服务器是如何处理ASP.NET请求的

作者:小菜 更新时间:2025-03-16 点击数:
简介:每次服务器接受到请求,都要先经IIS处理。

这不是一篇描述asp.net生命周期的文章,仅仅是关于IIS操作的。

在我们开始之前,先了解这些会有助于对全文的理解,同

【菜科解读】

每次服务器接受到请求,都要先经IIS处理。

这不是一篇描述asp.net生命周期的文章,仅仅是关于IIS操作的。

在我们开始之前,先了解这些会有助于对全文的理解,同时欢迎反馈和建议。

什么是Web Server?

每当我们通过VS运行ASP.NET网站时,VS集成的ASP.NET引擎会响应各种请求,这个引擎的名字叫“WebDev.WebServer.exe”。

当我们配置一个Web程序时,总会涉及到一个词“Web Server”,它的功能便是会响应所有请求。

什么是IIS?

IIS(Internet Information Server)是微软Web Server的一种,用来配置ASP.NET站点。

IIS拥有自己的ASP.NET处理引擎来处理请求,因此,当一个请求到达时,IIS接收并处理请求,然后返回内容。

请求处理过程

现在,你应能搞清楚Web Server和IIS的区别。

现在我们来看一下核心部分。

在继续之前,你需要搞清两个概念:

1、工作进程(Worker Process)

2、应用程序池(Application Pool)

工作进程:在IIS中,工作进程(w3wp.exe)运行着ASP.NET应用程序,管理并响应所有的请求,ASP.NET所有的功能都运行在工作进程下,当请求到来时,工作进程会生成Request和Response相关的信息。

简而言之,工作进程就是ASP.NET程序的心脏。

应用程序池:应用程序池是工作进程的容器,通常用来隔开不同配置的工作进程。

当一个程序出错或进程资源回收时,其他池中的程序不会受到影响。

注:当一个应用程序池包含多个工作进程时,被叫做“Web Garden”。

如果我们看一下IIS 6.0的结构,就会发现,可以把它分成两部分:

1、内核模块(Kernel Mode)

2、用户模块(User Mode)

内核模式是从IIS 6.0被引入的,它包含了一个叫HTTP.SYS的文件,每当请求进来时,会首先触发该文件的响应。

HTTP.SYS文件负责把请求传入相应的应用程序池中。

但HTTP.SYS如何知道应传给哪个应用程序池呢?当然不是随机抽取,每当创建一个应用程序池,该池的ID就会生成并在HTTP.SYS文件中注册,因此该文件才能确定将请求往哪传。

以上便是IIS处理请求的第一步。

接着,我们来看一下请求如何从HTTP.SYS传入应用程序池。

在IIS的用户模块中,通过Web Admin Services (WAS)从HTTP.SYS接收请求,并传入相应的应用程序池中。

当应用程序池接收到请求,会接着传给工作进程(w3wp.exe),该进程检查来请求的URL后缀以确定加载哪个ISAPI扩展。

ASP.NET加载时会附带自己的ISAPI扩展(aspnet_isapi.dll),以便在IIS中映射。

注意:如果先安装了asp.net,然后再安装IIS,就需要通过aspnet_regiis命令来注册ASP.NET中的ISAPI扩展。

一旦工作进程加载了aspnet_isapi.dll,就会构造一个HttpRuntime类,该类是应用程序的入口,通过ProcessRequest方法处理请求。

一旦这个方法被调用,一个HttpContext的实例就产生了。

可通过HTTPContent.Current获取到这个实例,且该实例会在整个生命周期中存活,我们通过它可以获取到一些常用对象,如Request,Response,Session 等。

之后HttpRuntime会通过HttpApplicationFactory类加载一个HttpApplication对象。

每一次请求都要穿过一堆HttpModule到达HttpHandler,以便被响应。

而这些HttpModule就被配置在HttpApplication中。

有一个概念叫“Http管道”,被叫做管道是因为它包含了一系列的HttpModule,这些HttpModule拦截请求并将其导向相应的HttpHandler。

我们也可自定义HttpModule,以便在请求响应之间做点特别的处理。

HttpHandler是“Http管道”的终点。

所有请求穿过HttpModule需抵达相应的HttpHandler,然后HttpHandler根据请求资源,产生并输出内容。

也正因此,我们请求任何aspx页面才会得到响应的Html内容。

结语

每当请求web服务器上的某些信息时,该请求首先会到达Http.SYS,然后Http.SYS将其发送到相应的应用程序池,应用程序池传给工作进程并加载ISAPI扩展,然后HttpRuntime对象会被创建,并通过HttpModule和HttpHandler处理请求。

最后,ASP.NET页面生命周期就开始了。

图文,释疑,IISweb,服务器,是,如何,处理,ASP.N

图文详细介绍手机处理器和GPU性能

图片: 嗯, 有个小错,L2缓存是512KB而不是512MB感觉这文章纠正了很多国内媒体文章导致的误区,我看了以后说一点 有错请大家指正1. ARM核心部分高通费了很大的劲搞Scorpion,支持部分乱序,效率比公版A8要高5%,同时能达到更高的频率。

三星的蜂鸟(包括苹果A4),三星找公司修改了A8的逻辑设计,使得其中20%的功能,能够以减少25%-50%的指令完成,总体上提升了5-10%的性能。

使得它成为当前最强的A8.2. GPU部分目前限制嵌入式GPU性能最大的关键是内存带宽,就像一个桌面的GTX480搭配了128bit位宽的显存,核心虽强但性能发挥不出来。

里程碑使用的OMAP3430,搭配的PowerVR SGX530,标准工作频率200MHz下,能达到14M的三角形生产率(14Mt/s)和280M的像素填充率,此时需要2.1GB/s的内存带宽但是OMAP3 POP封装的LPDDR内存,32bit 200MHz 只能提供1.6GB/s的带宽,根本满足不了SGX530的要求,所以摩托罗拉选择了给核心降频以省电,把SGX530的频率降到了110MHz所以里程碑的显卡性能是7Mt/s同样,iPhone 3GS使用的S5PC100,一直传言使用的是SGX535,标准工作频率200MHz下,能达到28Mt/s和280M的像素填充率,但这要求4.2GB/s的内存带宽3GS所使用的32bit LPDDR1同样只有1.6GB/s的带宽,所以这个28M根本达不到。

三星官方的标称10Mt/s,假设是SGX535,那么受到内存带宽限制:1.6/4.2 28,刚好是10M左右但是这不能证明3GS内部就是SGX535,如果里面是一颗SGX530,也只能达到这些性能。

这个说明的是,集成更好的GPU,不一定会有更好的性能。

比较要以实际值,而不是核心理论值。

再说很火的i9000.三星称i蜂鸟可以每秒输出9Mt,4倍于Snapdragon的22Mt/s。

但是分析一下, S5PC110使用了SGX 540,通常的SGX 540@200Mhz性能是35Mt/s,跟三星说的90Mt/s相差很多。

于是: 1.可能 三星的SGX540频率很高,达到600MHz,但是正常的SGX540最高也有400MHz多2. 可能三星使用了多核的SGX540,比如3个200MHz的SGX540,或者2个300MHz+的SGX540但是再次回到内存带宽上, 蜂鸟使用LPDDR2内存,不过还是单通道32bit,内存带宽被限制到了4.2GB/s。

SGX 540在4.2GB/s只能和SGX 535一样输出28Mt/s。

三星宣称的90Mt/s需要的12.6GB/s内存带宽于是: 要么三星说的是 理论值 , 要么三星用了什么特殊的方法回头说高通,它买了AMD的图形处理器,改名叫Adreno,其实这个是继承自Xbox360的Xenos GPU的统一渲染架构,所以又被称为mini-Xenos65nm Snapdragon集成的是Adreno 200,标称133MHz下,22Mt/s, 133M的像素填充率,相比SGX系列,填充率低了,三角形还好。

但是65nm Snapdragon同样用的是LPDDR1,内存带宽同样只有1.6GB/s,所以高通的这个22Mt/s到底是理论值还是实际值,值得怀疑。

要么或者Adreno很节省内存带宽?45nm的QSD8x50a,会改用Adreno 205,性能一样,增加了一些2D SVG的优化和Flash的硬件支持。

以下是本人的见解这样看来,3gs和iphone4 ipad的3D性能就很直观了,同为sgx535,3gs采用的是ddr1内存,所以最大带宽只有1.6G/S,不能满足sgx535达到28M/s所需要的4.2G/S带宽(只能有10M/S的性能),而iphone4和ipad所使用的A4芯片是和三星的蜂鸟处理器一样采用DDR2内存控制器的,所以可以达到最大4.2G/s的带宽,可以展现sgx535 28m/s的最高速率,这样也就可以让iphone4和ipad的游戏都运行在高分辨率而保持流畅了,我想ipad之所以没有用更高的分辨率,不但是为了给下一代增加卖点,重要的是照顾sgx535的性能,再高3D游戏就不流畅了。

而且我猜想,下一代iphone和ipad会采用arm a9双核,制程会提高到40nm以上,而且GPU很可能提高到sgx543的级别,那时候,就算是输出到电视机上玩,画质应该都是非常棒的以上只是个人的愚见,用来反驳,很多入手3gs的酸苹果说iphone4在高分辨率下3D游戏会严重掉帧的论断,希望大家给力啊 图文,详细,介绍,手机,处理器,和,GPU,性能,图片,

苹果MAC电脑安装Androidsdk图文教程

苹果系统已经用习惯了,所性不用windows平台下开发了,就想到在苹果平台上安装这么一个SDK,总结下大概的过程如下:1.首先应该准备好mac平台的eclipse,在http://www.eclipse.org/downloads/里找到适合的版本(在此,我选3.5),并解压安装;2.下载mac版本的android sdk http://www.cr173.com/soft/35098.html,解压到指定的目录(其实这个只是个SDK与AVD配置的管理软件);3.安装Fastboot for Mac OS插件,这个最难找了.不过还是有一个地址可以下载的http://pan.baidu.com/s/1i3id10Tfastboot是刷系统ROM的一种工具,刷系统img和射频img;另一种工具是adp。

4.下载完成后将 Fastboot 复制到 /androidsdk/tools 目录下(如果SDK包中包含 fastboot,可跳过此步骤)打开终端,输入下面的命令来创建一个新的 .bash_profile 文件[xhtml]view plaincopypico.bash_profile在新出现的修改提示中输入[c-sharp]view plaincopyexportPATH=$PATH:/AndroidSDK/tools按“control+X”保存(确认按“Y”),然后退出并重启终端,至此,Mac OS X 下就可以使用 Adb 和 Fastboot 工具了.本来说是还要需要安装ADB的,但是在tools目录下已经有了,省事,跳过.5.打开tools目录下的android,进行下载和配置SDK版本及AVD.6.到eclipse升级里输入 [c-sharp]view plaincopyhttps://dl-ssl.google.com/android/eclipse/ 安装ADT Plugin,使得刚才所装的SDK能与eclipse相结合;:7.开始创建HelloWorld,哈哈.个人认为,在Max OS下搭建Android SDK不需要Fastboot。

eclipse+adp,就可以了。

呃,我就是MAC下开发ANDROID的,只需要eclipse+adp就OK,比在LINUX下还要简单 苹果,MAC,电脑,安装,Androidsdk,图文,教程,

加入收藏
               

图文释疑IISweb服务器是如何处理ASP.NET请求的

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录