⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 209004.htm

📁 探索Windows 2000发展策略以及中介层技术设计的基本概念
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><body><span  id=Layer1><a name=209004><font color=#3e70d7 face=arial size=5><b>了解讯息</span><span  id=Layer2></b></font><p><font size=2 color=#3c3c3c face=arial>就某方面而言,MSMQ讯息是非常简单的东西-它们只不过是一组属性罢了。因为MSMQ试着提供功能强大且富弹性的服务,所以每个讯息有很多属性,想要全盘了解并不容易。表9-2列出讯息的属性,其中忽略了只是包含其他属性的属性。本节最後描述几个最重要的属性。</span><span  id=Layer3></font></p><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b>&nbsp;表 9-2 MSMQ讯息属性</span><span  id=Layer4>&nbsp;</b></font></td></table></font></center><center><table border=1><tr><th><font size=2>属性</span><span  id=Layer5></b></font></td><th><font size=2>描述</span><span  id=Layer6></b></font></td></tr><tr><td><font size=2>认可</span><span  id=Layer7></font></td><td><font size=2>指出何种认可讯息应该被传送</span><span  id=Layer8></font></td></tr><tr><td><font size=2>管理伫列名称</span><span  id=Layer9></font></td><td><font size=2>送入认可讯息的伫列名称</span><span  id=Layer10></font></td></tr><tr><td><font size=2>应用程式特有</span><span  id=Layer11></font></td><td><font size=2>用来过滤收到的讯息</span><span  id=Layer12></font></td></tr><tr><td><font size=2>到达时间</span><span  id=Layer13></font></td><td><font size=2>讯息到达伫列的日期和时间</span><span  id=Layer14></font></td></tr><tr><td><font size=2>验证</span><span  id=Layer15></font></td><td><font size=2>MSMQ必须验证这个收到的讯息吗?</span><span  id=Layer16></font></td></tr><tr><td><font size=2>验证延伸</span><span  id=Layer17></font></td><td><font size=2>使用MSMQ 2.0的数位签章版本吗?</span><span  id=Layer18></font></td></tr><tr><td><font size=2>验证等级</span><span  id=Layer19></font></td><td><font size=2>讯息应该被数位签章吗?</span><span  id=Layer20></font></td></tr><tr><td><font size=2>本文</span><span  id=Layer21></font></td><td><font size=2>讯息内容</span><span  id=Layer22></font></td></tr><tr><td><font size=2>本文类型</span><span  id=Layer23></font></td><td><font size=2>讯息内容的类型</span><span  id=Layer24></font></td></tr><tr><td><font size=2>类别</span><span  id=Layer25></font></td><td><font size=2>讯息类型:标准、认可、报告</span><span  id=Layer26></font></td></tr><tr><td><font size=2>连接器类型</span><span  id=Layer27></font></td><td><font size=2>让应用程式,例如gateway,能设定一般由		MSMQ所设定的属性</span><span  id=Layer28></font></td></tr><tr><td><font size=2>关联识别码</span><span  id=Layer29></font></td><td><font size=2>关联识别码</span><span  id=Layer30></font></td></tr><tr><td><font size=2>传递</span><span  id=Layer31></font></td><td><font size=2>快递或可恢复</span><span  id=Layer32></font></td></tr><tr><td><font size=2>目的地伫列</span><span  id=Layer33></font></td><td><font size=2>送入讯息的伫列名称</span><span  id=Layer34></font></td></tr><tr><td><font size=2>目的地对称金钥</span><span  id=Layer35></font></td><td><font size=2>加密讯息的金钥</span><span  id=Layer36></font></td></tr><tr><td><font size=2>加密演算法</span><span  id=Layer37></font></td><td><font size=2>选择用来加密本文的演算法</span><span  id=Layer38></font></td></tr><tr><td><font size=2>延伸</span><span  id=Layer39></font></td><td><font size=2>用来与非MSMQ系统沟通</span><span  id=Layer40></font></td></tr><tr><td><font size=2>第一个异动讯息</span><span  id=Layer41></font></td><td><font size=2>这是异动的第一个讯息吗?</span><span  id=Layer42></font></td></tr><tr><td><font size=2>杂凑演算法</span><span  id=Layer43></font></td><td><font size=2>选择数位签章的杂凑演算法</span><span  id=Layer44></font></td></tr><tr><td><font size=2>日志</span><span  id=Layer45></font></td><td><font size=2>讯息要记录到日志伫列、送到无法投递的信件		伫列、或是都不要?</span><span  id=Layer46></font></td></tr><tr><td><font size=2>标签</span><span  id=Layer47></font></td><td><font size=2>应用程式为讯息定义的字元字串</span><span  id=Layer48></font></td></tr><tr><td><font size=2>最後一个异动讯息</span><span  id=Layer49></font></td><td><font size=2>这是异动的最後一个讯息吗?</span><span  id=Layer50></font></td></tr><tr><td><font size=2>讯息识别码</span><span  id=Layer51></font></td><td><font size=2>MSMQ为讯息产生的识别码</span><span  id=Layer52></font></td></tr><tr><td><font size=2>优先顺序</span><span  id=Layer53></font></td><td><font size=2>0到7之间的数值</span><span  id=Layer54></font></td></tr><tr><td><font size=2>私密性等级</span><span  id=Layer55></font></td><td><font size=2>讯息有加密吗?</span><span  id=Layer56></font></td></tr><tr><td><font size=2>提供者名称</span><span  id=Layer57></font></td><td><font size=2>在非MSMQ系统中的密码编译服务提供者</span><span  id=Layer58></font></td></tr><tr><td><font size=2>提供者类型</span><span  id=Layer59></font></td><td><font size=2>密码编译服务提供者的类型</span><span  id=Layer60></font></td></tr><tr><td><font size=2>回应伫列</span><span  id=Layer61></font></td><td><font size=2>送入回应讯息的伫列名称</span><span  id=Layer62></font></td></tr><tr><td><font size=2>安全性内文</span><span  id=Layer63></font></td><td><font size=2>包含安全资讯</span><span  id=Layer64></font></td></tr><tr><td><font size=2>传送者凭证</span><span  id=Layer65></font></td><td><font size=2>传送者的凭证</span><span  id=Layer66></font></td></tr><tr><td><font size=2>传送者识别码</span><span  id=Layer67></font></td><td><font size=2>讯息传送者的Windows 2000 SID</span><span  id=Layer68></font></td></tr><tr><td><font size=2>传送者识别码类型</span><span  id=Layer69></font></td><td><font size=2>传送者的识别码是SID或是null ?</span><span  id=Layer70></font></td></tr><tr><td><font size=2>寄出时间</span><span  id=Layer71></font></td><td><font size=2>讯息送出的日期和时间</span><span  id=Layer72></font></td></tr><tr><td><font size=2>签章</span><span  id=Layer73></font></td><td><font size=2>讯息的数位签章</span><span  id=Layer74></font></td></tr><tr><td><font size=2>来源电脑识别码</span><span  id=Layer75></font></td><td><font size=2>指明讯息来自那台电脑</span><span  id=Layer76></font></td></tr><tr><td><font size=2>收到讯息的时间</span><span  id=Layer77></font></td><td><font size=2>讯息必须被接收的最大时间限制</span><span  id=Layer78></font></td></tr><tr><td><font size=2>到达伫列的时间</span><span  id=Layer79></font></td><td><font size=2>讯息必须到达伫列的最大时间限制</span><span  id=Layer80></font></td></tr><tr><td><font size=2>追踪</span><span  id=Layer81></font></td><td><font size=2>控制是否传送追踪讯息</span><span  id=Layer82></font></td></tr><tr><td><font size=2>版本</span><span  id=Layer83></font></td><td><font size=2>传送者所使用的MSMQ软体版本</span><span  id=Layer84></font></td></tr><tr><td><font size=2>异动识别码</span><span  id=Layer85></font></td><td><font size=2>指出讯息所属的异动</span><span  id=Layer86></font></td></tr><tr><td><font size=2>异动状态伫列</span><span  id=Layer87></font></td><td><font size=2>容纳由非MSMQ系统所送的异动认可讯息</span><span  id=Layer88></font></td></tr></table></center><font color=#3e72d7 face=arial size=4><b>讯息本文</span><span  id=Layer89></b></font><p><font size=2 color=#3c3c3c face=arial>讯息属性中最重要的是本文。就如你所预料的,本文包含讯息传递的资料,而资料大小最多为4 MB。另一个属性指出讯息本文中资料的种类,这个属性是本文类型。本文有很多可能值包括整数、字元字串、二进位字串、以及其他。讯息本文的资料也可以是一个COM物件。例如,应用程式可以传送ADO Recordset当作MSMQ讯息内容,只要简单地把Recordset指定到本文属性就行了。</span><span  id=Layer90></font></p><p><font size=2 color=#3c3c3c face=arial>本文属性包含讯息的资料</span><span  id=Layer91></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>本文属性包含讯息的资料</span><span  id=Layer92></font></p><hr><font color=#3e72d7 face=arial size=4><b>传递类型</span><span  id=Layer93></b></font><p><font size=2 color=#3c3c3c face=arial>讯息的传递属性决定如何处理讯息以及如何在储存在伫列中。这属性有两个可能值:快递(Express)以及可恢复(Recoverable)。如果标记为快递传递,处理这讯息的所有伫列只把讯息存放在记忆体中-讯息不会被写入磁碟。快递讯息会非常快速地传递到目的地伫列,但要为速度付出代价。如果存放快递讯息的伫列所在电脑当掉了,快递讯息就都会遗失。</span><span  id=Layer94></font></p><p><font size=2 color=#3c3c3c face=arial>快递讯息相当快速,但机器当掉时就会遗失</span><span  id=Layer95></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>快递讯息相当快速,但机器当掉时就会遗失</span><span  id=Layer96></font></p><hr><p><font size=2 color=#3c3c3c face=arial>相反地,可恢复(Recoverable)传递的讯息会写入磁碟。如果机器当掉,伫列中的可恢复讯息并不会遗失,因为讯息早已写入永续储存体中。MSMQ提供了选择,开发者必须自行在可靠传递与快速通讯之间作衡量。</span><span  id=Layer97></font></p><p><font size=2 color=#3c3c3c face=arial>可恢复讯息较慢,但机器当掉时不会遗失</span><span  id=Layer98></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>可恢复讯息较慢,但机器当掉时不会遗失</span><span  id=Layer99></font></p><hr><p><font size=2 color=#3c3c3c face=arial>一个使用可恢复讯息的明显情况是当MSMQ应用程式执行在独立客户端且未连上网路时。如果在重新连上网路之前关闭客户端 (例如,你的笔记型电脑),快递讯息会遗失。设定传递属性为可恢复,可以保证在重新连上网路之前应用程式的讯息会保存在本机磁碟内。</span><span  id=Layer100></font></p><font color=#3e72d7 face=arial size=4><b>讯息的预设存留时间</span><span  id=Layer101></b></font><p><font size=2 color=#3c3c3c face=arial>某些讯息是有时间性的。例如,如果在几秒钟之内没收到讯息的话,那也许应该把它丢弃比较好。MSMQ为这状况定义了一对讯息属性。收到讯息的时间属性值指定自讯息送出後可以存活的总秒数。如果没有应用程式在这段时间内接收这个讯息,那麽MSMQ会把它丢弃。同样地,到达伫列的时间指定讯息必须到达目的地伫列的总秒数。如果讯息不能即时到达-也许是到达伫列的唯一路径不通了-MSMQ会把它丢弃。</span><span  id=Layer102></font></p><p><font size=2 color=#3c3c3c face=arial>如果讯息太久不能到达目的地或是被收到,那它可能会被丢弃</span><span  id=Layer103></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>如果讯息太久不能到达目的地或是被收到,那它可能会被丢弃</span><span  id=Layer104></font></p><hr><font color=#3e72d7 face=arial size=4><b>认可</span><span  id=Layer105></b></font><p><font size=2 color=#3c3c3c face=arial>丢弃讯息的可能性引出另一个重点:传送者如何知道讯息最後怎麽了?哪些讯息正确地送达了?哪些讯息被丢弃?认可属性回答了这些问题。这个属性有五个可能值:</span><span  id=Layer106></font></p><font size=2 color=#3c3c3c face=arial><ul><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Full Reach Queue</span><span  id=Layer107>&nbsp;</b></font>使得MSMQ自动送出一个认可讯息指出讯息已经到达目的地伫列,或是永远无法到达 (也许是超过了到达伫列的时间属性值、或是目的地伫列已经到达存放限制量、或是发生了其他错误)。如果讯息无法到达目的地,可能会送出几种不同的认可讯息,这完全取决於错误发生的确切原因。这使得传送者可以得知讯息无法到达伫列,以及到底是那里出了差错。</span><span  id=Layer108></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Full Receive</span><span  id=Layer109>&nbsp;</b></font>使得MSMQ送出一个认可讯息指出讯息已经被接收,或是永远无法被接收 (也许是超过了收到讯息的时间 (Time To Be Received) 属性值)。</span><span  id=Layer110></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Nack Reach Queue</span><span  id=Layer111>&nbsp;</b></font>使得MSMQ送出一个认可讯息指出讯息无法到达目的地伫列 (再说一次,也许是超过了到达伫列的时间(Time To Reach Queue)属性值或是其他原因)。</span><span  id=Layer112></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;Nack Receive</span><span  id=Layer113>&nbsp;</b></font>使得MSMQ送出一个认可讯息指出讯息无法被收到 (例如,超过了收到讯息的时间(Time To Be Received)属性值)。</span><span  id=Layer114></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b>&nbsp;None MSMQ</span><span  id=Layer115>&nbsp;</b></font>不会送出认可讯息。如果传送者没有设定认可(Acknowledge)属性的话,这是预设值。</span><span  id=Layer116></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>MSMQ提供多种认可方式</span><span  id=Layer117></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>MSMQ提供多种认可方式</span><span  id=Layer118></font></p><hr><p><font size=2 color=#3c3c3c face=arial>MSMQ产生的所有认可讯息会传送到应用程式设定的管理伫列内。需要认可的话,传送应用程式必须提供每个送出讯息的管理伫列名称属性值,用来指定哪个管理伫列应该收到认可讯息。</span><span  id=Layer119></font></p><font color=#3e72d7 face=arial size=4><b>讯息日志</span><span  id=Layer120></b></font><p><font size=2 color=#3c3c3c face=arial>讯息伫列的一个好处就是很容易保有传送过讯息的记录。对高度要求审核效率的组织而言,例如本书虚构的公司范例-QwickBank,这是非常方便的。应用程式可以设定每个讯息的日志属性以决定要为讯息保留怎样的记录。如果属性值设为日志,那麽讯息的副本会被放入传送机器上的日志伫列。对已传送那些讯息感兴趣的应用程式可以来检查这个伫列。</span><span  id=Layer121></font></p><p><font size=2 color=#3c3c3c face=arial>日志属性使得保留每个送出讯息的副本在送出者所在机器的伫列内</span><span  id=Layer122></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>日志属性使得保留每个送出讯息的副本在送出者所在机器的伫列内</span><span  id=Layer123></font></p><hr><p><font size=2 color=#3c3c3c face=arial>为什麽收不到讯息呢?对设定日志属性值为无法投递的信件讯息而言,答案就在无法投递的信件伫列中。如果是丢弃送往非异动 (non-transactional) 伫列的讯息,那麽讯息会放入决定丢弃讯息的机器上的无法投递的信件伫列。如果是异动伫列,那麽讯息会放入送出讯息的机器上之异动的无法投递的信件伫列。最後,如果没设定的话,预设是不做任何事-当讯息传送时,它不会被记录在日志伫列中;如果讯息无法接收时,它也不会被转送到无法投递的信件伫列。</span><span  id=Layer124></font></p><p><font size=2 color=#3c3c3c face=arial>日志属性控制着无法传递的讯息是否要送到无法投递的信件伫列</span><span  id=Layer125></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>日志属性控制着无法传递的讯息是否要送到无法投递的信件伫列</span><span  id=Layer126></font></p><hr><font color=#3e72d7 face=arial size=4><b>讯息的优先顺序</span><span  id=Layer127></b></font><p><font size=2 color=#3c3c3c face=arial>通常,应用程式中某些讯息会比其他讯息来得重要些。例如在QwickBank的经纪人应用程式中,进行交易的讯息比只是查询股票现值优先,而且高额交易总是有更高的优先顺序。MSMQ清楚这个事实,所以让应用程式能设定每个讯息的优先顺序。优先顺序定义为0到7之间的整数值,数值愈高优先顺序愈高 (MSMQ预设讯息的优先顺序值为3)。当MSMQ做路由决定以及讯息插入伫列时,就会考虑到优先顺序。高优先顺序的讯息会插到伫列的前端,而不是按照讯息到达的次序。讯息路由会考虑到讯息的优先顺序,存於优先顺序属性的伫列优先顺序会先被考虑。</span><span  id=Layer128></font></p><p><font size=2 color=#3c3c3c face=arial>优先顺序属性会影响讯息被传送的顺序</span><span  id=Layer129></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>优先顺序属性会影响讯息被传送的顺序</span><span  id=Layer130></font></p><hr><font color=#3e72d7 face=arial size=4><b>传送回应讯息</span><span  id=Layer131></b></font><p><font size=2 color=#3c3c3c face=arial>当应用程式传送讯息到伫列,它可能也会期待得到某些回应。使用RPC-based的沟通机制,例如DCOM,由谁回应是相当明显的-COM runtime会追踪呼叫来自何方。然而,使用讯息伫列的话,如何回应传送者的讯息便不那麽明显了。毕竟,讯息的一项好处是不必明确知道谁会接收到讯息的能力。缺乏与应用程式的紧密连结,传送者要如何让接收者知道要如何回应呢?答案是使用MSMQ讯息的另一个属性。藉由设定回应伫列属性值,传送者可以通知接收者回应讯息要放在那里。并不要求一定得设定这个属性,某些应用程式宁愿使用预先定义好的一组伫列。不过它确实提供一个方便、标准的方式让讯息接受者能得知回应讯息该送往何处。(然而,请别搞混了,设定这个属性并不能强制接收者一定要回应。是否回应,与应用程式有关,与MSMQ无关。)</span><span  id=Layer132></font></p><p><font size=2 color=#3c3c3c face=arial>回应伫列属性包含回应讯息应送往的伫列名称</span><span  id=Layer133></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>回应伫列属性包含回应讯息应送往的伫列名称</span><span  id=Layer134></font></p><hr><p><font size=2 color=#3c3c3c face=arial>另一个相关问题是传送者如何连结回应讯息到引发回应的讯息?例如,假设送出十个讯息并且得到十个回应。并不保证收到回应的顺序会与送出相对讯息的顺序相同。为解决这个问题,送出讯息时,MSMQ会为每个讯息产生一个唯一的讯息识别码。传送者与接收者都能读取这个属性。需要的话,可以拷贝讯息识别码到回应讯息的关联识别码属性。记住,送出讯息的讯息识别码,再与收到讯息的关联识别码相比对,传送者就能找出讯息与回应的配对了。事实上,MSMQ处理认可属性的认可要求时便是这麽做的,拷贝原始讯息的讯息识别码到认可讯息的关联识别码。</span><span  id=Layer135></font></p><p><font size=2 color=#3c3c3c face=arial>关联识别码使得传送者得以决定它所要回应的讯息为何</span><span  id=Layer136></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>关联识别码使得传送者得以决定它所要回应的讯息为何</span>
	</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -