IIS介绍

IIS7及以上版本提供的请求-处理架构包括以下内容:
• Windows Process Activation Service(WAS)可以让站点支持更多协议,不仅仅是HTTP和HTTPS
• 可以通过增加或移除模块来自定义Web服务器引擎
• 集成IIS和ASP.NET请求-处理管线
IIS中的组件
IIS包含多个组件来为程序和Web服务角色执行重要的功能。每个组件各司其责,如监听对服务器的请求、管理进程、读取配置文件。这些组件包括协议监听器(如HTTP.sys)、服务(如万维网发布服务、进程激活服务)。
协议监听器
协议监听器接收相关协议请求,将它们送到IIS来处理,向请求者返回响应。例如,当客户端浏览器向因特网请求一个网页,HTTP监听器(HTTP.sys)接受这个请求并将它转送到IIS来处理。当IIS处理完请求,HTTP.sys就会将结果返回到客户端浏览器。
IIS将HTTP.sys当作默认的协议监听器来监听HTTP和HTTPS的请求。HTTP.sys是在IIS中引进来的作为HTTP相关的协议监听器。IIS7及以上版本接续保留HTTP.sys作为IIS协议监听器,它增加了对SSL的支持。
为了支持使用http及https的服务与程序,你可以采用wcf技术。WCF具有监听器与监听适配器。
超文本传输协议栈(Http.sys)
HTTP监听器属于操作系统下的网络子系统,它是通过内核-模式设备驱动即超文本传输协议栈(Http.sys)来实现的。
在IIS6.0中,HTTP.sys取代了Winsock。Winsock是用户-模式组件,用来接收http请求并发送http响应。
HTTP.sys具备以下几点好处:
• 内核-模式缓存,资源缓存在内核-模式下,无需切换到用户模式。
• 内核-模式请求队列,多个请求会导致上下文切换中的少量开销,因为内核直接将请求转递到正确的工作进程。如果没有合适的进程接收请求,内核模式队列一直持有这个请求,直到有合适的进程接收它。
• 请求的预处理及安全过滤
万维网发布服务(WWW Service)
在IIS7及以上版本中,以前在WWW Service中处理的功能被分割到两个服务中:WWW Service和进程激活服务(WAS)。
提示:下文中W3SVC和www service是一样的意思。
WWW Service如何在IIS6.0中工作的?
在IIS6.0中,WWW Service管理以下几个领域:
• HTTP管理及配置:WWW Service从IIS元数据中读取配置信息,并用这些配置信息配置并更新HTTP监听器(HTTP.sys).另外WWW Service开启、监视并管理处理HTTP请求的工作进程。
• 进程管理:WWW Service管理程序池和工作进程,如开启、停止和回收工作进程。另外,WWW Service检测进程的健康,并调用快速失败侦测去开启新进程,当多个工作进程在可配置的时间内失败。
• 性能监视:WWW Service监视性能,并为网站和IIS缓存提供性能计数器。
WWW Service如何在IIS中工作?
在IIS中,WWW Service不再管理工作进程。取而代之,它成为HTTP监听器的监听适配器。作为监听适配器,WWW Service主要用来配置HTTP.sys,当配置变化更新HTTP.sys,当请求到达队列通知WAS。
另外,WWW Service继续收集网站计数。因为性能计数器依然是WWW Service的一部分。
进程激活服务(WAS)
在IIS7及以上版本中,WAS管理应用程序池及工作进程。这样就允许你对HTTP和non-HTTP使用相同的配置和处理模型。
另外,如果你不需要HTTP功能,你只需要运行WAS,而不用WWW Service。例如,你可以通过WCF监听适配器来管理WEB服务,如NetTcpActivator,如果你不需要监听HTTP.sys里的HTTP请求,你就不需要运行WWW Service。
WAS中的配置管理
在启动阶段,WAS从ApplicationHost.config中读取确定的信息,然后把这些信息传给服务器的监听适配器。监听适配器负责建立WAS和协议监听器沟通渠道。一旦监听适配器接收到配置信息,他们将配置相应的监听器,并准备让监听适配器监听请求。
在WCF中,监听适配器包含了监听器的功能。因此,WCF的监听适配器(如NetTcpActivator)是基于WAS信息来配置的。一旦NetTcpActivator被配置,它用net.tct协议来监听请求。
下面列表描述了WAS读取的配置信息的类型:
• 全局配置信息
• 协议配置信息,包括HTTP和Non-HTTP协议
• 应用程序池配置,如进程账户信息
• 网站配置,如绑定于程序
• 应用程序配置,如可用的协议与程序所属的应用程序池
如果ApplicationHost.config发生变动,WAS收到通知并更新监听适配器。
进程管理
WAS管理HTTP和Non-HTTP的应用程序池和工作进程。当应用程序池接收到客户端请求,WAS检测是否有正在运行的工作进程,如果应用程序池有工作进程可以处理请求,监听器就把该请求传递给工作进程来处理,否则,WAS将创建一个新的工作进程。
注释:因为WAS管理HTTP与NON-HTTP协议的进程,你可以在一个应用程序池中处理不同的协议。你可以开发一个程序,如你可以为http和net.tct开发一个xml服务
IIS中的模块
IIS提供了一个与以前版本不同的架构。取代了保留大部分功能在server内部,IIS包括了web引擎,你可以根据需要添加、移除模块。
模块是一些server用来处理请求的独立的特性。如IIS利用authentication模块来负责客户端身份认证,缓存模块来管理缓存活动。
新的架构比起以前版本提供了一下的优点:
• 你可以挑选那些你需要的模块
• 你可以自定义一个server
• 你可以开发一个自定义的模块来取代以前的模块,或添加新功能
新的架构改善了安全,简化了管理。通过移除不必要的功能,降低了服务器被攻击的面和内存占用。
本地模块
HTTP模块:
CustomErrorModule、ttpRedirectionModule、ProtocolSupportModule、RequestFilteringModule、WebDAVModule
安全模块:
AnonymousAuthenticationModule、BasicAuthenticationModule、CertificateMappingAuthenticationModule、DigestAuthenticationModule、IISCertificateMappingAuthenticationModule、RequestFilteringModule、UrlAuthorizationModule、WindowsAuthenticationModule、IpRestrictionModule
内容模块:
CgiModule、DefaultDocumentModule、DirectoryListingModule、IsapiModule、IsapiFilterModule、ServerSideIncludeModule、StaticFileModule、FastCgiModule
压缩模块:
DynamicCompressionModule、StaticCompressionModule
缓存模块:
FileCacheModule、HTTPCacheModule、TokenCacheModule、UriCacheModule
日志及诊断模块:
CustomLoggingModule、FailedRequestsTracingModule、HttpLoggingModule、RequestMonitorModule、TracingModule
托管支持模块:
ManagedEngine、ConfigurationValidationModule
托管模块
AnonymousIdentification、DefaultAuthentication、FileAuthorization、FormsAuthentication、OutputCache、Profile、RoleManager、Session、rlAuthorization、
UrlMappingsModule、WindowsAuthentication
IIS中的请求-处理
在IIS中,IIS与ASP.NET的请求管线整合在一个管线中来处理请求。新的请求-处理架构由一系列有序的本地和托管模块组成,来处理具体任务。
这种设计具备很多优点。首先,所有文件类型都可以利用以前只能在托管代码中的特性。例如静态文件、asp文件、其它类型文件都可以利用asp.net的Form认证和URL认证了。第二,消除IIS和ASP.NET的功能重复。例如,当客户端请求一个托管文件,服务在继承管线中调用合适的认证模块,在老版本中,认证模块要经过IIS与ASP.NET两个管线。第三,你可以集中在一个地方管理模块了。
应用程序池
应用程序池通过进程边界分离应用程序来阻止程序之间的影响。在IIS7及以上版本中,应用程序池继续采用IIS6.0的工作进程隔离模式。另外,你现在可以指定采用哪种模式:经典模式与集成模式。
IIS中的HTTP请求服务
以下列表描述了请求-处理流程:

  1. 当客户端浏览器向服务器发起一个HTTP请求,HTTP.sys拦截到这个请求
  2. HTTP.sys联系WAS获取配置信息
  3. WAS从配置库applicationHost.config请求配置信息
  4. WWW Service接收到配置信息,如应用程序池及网站配置
  5. WWW Service利用配置信息配置HTTP.sys
  6. WAS为这个请求在应用程序池中开启一个工作进程
  7. 工作进程处理请求,并并将响应返回到HTTP.sys
  8. 客户端接收到响应
    在这里插入图片描述在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux卸载MariaDB

CentOS7.5 安装MySQL8.0.12 安装前:  先卸载 CentOS7.5默认安装的MariaDB,配置文件在/etc/my.cnf rpm -qa | grep mariadb 找到 使用 yum remove mariadb-libs-5.5.56-2.el7.x86_64 再次查找 rpm -qa | grep mariadb 同时,配置文件在/etc/my.cnf 也已经…

win10安装iis(亲测,工作需要)

• 点击“Windows”键进入“开始”菜单,点击“所有应用”,在所有应用菜单里点击“Windows系统”里的“控制面板” • 在控制面板对话框里点击“程序” • 在“程序”对话框里点击“启用或关闭Windows功能” • 在“Windows功能”对话框里选中“Interne…

视频展示

作业要求:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2189 视频链接:http://v.youku.com/v_show/id_XMzg2Mzg1NzE0OA.html 视频播放截图及介绍: 1.成语考试中: 2.少年面对成语难得直挠头: 3.父亲发现孩子…

java 8 io_Java IO8:IO简单总结

字节流、字符流继承关系前几篇文章讲解了字节流、字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学会…

java学习(37):二维数组

/4 利用嵌套循环完成以下二维数组的遍历,体会二维数组或多维数组元素的遍历方法及每个维数数组元素的下标特点。/ import java.util.Scanner; public class test06 { public static void main(String[] args){ Scanner in new Scanner(System.in); System.out.print…

java学习(38):数组排序(直接排序)

/5 有一个长度为10的int类型数组,存储了10个年龄数据,利用Eclipse工具设计一个java控制台程序, 完成将这个int类型数组中年龄进行算法对比,将10个年龄重新存储在新数组中,新数组中存储年龄应符合以下规则: 降序排列 ./ import java.util.Scanner; public class test07 { public…

java学习(39):九九乘法表

public class test08{ public static void main(String[] args){ for(int i1;i<9;i){ System.out.println(); for(int j1;j<i;j){ System.out.print("\t"i""j""(ij)); } } } }

java学习(40):成员实例的定义和访问

定义一个student类 public class student { String name;//输入姓名 int age;//输入年龄 String address;//输入地址 char sex;//输入性别 double height;//输入身高 } 定义一个teststudent类 //成员实例的定义和访问 public class testStudent { public static void main(Stri…

java学习(41):成员实例的定义和访问续

定义一个studentstudy类 /1 使用Eclipse编写控制台应用程, 编写一个用来表示学生的java类&#xff0c; 并在类中定义描述学生特征的属性&#xff0c;姓名&#xff0c;年龄&#xff0c;性别&#xff0c;身高&#xff0c;体重和电话&#xff0c; 要求属性设置为私有访问级别并为私…

ftp的本地用户搭建

前期的准备跟虚拟用户一样&#xff0c;就是配置文件不一样 修改配置文件 就是共享的都是自己的账号的家目录&#xff0c;然后启动服务就可以了 本地登陆的都是自己的账号密码 ftp本地的黑名单&#xff0c; 转载于:https://www.cnblogs.com/cash-su/p/9824553.html

java学习(42):巩固练习

定义一个testjava类 /*4 编写一个TestStudentOverrideConstructor.java类&#xff0c; 包含main方法&#xff0c;从控制台接收用户输入的学生信息&#xff0c;包括学生姓名&#xff0c;性别和年龄&#xff0c;使用带参数的构造器创建学生对象并将接收到的输入传递给这个构造器参…

oracle 11g数据库数据操作(亲测)

oracle 11g安装和oracle数据库监听配置就不说了&#xff0c;直接说数据库的相关操作 建立 wiicare 用户 create directory dump_dir as ‘d:\test\dump’; 使用 PLSQL Developer 连接数据库 登陆数据库&#xff0c;用户名:system 密码: 123456 连接为&#xff1a;sysdba 新建表…

【论文阅读】Deep Adversarial Subspace Clustering

导读&#xff1a; 本文为CVPR2018论文《Deep Adversarial Subspace Clustering》的阅读总结。目的是做聚类&#xff0c;方法是DASCDSC&#xff08;Deep Subspace Clustering&#xff09;GAN&#xff08;Generative Adversarial Networks&#xff09;。本文从以下四个方面来对论…

java 值相同 hashcode_搞懂 Java equals 和 hashCode 方法

image搞懂 Java equals 和 hashCode 方法分析完 Java List 容器的源码后&#xff0c;本来想直接进入 Set 和 Map 容器的源码分析&#xff0c;但是对于这两种容器&#xff0c;内部存储元素的方式的都是以键值对相关的&#xff0c;而元素如何存放&#xff0c;便与 equals 和 hash…

Hadoop学习笔记

1.Hadoop安装 Apache的国内镜像地址&#xff1a; 地址1&#xff1a;http://mirror.bit.edu.cn/apache/ 地址2&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/apache Fuck CSDN&#xff0c;谁给你的权利把开源的东西作为商品&#xff08;下载积分&#xff09;售卖&#xff1…

玩转oracle 11g(1):Oracle 11g的安装

由于工作需要&#xff0c;本人现在要对oracle 11g做一段攻坚战&#xff0c;先从安装开始 基本是傻瓜程序&#xff0c;网上也有大量教程 1 安装数据库软件 安装前准备工作 a.必须使用超级用户安装&#xff08;adminstrator&#xff09; b.服务器的名称不要有汉字 c.服务器的名称…

WEB基本架构

转载于:https://www.cnblogs.com/JerryZao/p/9843804.html

玩转oracle 11g(2):创建数据库

纯属个人操作&#xff0c;不懂私聊我 在程序列表中 oracle 的文件下&#xff0c;找到 database configuration assistant 下一步 继续下一步 定制数据库 命名测试歌谣 取消勾选&#xff0c;下一步 为所有用户设置密码 geyao 下一步 点击编辑归档参数 档案资料库取消勾…

玩转oracle 11g(3):配置监听

1打开oracle net configuration 2下一步 3服务名歌谣 4下一步 5主机名电脑的 6测试 输入账号密码总会把&#xff0c;不多说

Verilog语言实现并行(循环冗余码)CRC校验

1 前言 &#xff08;1&#xff09; 什么是CRC校验&#xff1f; CRC即循环冗余校验码&#xff1a;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&#…