2004年09月26日

 

TCP/IP协议即传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol)是世界标准的协议组,它是为跨越局域网和广域网环境的大规模互联网络而设计的。

现在,无论是局域网还是广域网都可以用TCP/IP来构造网络环境。今天,以TCP/IP为核心协议的Internet更加促进了TCP/IP的应用和发展,已成为事实上的国际标准。

从体系结构来看,TCP/IP基于四层参考模型,它是OSI七层模型的简化。如图2-8所示。TCP/IP模型的每一层都对应于国际标准组织 (ISO)提议的七层“开放系统互联(OSI)”参考模型的一层或多层。

 

1A

A类地址是为非常大型的网络而提供的。对于A类网络来说,其IP地址的第一个字节介于1126之间,表示网络号,其余三个字节则标识了该网络的成员,表示主机号。全世界总共只有126个可用的A类地址,每个A类网络在其每个具体的网络内,可有16777216(224)多台计算机。例如,1812838188即是一个A类地址,其中,18为网络号,12838188为主机号。

2B

B类地址用于大中型规模网络中。B类地址用两个字节表示网络号,第一字节是一个位于128191之间的数字,该类地址以IP地址的第12两个8位数组作为网络号,后两个8位数组作为主机号。因此,B类地址共有16386个网络号,每个网络中最多可以容纳65536个主机,即能表示16 256个网络地址,64 576个主机地址.B类地址通常用于各地区的网管中心。

例如,168254119188就是一个B类地址,其中168254为网络号,119188为主机号。

3C

C类地址用于小型网络。在C类网络的IP地址中,第一个8位数组介于192223之间,第二和第三个8位数组进一步定义了网络地址,即第1238位数组作为网络号,最后一个8位数组标识该网络上的计算机,作为主机号。C类地址共有2097152个网络号,并且每个网络中都可以有256台计算机,即能表示2 064 512个网络地址,254个主机地址。C类地址通常用于校园网或企业网。例如,198168119188就是一个B类地址,其中198168119为网络号,188为主机号。

4D

D类地址用于多路广播组用户。这些组可以有一台或多台主机。D类地址的高4位被设置为1110,因此第一个8位数组介于224239之间。其余位用于指明客户机所属的组。在多路广播操作中没有表示网络或主机的位。

5E

E类地址是一种供实验地址,还没有实际的应用。它的高4位被设置为1111,因此地一个8位数组介于240255之间。

综观上述,地址类定义了每个地址的网络ID和主机ID,每个网络能够支持多少网络和主机,用wxyz.指定任意给定IP地址中的48位字节数,IP地址分类如表2-4所示。

 

表2-4 IP地址分类表


类别

w的值

网络ID

主机ID

网络数量

每个网络的主机数量

A

1~126

w

xyz

126

16 777 214

B

128~191

wx

yz

16 384

65 534

C

192~223

wxy

z

2 097 152

254

D

224~239

为多路广播寻址保留

N/A

N/A

N/A

E

240~254

为实验性应用保留

…..

N/A

N/A

N/A

 

6.特殊地址

网络号127是用来做循环测试用的,不可用做其他用途。例如,发信息给IP地址127001则此信息将传给自己。

WXYZ中数字如果出现255,表示广播。例如,发送信息给 255255255255,表示将该信息发送给每一台主机。如果发送信息给 16895255255,表示将该信息发送给网络号为16895中的每一台主机。最后一个数字(Z)不可为0255

Internet中,IP地址不是任意分配的,必须由国际组织统一分配。其组织机构是:

分配A类(最高一级)IP地址的国际组织是国际网络信息中心NICNetwork Information Center)。它负责分配AIP地址,授权分配BIP地址的组织棗自治区系统。它有权重新刷新IP地址。

分配BIP地址的国际组织是InterNICAPNICENIC。这三个自治区系统组织的分工是:ENIC负责欧洲地址的分配工作; InterNIC负责北美地区;而APNIC负责亚太地区,设在日本东京大学。我国属于APNIC,用它来分配B类地址。例如,APNIC共分配给中国CERNET 10B类地址。

分配CIP地址的组织是国家或地区网络的NIC。例如,CERNETNIC 设在清华大学,CERNET各地区的网管中心需向清华大学NIC申请分配C地址。

任意给定IP地址的第一个8位字节数 (w)如何有效地表示地址类;可在图2-10中显示出来(图2-10)。

CSMA/CD的帧接收过程中总线上的非发送站点总是处于监听总线状态。当总线上有信号时,则启动帧接收过程。对于接收到的帧,要进行如下的帧有效性检查:

1)滤除因冲突而产生的“帧碎片”,即当接收的帧长度小于最小帧长限制时,则认为是不完整的帧而将它丢弃掉。

2)检查帧的目的地址字段(DA)是否与本站地址相匹配。如果不匹配,则说明不是发送给本站的而将它丢弃掉。

3)进行帧的CRC校验。如果CRC校验有错,则丢弃该帧。

4)进行帧长度检验。接收到的帧长必须是8位的整数倍,否则丢弃掉。

5)最后将有效的帧提交给LLC子层。

2-6给出了CSMA/CD的帧接收工作流程。

由于种种原因,OSI模型并没有成为真正应用在工业技术中的网络体系结构。在网络发展的最初期,网络覆盖的地域范围非常有限,而且主要用途也只是为了美国国防部和军方科研机构服务。随着民用化发展,网络通过电话线路连接到大学等单位,进一步需要通过卫星和微波网络进行网络扩展,军用网络中原有技术标准已经不能满足网络日益民用化和网络互连的需求,因此设计一套以无缝方式实现各种网络之间互连的技术标准就提到议事日程上来。这一网络体系结构就是后来的TCP/IP参考模型。TCP/IP模型是于1974年首先定义的,而设计标准的制定则在20世纪80年代后期完成。

1TCP/IP的层次结构

TCP/IP模型也是一种层次结构,共分为4层,分别为应用层、传输层、互联网层和主机到网络层。各层实现特定的功能,提供特定的服务和访问接口,并具有相对的独立性。

2TCP/IP层次模型表述

(1) 主机到网络层

主机到网络层是TCP/IP模型中的第一层。它相当于OSI模型中的物理层和数据链路层,因为这一层的功能是将数据从主机发送到网络上。与应用邮政系统类比,主机到网络层中的比特流传输相当于信件的运送。

(2) 互联网

互联网层是TCP/IP模型中的第二层。最初是希望当网络中部分设备不能正常运行时,网络服务不被中断,已经建立的网络连接依然可以有效地传输数据;换言之,只要源主机和目标主机处于正常状态,就要求网络可以完成传输任务。互联网层正是在这些苛刻的设计目标下选择了分组交换(Packer Switching)技术作为解决方案。

分组交换技术不仅使分组发送到任意的网络后可以独立地漫游到目标主机,而且可确保目标主机接收到顺序被打乱的分组后,将其传送到最高层重新排定分组顺序。互联网层定义了标准的分组格式和接口参数,只要符合这样的标准,分组就可以在不同网络间实现漫游。

(3) 传输层

传输层是TCP/IP模型中的第三层。其功能与OSI模型中的传输层相类似,TCP/IP模型中的传输层不仅可以提供不同服务等级、不同可靠性保证的传输服务,而且还可以协调发送端和接收端之间的传输速度差异。

(4) 应用层

应用层是TCP/IP模型中的第四层。与OSI模型不同的是,在TCP/IP模型中没有会话层和表示层。由于在应用中发现,并不是所有的网络服务都需要会话层和表示层的功能,因此这些功能逐渐被融合到TCP/IP模型中应用层的那些特定的网络服务中。应用层是网络操作者的应用接口,正像发件人将信件放进邮筒一样,网络操作者只需在应用程序中按下发送数据按钮,其余的任务都由应用层以下的层完成。

网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。图2-1OSI七层模型的示意。

2-5 CSMA/CD的帧发送流程

一个站要发送信息帧,首先要监听总线,以确定介质是否有其他站点正在发送信息。

如果介质是空闲的,则可以发送;如果介质是忙碌的,则要继续监听,一直等到介质空闲时方可发送。

在发送信息帧的同时,还要继续监听总线。一旦监听到冲突发生,便立即停止发送,并向总线发出一串阻塞信号来加强冲突,以便通知总线上各个站点已发生冲突。这样,通道的容量不致因传送已损坏的帧而白白浪费。

冲突发生后,应随机延迟一个时间量,再去争用总线。通常采用的延迟算法是二进制指数退避算法,其算法的过程如下:

对于每个帧,当第一次发生冲突时,设置参数L=2

退避时间间隔取1L个时间片中的一个随机数。1个时间片等于2aa为信息从始端传输到末端所需时间。

每当帧重复发生一次冲突,则将参量L加倍。

设置一个最大重传次数,如果超过这个次数,则不再重传,并报告出错信息。

这个算法是按照后进先出的次序控制的,即未发生冲突或很少发生冲突的帧,具有优先发送的概率。而发生过多次冲突的帧,发送成功的概率反而小。

 

网络中的计算机之间要想正确地传输信息和数据,必须在传输数据的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则就称为协议。协议的实质是网络通信所使用的一种语言。不同厂商的网络设备有许多差异,但只要这些设备遵守相同的协议(使用相同的技术语言进行通信)就可实现互连。因此网络协议利用软件规范实现了对网络设备硬件的无关性,使网络产品的设计和技术开发流程形成了明确的分工。下面我们从实用的角度介绍相关的内容。

网络模型

1 网络通信

为了理解网络层次模型,首先需要认识网络通信过程。网络通信过程的实质就是源主机(Source Host)的数据发送和目标主机(Destination Host)的数据接收,这两个子过程按照时间顺序进一步被划分成单独的任务,见表2-1

表2-1 网络通信过程


 

从应用程序接收数据

按照特定规格化分为数据段

将控制信息添加到数据段完成数据封装

增加时间和纠错控制

发送到网络的目标主机

 

目标主机从网络接收数据

校验数据并发送反馈信息

解除数据封装

根据控制信息拼装数据段

将数据发送给应用程序

断开网络连接

 

根据网络通信的实际过程,可以发现数据发送和接收的各个任务是相互对应的。网络模型的提出就是为了将网络通信过程标准化和抽象化,模型中层次的划分进一步将标准细化为网络体系结构。网络体系结构是关于计算机网络结构层次划分以及每层应提供功能的精确定义,功能的实现方法则不属于数据网络体系结构部分。换句话说,网络体系结构只是从功能上描述计算机网络的结构,而不涉及各层硬件软件的组成和实现问题。可见网络体系结构是抽象的。

当前最重要的两种网络模型是OSI模型和TCP/IP模型。

OSIOpen Systems Interconnection的简称,其中文译名为“开放式系统互联”。开放系统互连七层模型的定义和功能是网络技术入门者的敲门砖,也是分析、评判各种网络技术的依据。OSI模型为一种分层结构,通过这种结构,使得网络中不同计算机间相互交换信息的方式标准化。OSI将网络体系结构分为7层,各个层次包含了不同的网络活动和设备,以及相应的技术接口,此外,各个层次还拥有独立的称之为协议的标准。模型提出的目的是为了实现基于不同设备但又相互开放的网络之间互连,因此又称之为开放式系统互连模型。

开放式系统互连模型的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:

(1) 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;

(2) 在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行;

(3) 便于研究和教学。

 

数据编码是将数据表示成某种特殊的信号形式以便于数据的可靠传输。

1. 数字信号编码技术

对于传输数字信号来说,最普通且最容易的方法是用两个不同的电压值来表示两个二进制值。用无电压(或负电压)表示0,而正电压表示1

常用的数字信号编码有不归零(NRZ)编码、曼彻斯特(Manchester)编码和差分曼彻斯特(Differential Manchester)编码。

1NRZ编码

它的优点是:一位码元(一串脉冲)一个单位脉冲的亮度,称为全亮码。根据通信理论,每个脉冲亮度越大,信号的能量越大,抗干扰能力强,且脉冲亮度与信道带宽成反比,即全亮码占用信道较小的带宽编码效率高。

它的缺点是:当出现连续01时,难以分辨复位的起停点,会产生直流分量的积累,使信号失真。因此,过去大多数数据传输系统都不采用这种编码方式。近年来,随着技术的完善,NRZ编码已成为高速网络的主流技术。

2)曼彻斯特编码

在曼彻斯特编码中,用电压跳变的相位不同来区分10,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相应编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。

3)差分曼彻斯特

差分曼彻斯特编码是曼彻斯特编码的一种修改格式。其不同之处在于:每位的中间跳变只用于同步时钟信号;而01的取值判断是用位的起始处有无跳变来表示(若有跳变则为0,若无跳变则为1)。这种编码的特点是每一位均用不同电平的两个半位来表示,因而始终能保持直流的平衡。这种编码也是一种自同步编码。

2. 调制解调技术

目前在大多数情况下,远程通信还是利用现有的设备——电话线和电话网。一条电话信道的带宽是300Hz~3400Hz,远小于数字信号的传输带宽,因此利用电话线进行数据通信,就必须把数字信号转变成音频范围内的模拟信号,通过电话线传递到接收端,再变回数字信号,这两个转换的过程分别叫做“调制”和“解调”。(如图1-8所示)

1)调制

其基本思想是把数字信号的“0”和“1”用某种载波(正弦波)的变化表示,常用的调制方式有幅移键控法(ASK)、频移键控法(FSK)和相移键控法(PSK)。(如图1-9所示)

其中调相(PSK)传输的速率最高,可在音频电话线路上达到9,600 b/s

NT>2)解调

将被调制的信号从载波上取出,并还原成数字信号的过程称为解调。

3)调制解调器

调制解调技术的典型应用是我们拨号上网所使用的调制解调器(Modem)。它身兼两职,发送信号时为调制器,接收信号时为解调器。其工作原理如图1-10和图1-11所示。

 

两台计算机通过modem通信的过程如下:

一台计算机A要与另一台计算机B通信,A首先要拨通B的电话号码,建立一条通过中心电话交换机的通信链路。在建立链路的同时,A作为呼叫方与被呼叫方B的两台调制解调器建立一种呼叫、被呼叫关系。AB发送信号使用1070Hz(对应数字0)和1270Hz(对应数字1)使用信道1;而BA确认接收则使用2025Hz(对应数字0)和2225Hz(对应数字1),使用信道2AB两机以各自的调制解调器和两条信道交换信息,交换完毕后,A提出拆除链路请求,B应答后链路断开,通信结束。完整的通信流程见图1-12

 

ASP 的新增功能
除了内部性能增强和优化外,该版本的 Active Server Pages(ASP) 还具有如下新功能:

更好的国际化和 UTF-8 支持
改进的 POST 支持
ASP 挂起检测
常用文件的缓存
UNC 增强
ASP 中的 COM+ 服务
单元模型选择
并排集合
COM+ 分区
跟踪程序
事务
ASP 的新配置数据库属性
更好的国际化和 UTF-8 支持
UTF-8 支持已经被扩展到所有 ASP 内置对象的属性和方法中。上一版本的 ASP 仅在响应和写入方面支持 UTF-8。

改进的 POST 支持
ASP 目前可以从客户端读取 Chunked 编码的 POST 数据。

ASP 挂起检测
当 IIS 网站繁忙时,可能会出现这样的情况:迅速生成最大数量的 ASP 线程,其中的一些 ASP 线程被挂起,从而导致性能下降。 HSE_REQ_REPORT_UNHEALTHY 以及万维网发布服务(WWW 服务)将回收主控 ASP.dll 的工作进程,并将项目添加到事件日志中。

 注意 如果线程不响应超时,则将其视为“挂起”。

常用文件的缓存
目前,ASP 除了保留内存缓存之外,还在磁盘上缓存一些最常用的文件。磁盘缓存的默认位置是 %systemroot%\System32\inetsrv\ASP Compiled Templates。可以通过设置 AspDiskTemplateCacheDirectory 配置数据库属性来更改硬盘缓存的位置。

UNC 增强
目前,ASP 能够处理 ASP 脚本中的 UNC 路径。

ASP 中的 COM+ 服务
如果想要在以前版本的 IIS 中使用 ASP 应用程序提供的 COM+ 服务,您必须创建可以调用那些服务的方法的 COM 组件。目前,您可以配置 ASP 应用程序以使用下面的 COM+ 服务而不必创建 COM 组件

单元模型选择:
ASP 现在能够在多线程单元 (MTA) 中运行其全部线程。如果 COM 组件主要是自由线程或双线程组件,则将 ASP 线程作为 MTA 运行可显著改善性能。

要使 ASP 应用程序能够在 MTA 中运行,您可以在应用程序级别使用配置数据库设置 AspExecuteInMTA。这意味着您可以让一个应用程序运行于 ASP MTA 线程上,而让第二个应用程序运行于 ASP STA(单线程单元)线程上。ASP 线程的默认设置仍为 STA。

 要点 当您将 ASP 应用程序的运行环境从 STA 切换到 MTA(或从 MTA 切换到 STA)时,则模拟令牌将过时。这可能导致应用程序在无模拟的情况下运行,让其用可能允许访问其他资源的进程的标识有效地运行。如果您必须切换线程模型,请在进行更改之前禁用该应用程序并将其卸载。

下列示例设置默认网站应用程序 (W3SVC/1/ROOT) 在 MTA 中执行:

On Error Resume Next
set providerObj = GetObject(“winmgmts://MyMachine/root/MicrosoftIISv2″)
‘ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “Before: AspExecuteInMTA = ” & IIsWebVirtualDirSettingObj.AspExecuteInMTA
‘ 将 ASP 应用程序设置为在 MTA 中执行
IIsWebVirtualDirSettingObj.AspExecuteInMTA = 1
IIsWebVirtualDirSettingObj.Put_()
WScript.Echo “After: AspExecuteInMTA = ” & IIsWebVirtualDirSettingObj.AspExecuteInMTA
并排集合:
并排 (SxS) 集合允许 ASP 应用程序指定要使用哪个版本的系统 DLL 或传统 COM 组件,例如 MDAC、MFS、MSVCRT、MSXML 等。例如,如果您的 ASP 应用程序依赖 MSXML 2.0 版,则可以确保即使是在服务器上应用了 Service Pack 之后,您的应用程序仍使用 MSXML 2.0 版。任何新版本的 MSXML 仍安装在计算机上,但是保留 2.0 版且由应用程序使用。配置 SxS 程序集要求您知道 DLL 的路径,且 COM+ 清单文件存在于每个需要使用 DLL 的虚拟目录中。COM+ 清单是包含有关 DLL 安装位置信息的 XML 文件。IIS 不验证清单是否存在。清单的外观类似于下面的文件摘录:

<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<assembly xmlns=”urn:schemas-microsoft-com:asm.v1″ manifestVersion=”1.0″>
<assemblyIdentity publicKeyToken=”75e377300ab7b886″ type=”win32″ name=”Test4Dir” version=”1.0.0.0″ processorArchitecture=”x86″/>
<file name=”DirComp.dll” hash=”35ca6f27b11ed948ac6e50b75566355f0991d5d9″ hashalg=”SHA1″>
<comClass clsid=”{6C6CC20E-0F85-49C0-A14D-D09102BD7CDC}” progid=”DirComp.PathInfo” threadingModel=”apartment”/>
<typelib tlbid=”{AA56D6B8-9ADB-415D-9E10-16DD68447319}” version=”1.0″ helpdir=”"/>
</file>
</assembly>

您可以在 IIS 端以编程方式或者通过使用 IIS 管理器来启用并排集合。

在 IIS 端使用 IIS 管理器启用并排集合

在 IIS 管理器中,右键单击网站或虚拟目录,然后单击“属性”。
单击“虚拟目录”选项卡,然后单击“配置”。
如果配置按钮不可用,那么原因是还没有为该虚拟目录创建应用程序。单击“创建”以创建一个应用程序。
在“应用程序配置”对话框中,单击“选项”选项卡。
选中“启用并排集合”复选框。
在“清单文件名”框中,键入 COM+ 清单文件的名称。
单击“确定”两次。
要通过编程启用并排集合,请设置 AspAppServiceFlags 配置数据库属性的 AspEnableSxs 标志。同时将 AspSxsName 配置数据库属性设置为 COM+ 清单的名称。在应用程序级别设置这两个配置数据库属性。

 要点 即使该功能可在应用程序级别进行配置,在任何一个应用程序池中都只能使用一个版本的系统 DLL。例如,如果应用程序 App1 使用 MDAC 2.5 版,应用程序 App2 使用 MDAC 2.4 版,则 App1 和 App2 不应位于同一个应用程序池中。如果它们位于同一个应用程序池中,则首先加载的应用程序加载与之相对应的 MDAC 版本,在卸载这些应用程序之前,其他应用程序只能被迫使用该版本。

下列示例在默认网站应用程序 (W3SVC/1/ROOT) 上启用并排集合。请注意,只要设置了 AspEnableTracker 属性,AspAppServiceFlags 属性就发生改变:

On Error Resume Next
set providerObj = GetObject(“winmgmts://MyMachine/root/MicrosoftIISv2″)
‘ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “Before: AspEnableSxs = ” & IIsWebVirtualDirSettingObj.AspEnableSxs
WScript.Echo “        AspSxsName = ” & IIsWebVirtualDirSettingObj.AspSxsName
WScript.Echo “        AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
‘ 设置 ASP 应用程序以启用 COM+ 并排集合
IIsWebVirtualDirSettingObj.AspEnableSxs = 1
‘ 设置 AspSxsName 属性
IIsWebVirtualDirSettingObj.AspSxsName = “VersionInfo”
‘ 将值保存到 IIS 配置数据库
IIsWebVirtualDirSettingObj.Put_()
‘ 再次获得引用以刷新 AspAppServiceFlags 属性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “After: AspEnableSxs = ” & IIsWebVirtualDirSettingObj.AspEnableSxs
WScript.Echo “       AspSxsName = ” & IIsWebVirtualDirSettingObj.AspSxsName
WScript.Echo “       AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
COM+ 分区:
COM+ 分区可用于将 Web 应用程序隔离到它们各自的 COM+ 分区中。这对于禁止一个 Web 应用程访问另一个 Web 应用程序的专用 COM+ 应用程序、配置信息和数据非常有用。COM+ 分区可拥有自定义 COM 组件的不同版本。例如,如果为两个竞争的公司宿主网站,它们都在其 Web 应用程序中使用了 COM+,则可以使用 COM+ 分区来确保一个公司的 Web 应用程序不能访问另一个公司的 Web 应用程序中的 COM+ 组件。如果其中某个公司要求您更改它们都使用的 COM+ 应用程序的某些功能,您可以在链接到它们的 Web 应用程序的分区中隔离该 COM+ 应用程序的新版本。

要在 IIS 端启用 COM+ 分区,请在应用程序级别设置 AspAppServiceFlags 配置数据库属性的 AspUsePartition 标志。分区由 GUID(使用组件服务管理器管理单元创建)标识,它可在 AspPartitionID 配置数据库属性上进行设置。如果未指定任何分区,则使用默认系统分区。详细信息,请参阅 COM+ SDK 中的“创建和配置 COM+ 分区”或联机查看 COM+ (Component Services)。

 要点 即使该功能可在应用程序级别进行配置,在任何一个应用程序池中也只能使用一个版本的 COM+ 组件。例如,如果应用程序 App1 使用名为 Shop.dll 的 1.0 版的自定义 COM+ 应用程序,应用程序 App2 使用 2.0 版的 Shop.dll,则 App1 和 App2 不应位于同一个应用程序池中。如果它们位于同一个应用程序池中,则首先加载的应用程序加载与之对应的 Shop.dll 版本,在卸载这些应用程序之前,另一个应用程序只能被迫使用该版本。

下列示例在默认网站应用程序 (W3SVC/1/ROOT) 上启用分区。请注意,只要设置了 AspEnableTracker 属性,AspAppServiceFlags 属性就发生改变。

On Error Resume Next
set providerObj = GetObject(“winmgmts://MyMachine/root/MicrosoftIISv2″)
‘ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “Before: AspUsePartition = ” & IIsWebVirtualDirSettingObj.AspUsePartition
WScript.Echo “        AspPartitionID = ” & IIsWebVirtualDirSettingObj.AspPartitionID
WScript.Echo “        AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
‘ 设置 ASP 应用程序以启用 COM+ 分区
IIsWebVirtualDirSettingObj.AspUsePartition = 1
‘ 将 AspPartitionID 属性设置为在组件服务管理器中配置的 GUID
‘ 当您创建 COM+ 分区时
IIsWebVirtualDirSettingObj.AspPartitionID = “{00000000-0000-0000-0000-000000000000}”
‘ 将值保存到 IIS 配置数据库
IIsWebVirtualDirSettingObj.Put_()
‘ 再次获得引用以刷新 AspAppServiceFlags 属性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “After: AspUsePartition = ” & IIsWebVirtualDirSettingObj.AspUsePartition
WScript.Echo “       AspPartitionID = ” & IIsWebVirtualDirSettingObj.AspPartitionID
WScript.Echo “       AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
跟踪程序:
COM+ 跟踪程序允许管理员或开发人员调试 ASP 应用程序。例如,如果 Web 应用程序在服务器上产生问题,则可以启用 COM+ 跟踪程序,以便确定 ASP 页在何时加载、COM 组件在何时加载以及线程何时离开网页。在调试应用程序之后,可禁用 COM+ 跟踪程序,使应用程序返回到正常的执行速度。

要在 IIS 端上启用 COM+ 跟踪程序,请在应用程序级别中设置 AspAppServiceFlags 配置数据库属性的 AspEnableTracker 标志。

下列示例在默认网站应用程序 (W3SVC/1/ROOT) 上启用跟踪。请注意,只要设置了 AspEnableTracker 属性,AspAppServiceFlags 属性就发生改变:

On Error Resume Next
set providerObj = GetObject(“winmgmts://MyMachine/root/MicrosoftIISv2″)
‘ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “Before: AspEnableTracker = ” & IIsWebVirtualDirSettingObj.AspEnableTracker
WScript.Echo “        AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
‘ 设置 ASP 应用程序以启用 COM+ 跟踪
IIsWebVirtualDirSettingObj.AspEnableTracker = 1
IIsWebVirtualDirSettingObj.Put_()
‘ 再次获得引用以刷新 AspAppServiceFlags 属性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT’”)
WScript.Echo “After: AspEnableTracker = ” & IIsWebVirtualDirSettingObj.AspEnableTracker
WScript.Echo “       AspAppServiceFlags = ” & IIsWebVirtualDirSettingObj.AspAppServiceFlags
事务:从 IIS 4.0 版起,ASP 页面中已经支持事务的使用。但是,IIS 更改了事务的内部实现以便利用 COM+ 服务。IIS 不再通过创建 COM 组件来容纳事务,而是直接访问 COM+ 事务服务,因而大大地提高了事务处理的速度。与以前一样,事务只能在页面级别进行配置,配置时使用 @TRANSACTION 指令和 ASP 内置对象的事件,该对象名为 ObjectContext。
ASP 的新配置数据库属性
下面的配置数据库设置已被添加到此版本的 ASP 中。

配置数据库属性名 用途
AspAppServiceFlags 启用诸如 COM+ 并排集合(以前被称为 Fusion)、分区等功能。
AspDiskTemplateCacheDirectory 指定 ASP 磁盘缓存的位置。
AspExecuteInMTA 使 ASP 线程能够在多线程单元中执行。
AspKeepSessionIDSecure 将 ASP 会话 Cookie 安全地发送到浏览器
AspMaxDiskTemplateCacheFiles 指定 ASP 的最大硬盘缓存。
AspPartitionID 为应用程序指定所使用的 COM+ 分区。
AspRunOnEndAnonymously 使 ASP 能够以匿名方式运行 global.asa Application_OnEndSession_OnEnd 事件。
AspBufferingLimit 指定缓冲区大小的限制。
AspMaxRequestEntityAllowed 指定 ASP 请求的实体中允许的最大字节数。
AspSxsName 允许 ASP 应用程序指定要使用的系统 DLL 或 传统 COM 组件的版本。

点击此处浏览全部IIS的内容