592 ASP3高级编程 China°beo 下载 册(存储在ADS中)。如果公司的网络仅包含一个小的LAN,需要的服务器仅是PEC,并且它可 以与IS合并在同一个服务器中。在大型企业中,PEC用于存储其他MSMQ服务器的位置和队 列的信息,并在它们之间路由消息,通常在此服务器上仅有 Backoffice服务。 2.主站点控制器 公司WAN的远程分支或站点中通常存在一个主站点控制器(PSC),PSC能与远程LAN上的 本地客户通信,并将消息反馈给PEC。每个分支都有一个PSC,提供返回PEC的单点通信。这 有助于节省资源,例如网络通信,这对远程站点是重要的,特别是在较慢网络链路上。 如上所述,在小的LAN中,并不总是需要PSC,其工作可由PEC来完成。 3.备用站点控制器 备用站点控制器(BSC)用于存储PSC中信息的只读副本。通常每个站点安装一个BSC,就 像PSC一样。如果PSC失败,它提供故障屏蔽支持 4.路由器 随着企业中MSMQ结构的不断扩大,MSMQ路由器将会变得非常有用。路由器不仅能够 将消息传递到目标队列,而且也能使服务器使用不同的网络协议互相通信,例如TCP/IP和 IPX。 MSMQ路由服务器没有存储消息的本地队列,它仅能够确定传送消息的最佳路由。当网 络部分关闭时,MSMQ路由服务器非常有用。路由器会试着寻找消息到达目的地的其它路径。 在PEC和PSC服务器中也包含MSMQ路由器的功能。由于每个站点都要求包含PEC或PS 这意味着每个站点都包含某种路由器。 20.2.2客户类型 客户安装比较容易掌握,因为只包含两种安装选项 ·从属客户 独立客户 1.独立客户 MSMQ的独立客户可以安装在运行 Windows9x、 Windows nt4或 Windows2000的计算 机上。独立客户具有发送消息给其他MSMQ服务器队列和从其他MSMQ服务器中读取消息的 能力,还可以在本地队列中存储消息。 MSMQ的独立客户常安装在应用程序服务器和网络服务器上。由于独立客户可以存储消 息,它们不依赖于运行在目标计算机上的MSMQ服务。对COM组件或ASP脚本来说,在想发 送消息但MSMQ服务器不可用时,这是非常有用的。这时,独立客户在本地队列中存储消息 等到MSMQ服务器变为可用,才传送消息(存储和传送) 尽管独立客户可以具有本地队列,但它们不需要安装ADS或 SQL Server,而是把消息和 队列信息存放在文件和注册表中。这允许客户在本地具有许多MSMQ功能。独立客户也具有 通过使用 MSMQEvent对象异步响应消息的能力。 安装MSMQ独立客户时,安装向导将会对PEC给出相应地提示信息,这样客户机 可以向PEC注册。 2.从属客户 MSMQ从属客户是 Windows9X、 Windows nt4和 Windows200客户的另一选择。独立
册(存储在A D S中)。如果公司的网络仅包含一个小的 L A N,需要的服务器仅是P E C,并且它可 以与I I S合并在同一个服务器中。在大型企业中, P E C用于存储其他M S M Q服务器的位置和队 列的信息,并在它们之间路由消息,通常在此服务器上仅有 B a c k O ff i c e服务。 2. 主站点控制器 公司WA N的远程分支或站点中通常存在一个主站点控制器 ( P S C ),P S C能与远程L A N上的 本地客户通信,并将消息反馈给 P E C。每个分支都有一个P S C,提供返回P E C的单点通信。这 有助于节省资源,例如网络通信,这对远程站点是重要的,特别是在较慢网络链路上。 如上所述,在小的L A N中,并不总是需要P S C,其工作可由P E C来完成。 3. 备用站点控制器 备用站点控制器( B S C )用于存储P S C中信息的只读副本。通常每个站点安装一个 B S C,就 像P S C一样。如果P S C失败,它提供故障屏蔽支持。 4. 路由器 随着企业中M S M Q结构的不断扩大, M S M Q路由器将会变得非常有用。路由器不仅能够 将消息传递到目标队列,而且也能使服务器使用不同的网络协议互相通信,例如 T C P / I P和 I P X。 M S M Q路由服务器没有存储消息的本地队列,它仅能够确定传送消息的最佳路由。当网 络部分关闭时,M S M Q路由服务器非常有用。路由器会试着寻找消息到达目的地的其它路径。 在P E C和P S C服务器中也包含M S M Q路由器的功能。由于每个站点都要求包含 P E C或P S C, 这意味着每个站点都包含某种路由器。 20.2.2 客户类型 客户安装比较容易掌握,因为只包含两种安装选项: • 从属客户 • 独立客户 1. 独立客户 M S M Q的独立客户可以安装在运行 Windows 9x 、Windows NT 4或Windows 2000的计算 机上。独立客户具有发送消息给其他 M S M Q服务器队列和从其他 M S M Q服务器中读取消息的 能力,还可以在本地队列中存储消息。 M S M Q的独立客户常安装在应用程序服务器和网络服务器上。由于独立客户可以存储消 息,它们不依赖于运行在目标计算机上的 M S M Q服务。对C O M组件或A S P脚本来说,在想发 送消息但M S M Q服务器不可用时,这是非常有用的。这时,独立客户在本地队列中存储消息, 等到M S M Q服务器变为可用,才传送消息 (存储和传送)。 尽管独立客户可以具有本地队列,但它们不需要安装 A D S或SQL Server,而是把消息和 队列信息存放在文件和注册表中。这允许客户在本地具有许多 M S M Q功能。独立客户也具有 通过使用M S M Q E v e n t对象异步响应消息的能力。 安装M S M Q独立客户时,安装向导将会对 P E C给出相应地提示信息,这样客户机 可以向P E C注册。 2. 从属客户 M S M Q从属客户是Windows 9X、Windows NT 4和Windows 2000客户的另一选择。独立 592计计ASP 3 高级编程 下载
Chinaopub coM M20 AS RAER M& 593 和从属安装之间的主要区别是从属客户不能在本地存储消息,从属客户也不能在其他服务器 上建立队列或从队列中异步读取消息 从属客户访问MSMQ服务器时,只能发送和读取消息。由于没有本地队列,所以也不能 接收消息。 由于终端用户响应消息的需求不大,从属客户通常安装在终端用户工作站上 20.2.3站点布局图 图20-1是跨越WAN并具有中心LAN的MSMQ安装布局图。 站点B PEC主企业控制器 主站点控制器 Bc备用站点控制器 MSM MSM MSMQ 路由服务器 站点D MSMQ独立的或非 图20-1SMQ安装布局图 多路径 配置企业级的MSMQ安装时,必须确定两个路由器之间链路的费用。这种费用由相关因 素决定。链路速度、链路有效带宽和实际链路货币花費等,这些都可算入计算机链路费用 当执行动态路由时,MSMQ会计算出发送者和接收者间的最“廉价”的链路,并以此路径发 送信息。由于不必明确创建静态路径,这使MSMQ的配置更简单。这允许MSMQ绕过网络柘 扑的断点发送消息,因此提高了消息服务的可用性 20.2.4投递选项 微软消息队列服务器有三种可供选择的消息投递方式,每种投递消息的方式具有不同的 优点和缺点,这三种投递类型是 内存式 磁盘式。 事务式。 1.内存式的投递 在这种投递类型中,当消息通过消息队列系统从一个队列管理器传送到另一个队列管理 器时,消息依然存储在系统内存中。如果在网络和队列管理器中存在消息不能与网络中的下 个队列处理器联系的问题,那么这条消息将会被保存直到连接能恢复。内存式的投递非常
和从属安装之间的主要区别是从属客户不能在本地存储消息,从属客户也不能在其他服务器 上建立队列或从队列中异步读取消息。 从属客户访问M S M Q服务器时,只能发送和读取消息。由于没有本地队列,所以也不能 接收消息。 由于终端用户响应消息的需求不大,从属客户通常安装在终端用户工作站上。 20.2.3 站点布局图 图2 0 - 1是跨越WA N并具有中心L A N的M S M Q安装布局图。 图20-1 SMQ安装布局图 多路径 配置企业级的M S M Q安装时,必须确定两个路由器之间链路的费用。这种费用由相关因 素决定。链路速度、链路有效带宽和实际链路货币花费等,这些都可算入计算机链路费用。 当执行动态路由时, M S M Q会计算出发送者和接收者间的最“廉价”的链路,并以此路径发 送信息。由于不必明确创建静态路径,这使 M S M Q的配置更简单。这允许 M S M Q绕过网络柘 扑的断点发送消息,因此提高了消息服务的可用性。 20.2.4 投递选项 微软消息队列服务器有三种可供选择的消息投递方式,每种投递消息的方式具有不同的 优点和缺点,这三种投递类型是: • 内存式。 • 磁盘式。 • 事务式。 1. 内存式的投递 在这种投递类型中,当消息通过消息队列系统从一个队列管理器传送到另一个队列管理 器时,消息依然存储在系统内存中。如果在网络和队列管理器中存在消息不能与网络中的下 一个队列处理器联系的问题,那么这条消息将会被保存直到连接能恢复。内存式的投递非常 第2 0章 A S P和消息队列服务器计计593 下载 站点A MSMQ 客户 MSMQ 客户 PEC PEC MSMQ 客户 MSMQ 客户 主企业控制器 主站点控制器 备用站点控制器 路由服务器 独立的或非 独立的客户 MSMQ 客户 MSMQ 客户 MSMQ 客户 MSMQ 客户 站点B 站点C 站点D
594Ap高程 Chinaopub com 下载 迅速,这是由于消息从来不会从系统内存中传送到磁盘。虽然这种类型的消息可以在两个队 列管理器之间网络连接失败的情况下继续存在,但是当所在的机器出现故障时将会丢失。这 是获得内存式投递的速度优势所必须付出的代价 2.磁盘式的投递 当消息从一个队列处理器传送到另一个队列处理器时,消息存储在每个机器的硬盘上 当消息传到下一个机器时,随着发送机器完成传送,从前一个机器的硬盘上删除消息。由于 消息必须写入所通过的所有机器的磁盘,所以会比内存式的投递花费更长的时间才能到达目 的地。毕竟磁盘输入输出要比内存慢几个数量级。好处是系统岀现故障时能够恢复消息,这 种投递方法意味着消息通过队列管理器时,将每个消息写入磁盘,系统出现故障时不会破坏 消息。此方式要求MSMQ服务器使用可恢复文件系统,如NTFS 3.事务式投递 最后,从传送者到接收者的所有消息的处理可被认为是一个事务。由于事务支持ACID特 性,这意味着事务式投递的消息具有原子性、一致性、隔离性和持久性 持久性意味着当消息在系统中传输时,事务性消息利用磁盘式投递方法将每个 消息写入永久性的存储器中。原子性意味着消息只投递一次,并以发送的次序投递 事务性消息利用COM事务控制特性来提供消息投递的事务特性。这种投递方法的好处是MSMQ 消息可以参与使用数据库操作的事务。这允许在使用MSMQ的应用程序中建立复杂的业务规则 20.3管理MSMQ MSMQ2.0像 Windows2000中的许多服务一样,通过MMC插件来进行管理。MSMQ插件 位于 Computer Mangement插件之下,如图20-2所示。 图202MSMQ插件 MSMQ的MMC插件完成的任务一般是增加一个新的队列,向MSMQ服务器增加新的队列 非常容易。 20.3.1增加队列 打开 Computer Management插件,然后打开 Message Queuing的下一级列表,如图20-3所示
迅速,这是由于消息从来不会从系统内存中传送到磁盘。虽然这种类型的消息可以在两个队 列管理器之间网络连接失败的情况下继续存在,但是当所在的机器出现故障时将会丢失。这 是获得内存式投递的速度优势所必须付出的代价。 2. 磁盘式的投递 当消息从一个队列处理器传送到另一个队列处理器时,消息存储在每个机器的硬盘上。 当消息传到下一个机器时,随着发送机器完成传送,从前一个机器的硬盘上删除消息。由于 消息必须写入所通过的所有机器的磁盘,所以会比内存式的投递花费更长的时间才能到达目 的地。毕竟磁盘输入输出要比内存慢几个数量级。好处是系统出现故障时能够恢复消息,这 种投递方法意味着消息通过队列管理器时,将每个消息写入磁盘,系统出现故障时不会破坏 消息。此方式要求M S M Q服务器使用可恢复文件系统,如 N T F S。 3. 事务式投递 最后,从传送者到接收者的所有消息的处理可被认为是一个事务。由于事务支持 A C I D特 性,这意味着事务式投递的消息具有原子性、一致性、隔离性和持久性。 持久性意味着当消息在系统中传输时,事务性消息利用磁盘式投递方法将每个 消息写入永久性的存储器中。原子性意味着消息只投递一次,并以发送的次序投递。 事务性消息利用C O M +事务控制特性来提供消息投递的事务特性。这种投递方法的好处是M S M Q 消息可以参与使用数据库操作的事务。这允许在使用M S M Q的应用程序中建立复杂的业务规则。 20.3 管理M S M Q MSMQ 2.0像Windows 2000中的许多服务一样,通过 M M C插件来进行管理。M S M Q插件 位于Computer Mangement插件之下,如图2 0 - 2所示。 图20-2 MSMQ插件 M S M Q的M M C插件完成的任务一般是增加一个新的队列,向 M S M Q服务器增加新的队列 非常容易。 20.3.1 增加队列 打开Computer Management插件,然后打开Message Queuing的下一级列表,如图2 0 - 3所示。 594计计ASP 3 高级编程 下载
Chinaopub coM M20 ASP RAER ME595 c的母度 图20-3增加队列的窗口 下一步,右击 Public Queues文件夹选择New,然后选择 Public Queue。现在MMC将显 个提示对话框,询问队列名称和队列是否为事务性的,如图20-4所示 名称一般是一个用户友好的字符串,可用 来识别队列(标签)。事务性设置决定了队列传 送和接收消息时是否需要事务。本章后面将进 介绍事务。现在只是简单地命名此队列为 ASPTrans并设置为事务性的。 OKCancel 在本章的最后将在MSMQ的示例中使 用这个队列。 图20-4确定队列名称的对话框 MSMQ将创建一个新的名为 ASPTrans的公共队列,如图20-5所示。 Uers and Removable orace and Aopl 日 WMI Contro Internet iny 图20-5创建一个公共队列后的窗口
图20-3 增加队列的窗口 下一步,右击Public Queues文件夹选择N e w,然后选择Public Queue。现在M M C将显示 一个提示对话框,询问队列名称和队列是否为事务性的,如图 2 0 - 4所示。 名称一般是一个用户友好的字符串,可用 来识别队列 (标签)。事务性设置决定了队列传 送和接收消息时是否需要事务。本章后面将进 一步介绍事务。现在只是简单地命名此队列为 A S P Tr a n s并设置为事务性的。 在本章的最后将在 M S M Q的示例中使 用这个队列。 M S M Q将创建一个新的名为A S P Tr a n s的公共队列,如图2 0 - 5所示。 图20-5 创建一个公共队列后的窗口 第2 0章 A S P和消息队列服务器计计595 下载 图20-4 确定队列名称的对话框
596Asp高程 China°beo 下载 现在此队列设置为用来接收消息。首先来看一下队列的设置和MSMQ缺省值 20.3.2消息队列的属性 为了查看MSMQ队列的属性,右击左边目录树中或者右边的MMC插件中的队列,并选择 Properties。将出现一个 Properties.对话框,此 Properties对话框包含此消息队列的所有属性设置 如图20-6所示 Genera ]securitY 囫 watcher\ASPTrans Type ID E0A3GA76364E214B9540357A44031日 Lmit message stot ape to你B Pivacylvet Optiona彐Baop彐 Enabled mi joumal storage toⅨKB 图20-6设置队列属性的对话框 在 Properties对话框中主要有两部分, General和 Security. General由以下几部分组成 Label:描述队列的字符串(队列名称) Type ID:可用于把多个队列组合在一起的GUID ID:当队列建立时由MSMQ服务器分配的GUID Limit message storage:管理员为防止队列不断扩大而设置的队列限额。 · Authenticated:决定队列是否接受客户证书。 Transactional:指定队列是否需要事务 · Privacy level:确定队列是否使用加密和在消息的哪一部分加密 · Base Priority:确定队列接受的最低优先级。缺省值是0,设置值可以是从O到7之间的整 · Journal:决定日志是否有效和大小的限制,日志在读取后保留消息而不进行删除 队列属性的第二部分是 Security。在这里决定谁有权读取、发送和管理队列,如图20-7所 在 Permissions区域中有两个项要注意。这个队列对每个用户都提供了 Write message访问, 而不是 Receive message访问。这意味着Web站点的客户可以发送消息而不能读取消息(除非 Web应用程序需要用户被验证,这是正常的需要)。权限应该是比较严格的, Everyone组应被
现在此队列设置为用来接收消息。首先来看一下队列的设置和 M S M Q缺省值。 20.3.2 消息队列的属性 为了查看M S M Q队列的属性,右击左边目录树中或者右边的 M M C插件中的队列,并选择 P r o p e r t i e s。将出现一个P r o p e r t i e s对话框,此P r o p e r t i e s对话框包含此消息队列的所有属性设置, 如图2 0 - 6所示。 图20-6 设置队列属性的对话框 在P r o p e r t i e s对话框中主要有两部分,G e n e r a l和S e c u r i t y。G e n e r a l由以下几部分组成: • Label:描述队列的字符串(队列名称)。 • Type ID:可用于把多个队列组合在一起的 G U I D。 • ID:当队列建立时由M S M Q服务器分配的G U I D。 • Limit message storage:管理员为防止队列不断扩大而设置的队列限额。 • Authenticated:决定队列是否接受客户证书。 • Tr a n s a c t i o n a l:指定队列是否需要事务。 • Privacy level:确定队列是否使用加密和在消息的哪一部分加密。 • Base Priority:确定队列接受的最低优先级。缺省值是 0,设置值可以是从0到7之间的整 数。 • Journal:决定日志是否有效和大小的限制,日志在读取后保留消息而不进行删除。 队列属性的第二部分是 S e c u r i t y。在这里决定谁有权读取、发送和管理队列,如图 2 0 - 7所 示。 在P e r m i s s i o n s区域中有两个项要注意。这个队列对每个用户都提供了 Write Message访问, 而不是Receive Message访问。这意味着 We b站点的客户可以发送消息而不能读取消息 (除非 We b应用程序需要用户被验证,这是正常的需要 )。权限应该是比较严格的, E v e r y o n e组应被 596计计ASP 3 高级编程 下载