📄 201003.htm
字号:
<html><body><span id=Layer1><a name=201003><font color=#3e70d7 face=arial size=5><b>应用程式支援的服务</span><span id=Layer2></b></font><p><font size=2 color=#3c3c3c face=arial>目录服务与安全性服务是分散式环境基础架构的基本要素。举例来说,每当一个使用者登入到纯Windows 2000 的网域中时,会同时使用到Active Directory与Kerberos。不过现在人们建立分散式运算环境来支援分散式应用程式。此外,支援这些应用程式的服务也是相当重要的。</span><span id=Layer3></font></p><p><font size=2 color=#3c3c3c face=arial>分散式环境必须支援分散式应用程式</span><span id=Layer4></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=Layer5></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在Windows 2000 中核心的目录与安全性服务是全新的-它们并没有存在在於旧版的Windows NT。不过应用程式支援的服务之情况并非如此。在Windows 2000 在这个领域增加了一些全新的服务,大部份用来支援分散式应用程式的服务是已存在於Windows NT 4的新版本。最重要的服务包含:</span><span id=Layer6></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> 元件物件模型</span><span id=Layer7> </b></font>(</span><span id=Layer8><font size=2 face=arial color=#3e80d7><b> Component Object Model,COM</span><span id=Layer9> </b></font>)</span><span id=Layer10><font size=2 face=arial color=#3e80d7><b> 与Distributed COM</span><span id=Layer11> </b></font>(</span><span id=Layer12><font size=2 face=arial color=#3e80d7><b> DCOM</span><span id=Layer13> </b></font>) 提供基础的元件服务,也是从元件来建立软体的基础。</span><span id=Layer14></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 资料存取服务</span><span id=Layer15> </b></font>提供存取资料的API,其中最重要的是ActiveX Data Objects (ADO)。</span><span id=Layer16></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 分散式交易服务</span><span id=Layer17> </b></font>依赖於分散交易协调员(Distributed Transaction Coordinator,DTC)确保牵涉到多个资料库或多个软体的操作能够正确的运作。</span><span id=Layer18></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> COM+</span><span id=Layer19> </b></font>延伸COM的进阶元件服务,包含交易服务,以及为建立更具延展性的应用程式提供之服务...等等。</span><span id=Layer20></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 讯息伫列服务</span><span id=Layer21> </b></font>使用Microsoft Message Queuing (MSMQ) 提供讯息导向的沟通方式。</span><span id=Layer22></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> Web服务</span><span id=Layer23> </b></font>提供服务以建立可透过Web存取的应用程式,包含Internet Information Services (IIS)所支援的Active Server Pages (ASPs)。</span><span id=Layer24></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>Windows 2000包含许多服务以支援分散式应用程式</span><span id=Layer25></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Windows 2000包含许多服务以支援分散式应用程式</span><span id=Layer26></font></p><hr><p><font size=2 color=#3c3c3c face=arial>即使它们并不全部是全新的,这些服务将是大多数分散式应用程式的基础。了解它们所提供的与应用的地方,对计划在Windows 2000 上工作的人是很基本的。</span><span id=Layer27></font></p><font color=#3e72d7 face=arial size=4><b>元件服务:COM 与 DCOM</span><span id=Layer28></b></font><p><font size=2 color=#3c3c3c face=arial>现在的软体密集地使用物件,物件是程式码和资料的组合体。不同的程式语言以类似却不同的方式来实作物件。举例来说,C++、Java与Microsoft Visual Basic都支援物件,不过每种语言都自有一套对物件和物件行为的见解。若所有的软体都是用上述其中一种语言开发的,我们可以接受物件是普遍地这个想法,每一件事都很好。不过不管是好是坏,Windows 2000 的世界变化更大。我们通常需要建立可让其它软体使用的软体,而不用管用来撰写软体的语言是哪一种。也因为物件的技术已几乎为全世界接受,所以我们喜欢使用物件来达到这个目的。</span><span id=Layer29></font></p><p><font size=2 color=#3c3c3c face=arial>物件技术是普遍存在的,由不同成份形成的</span><span id=Layer30></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=Layer31></font></p><hr><p><font size=2 color=#3c3c3c face=arial>这也就是COM所提供的。定义一组惯例来建立物件、使用物件(这些惯例可以套用到任何语言),COM提供一个标准的方式让任何软体来存取其它软体提供的服务。因为它应用层面很广,也很有用,所以COM已被用在建立Microsoft环境的大部份软体上。</span><span id=Layer32></font></p><p><font size=2 color=#3c3c3c face=arial>COM提供一个标准的方式让软体提供服务给其它软体</span><span id=Layer33></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>COM提供一个标准的方式让软体提供服务给其它软体</span><span id=Layer34></font></p><hr><p><font size=2 color=#3c3c3c face=arial>就像其它类型的物件一样,COM物件透过method提供它的服务,method就像是非物件导向语言的程序和函数一样。Method可以组成介面,而一个COM物件潜在可以实作多个不同的介面。图1-6显示一个有两个介面的COM物件,这两个介面是IAccount与ITransfer。在这个范例中,IAccount拥有叁个method:Credit,将存款存入特定的帐号;Debit,从特定的帐号扣款;GetBalance,回传特定帐户的馀额。ITransfer只有一个method,MoveMoney,从一个帐户转帐到另一个帐户。每一个COM物件都透过介面来显露它的服务,而客户端总是呼叫介面上的method来存取这些服务。</span><span id=Layer35></font></p><p><font size=2 color=#3c3c3c face=arial>COM物件实作介面,介面包含method</span><span id=Layer36></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>COM物件实作介面,介面包含method</span><span id=Layer37></font></p><hr><a name="1-6"></span><span id=Layer38><br><center><a target=_new href=imagesh/1-6.gif><img border=0 src='imagesl/1-6.gif'></a></center></span><span id=Layer39><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-6</span><span id=Layer40> </b></font>一个COM物件透过介面显露它的服务。</span><span id=Layer41></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>图1-7 示范COM的另一个重要性:不管一个COM物件是实作成载入客户端行程的动态连结程式库(dynamic link library,DLL),或载入和客户端同一台电脑上的另一个行程,若载入到其它台机器上,它显露服务的方式都是一致的。事实上,客户端并不需要了解物件是如何实作的,除非自己想知道-COM提供了必要的一些杂工来将不同之处隐藏起来。 COM使用基本的COM与DLL物件和执行在同一台机器不同行程的物件沟通,不过若要和其它机器上执行的物件沟通,还需要更多。对於这个部份,客户端则使用DCOM。呼叫COM物件method的方式就像呼叫非物件导向语言上的一个副程式一样。</span><span id=Layer42></font></p><p><font size=2 color=#3c3c3c face=arial>一个COM物件可以执行在相同的行程或与客户端不同的行程中</span><span id=Layer43></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>一个COM物件可以执行在相同的行程或与客户端不同的行程中</span><span id=Layer44></font></p><hr><p><font size=2 color=#3c3c3c face=arial>呼叫一个远端COM物件的method同样地也像呼叫一个传统的远端程序呼叫(remote procedure call,RPC)一样。基本RPC的概念是很简单的:使用与副程式呼叫相同的概念,然後延展到跨网路。客户端在呼叫时它的行为就像是进行一个传统的本机呼叫一样,不过这个副程式实际上是存在於其它机器的其它行程之上。对於习惯撰写程式码来进行副程序呼叫的程式设计师来说,这是一个相当熟悉的模型。</span><span id=Layer45></font></p><p><font size=2 color=#3c3c3c face=arial>呼叫一个COM method就像呼叫一个本机或远端的副程序 一样</span><span id=Layer46></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>呼叫一个COM method就像呼叫一个本机或远端的副程序 一样</span><span id=Layer47></font></p><hr><p><font size=2 color=#3c3c3c face=arial>RPC这个术语也可以视为过时了。现在的程式设计师不再呼叫副程式,而是呼叫物件上的method,因此有时也会使用远端method呼叫这个名词。不过这些概念都很类似,有些概念也已经改变了。</span><span id=Layer48></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b>附注 </b></font><p><font size=2 color=#3c3c3c face=arial>RPC这个术语也可以视为过时了。现在的程式设计师不再呼叫副程式,而是呼叫物件上的method,因此有时也会使用远端method呼叫这个名词。不过这些概念都很类似,有些概念也已经改变了。</span><span id=Layer49></font></p><hr><br><center><a target=_new href=imagesh/1-7.gif><img border=0 src='imagesl/1-7.gif'></a></center></span><span id=Layer50><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-7</span><span id=Layer51> </b></font>不管一个COM物件是如何实作出来的,客户端看起来都是相同的。</span><span id=Layer52></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>COM最早是在1993年推出的,而DCOM则是在1996年Windows NT 4发行时推出的。以上这两者都是完全RPC导向的。不过在Windows 2000 时,COM也支援非同步沟通,若要得到更多关於COM与DCOM的资讯请参考</span><span id=Layer53> <a target='_new' href=205.htm#>第五章</span><span id=Layer54></a> 。</span><span id=Layer55></font></p><font color=#3e72d7 face=arial size=4><b>资料存取服务</span><span id=Layer56></b></font><p><font size=2 color=#3c3c3c face=arial>占大部份百分比的分散式应用程式都会存取某些资料。而大部份的资料都是储存在DBMS。通常有些商业上的DBMS提供自己的API让应用程式来存取它包含的资料。拥有一个公用的API来存取许多不同的资料来源是很有用的。</span><span id=Layer57></font></p><p><font size=2 color=#3c3c3c face=arial>Microsoft曾尝试许多次以提供一个公用的介面。最古老的介面(仍是目前支援最广泛的)是一个API,称为Open Database Connectivity (ODBC)。ODBC是由一组C函数定义的,而ODBC趋动程式目前已支援最流行的资料库。不过在COM的到来,定义成C函数的API已渐渐过时了。今天,Microsoft以一组COM物件,并在每个物件实作一组适当的介面来定义一个最新的API-以用来进行资料存取和其它目的。Microsoft提出的第一个以COM为基础的公用资料存取介面是OLE Database,常被称为OLE DB。虽然OLE DB功能非常强大,但对一般程式设计师来说还是太复杂了。因此,Microsoft建立一个另一个资料存取介面,称ActiveX Data Objects (ADO)。</span><span id=Layer58></font></p><p><font size=2 color=#3c3c3c face=arial>Microsoft已定义许多不同的介面来进行资料存取</span><span id=Layer59></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>Microsoft已定义许多不同的介面来进行资料存取</span><span id=Layer60></font></p><hr><p><font size=2 color=#3c3c3c face=arial>就如图1-8中展示,一个应用程式可能潜在地使用叁种介面的任一个。ADO永远实作在OLE DB之上,而OLE DB可以,也可以不实作在ODBC之上。ADO可有效地让任何类型的程式设计语言使用,它也是Microsoft最鼓励开发Windows 2000 应用程式的设计师所使用的资料存取介面。关於Windows 2000 资料存取介面更详细的部份将於</span><span id=Layer61> <a target='_new' href=206.htm#>第六章</span><span id=Layer62></a> 中描述。</span><span id=Layer63></font></p><p><font size=2 color=#3c3c3c face=arial>ADO是目前新应用程式最常用的资料存取介面</span><span id=Layer64></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>ADO是目前新应用程式最常用的资料存取介面</span><span id=Layer65></font></p><hr><p><font size=2 color=#3c3c3c face=arial>资料存取介面和Windows 2000 分散服务有何关系并不明显。那麽为何要在这边提到它呢?答案是为描述Windows 2000 其它分散服务运作的情况,特别是COM+所提供的交易服务,至少需要了解Microsoft基本的资料存取服务之概念。</span><span id=Layer66></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b>附注 </b></font><p><font size=2 color=#3c3c3c face=arial>资料存取介面和Windows 2000 分散服务有何关系并不明显。那麽为何要在这边提到它呢?答案是为描述Windows 2000 其它分散服务运作的情况,特别是COM+所提供的交易服务,至少需要了解Microsoft基本的资料存取服务之概念。</span><span id=Layer67></font></p><hr><br><center><a target=_new href=imagesh/1-8.gif><img border=0 src='imagesl/1-8.gif'></a></center></span><span id=Layer68><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-8</span><span id=Layer69> </b></font>一个应用程式可以使用ADO、OLE DB,或ODBC来存取资料。</span><span id=Layer70></td></table></font></center><font color=#3e72d7 face=arial size=4><b>分散式交易服务</span><span id=Layer71></b></font><p><font size=2 color=#3c3c3c face=arial>交易在许多分散式应用程式扮演相当重要的角色。一个交易可以视为一组操作,如更改一个或多个资料库,它们必须视为一个单位以进行确认或取消的动作。在交易中每个操作都会执行,或全部都不执行。举例来说,在两家银行帐户之间进行转帐需要在一个帐户中增加金额,然後在另一个帐户中减少金额。若只有一个操作发生,有些人可能就会不高兴。将这两个操作包装在同一个交易中可以确保两个事件都会发生或全部都不发生。</span><span id=Layer72></font></p><p><font size=2 color=#3c3c3c face=arial>交易对许多类型的应用程式来说是很重要的</span><span id=Layer73></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=Layer74></font></p><hr><p><font size=2 color=#3c3c3c face=arial>目前大部份的DBMS都支援交易,因此应用程式有时可以依赖底层的DBMS来符合它们交易性的需求。(事实上,Microsoft提出的叁种资料存取介面都允许应用程式来开始或结束一个受DBMS管理的交易。)不过交易中的操作横跨多个DBMS是很不寻常的。在这个情况下,任何一个DBMS所提供的交易管理函数可能就不够用了。此外,还需要一些服务来确保分散式环境中交易之确认或取消的动作是视为一体的。在Windows 2000 中有一个服务,称分散交易协调者 (Distributed Transaction Coordinator,DTC)便负责这件事。</span><span id=Layer75></font></p><p><font size=2 color=#3c3c3c face=arial>某些交易必需跨多个DBMS</span><span id=Layer76></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>某些交易必需跨多个DBMS</span><span id=Layer77></font></p><hr><p><font size=2 color=#3c3c3c face=arial>DTC允许应用程式使用跨多台机器与多个DBMS的交易。DTC可以搭配Microsoft的DBMS、SQL Server与其它公司的DBMS来使用,如Oracle与IBM的DB2。虽然DTC只执行在Microsoft的作业系统上,它也可以确保执行在其它作业系统上的DBMS之交易行为,包含UNIX与IBM大型主机。DTC运作的过程将在</span><span id=Layer78> <a target='_new' href=207.htm#>第七章</span><span id=Layer79></a> 中描述。</span><span id=Layer80></font></p><p><font size=2 color=#3c3c3c face=arial>DTC允许交易横跨多个DBMS或多台机器</span><span id=Layer81></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>DTC允许交易横跨多个DBMS或多台机器</span><span id=Layer82></font></p><hr><font color=#3e72d7 face=arial size=4><b>元件服务:COM+</span><span id=Layer83></b></font><p><font size=2 color=#3c3c3c face=arial>COM已普遍地存在-它被应用在许多为Microsoft作业系统撰写的大部份软体上。然而软体技术是日新月异的东西,而Windows 2000引进了下一代以COM为基础的技术。这就是所谓的COM+,这个版本并没有变动COM的基本-物件、介面与method都仍和以前一样。</span><span id=Layer84></font></p><p><font size=2 color=#3c3c3c face=arial>COM+是COM下一代的技术</span><span id=Layer85></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>COM+是COM下一代的技术</span><span id=Layer86></font></p><hr><p><font size=2 color=#3c3c3c face=arial>COM+新增许多的功能到这个基础技术上来。在COM+中有一部份重要的技术是由Microsoft Transaction Services (MTS)而来。虽然「MTS」这个名词已不再使用了,不过它提供的服务目前成为Windows 2000 COM+的一部份。COM增强了这些服务,包含交易、基於客户端的角色(role)来授权、物件状态管理...等等。不过对於已了解MTS运作的程式设计师来说,要抓住COM的这个部份是不难的。</span><span id=Layer87></font></p><p><font size=2 color=#3c3c3c face=arial>COM+的许多概念都是从MTS而来的</span><span id=Layer88></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>COM+的许多概念都是从MTS而来的</span><span id=Layer89></font></p><hr><p><font size=2 color=#3c3c3c face=arial>COM+也包含许多其它的服务,包含:</span><span id=Layer90></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> 伫列元件</span><span id=Layer91> </b></font>(</span><span id=Layer92><font size=2 face=arial color=#3e80d7><b> Queued Componen</span><span id=Layer93> </b></font>) 允许透过MSMQ呼叫COM物件的method,而不使用COM传统的机制。</span><span id=Layer94></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> COM+事件</span><span id=Layer95> </b></font>允许物件能够订阅事件,然後在事件发生时进行通知。</span><span id=Layer96></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 其它特性</span><span id=Layer97> </b></font>举例来说,物件集区(Object Pooling)允许将COM物件的实例放到快取以供稍後使用。</span><span id=Layer98></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>Windows 2000发行时也支援元件负载平衡的特性。一开始它是COM+的一部份,可在Windows 2000技术预览版本中看到。这个功能是可以运作的,不过CLB正式发行时会在出现另一个产品上(在Application Center Server 2000这个产品上出现。)。CLB允许COM物件在丛集机器中最适合的机器上建立,并能够聪明地跨这些系统平衡应用程式的负载。</span><span id=Layer99></font></p><p><font size=2 color=#3c3c3c face=arial>许多(虽然并非全部)COM+的特性都是加强版本的标准COM执行时期程式库所提供的,通常称为COM runtime。在COM一开始发行时,这个程式库提供了所有COM物件可使用的标准服务。而COM+的到来,将MTS提供的服务内建在COM runtime上,同时也增加一些新的服务。如图1-9所示,COM runtime可以介入客户端与COM物件之间,拦截所有对COM物件的呼叫。也由於COM runtime处於客户端和物件之间,它便可以自动地提供一些服务,如交易、授权和状态管理。COM+为COM所带来的增强服务将在</span><span id=Layer100> <a target='_new' href=208.htm#>第八章</span><span id=Layer101></a> 中讨论。</span><span id=Layer102></font></p><p><font size=2 color=#3c3c3c face=arial>COM+透过增强版本的COM runtime程式库来提供许多服务</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>COM+透过增强版本的COM runtime程式库来提供许多服务</span><span id=Layer104></font></p><hr><br><center><a target=_new href=imagesh/1-9.gif><img border=0 src='imagesl/1-9.gif'></a></center></span><span id=Layer105><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-9</span><span id=Layer106> </b></font>一个增强版本的COM runtime程式库,COM+的主要部份,提供给COM物件许多不同的服务。</span><span id=Layer107></td></table></font></center><font color=#3e72d7 face=arial size=4><b>讯息伫列服务</span><span id=Layer108></b></font><p><font size=2 color=#3c3c3c face=arial>对於某些类型的分散式应用程式来说,使用COM与DCOM提供的RPC沟通机制是很完美的。不过有些事是RPC做不到的。举例来说,使用RPC时,每个远端的呼叫都会将客户端绑死,直到客户端接收到伺服器的回应之前,它不能执行其它工作。在某些情况下,客户端会觉得它毫无反应,使用者便会不快乐。RPC另一项限制便是客户端与伺服器都必须同时执行-客户端无法投寄某些讯息,而稍後再由伺服器取回。虽然RPC对程式设计师来说是相单简单容易使用,不过它的弹性也不高。</span><span id=Layer109></font></p><p><font size=2 color=#3c3c3c face=arial>让客户端在往下执行之前需等待回应有时会造成问题</span><span id=Layer110></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=Layer111></font></p><hr><p><font size=2 color=#3c3c3c face=arial>对於无法存活在RPC限制下的分散式应用程式而言,讯息伫列不失为一个好选择。虽然有时它比RPC要复杂些,但讯息伫列提供更大的弹性。现在客户端不需要等待伺服器的回应,事实上,伺服器有可能在客户端传送要求的时後是不存在的。应用程式透过将讯息传送到伫列,然後从伫列中接收讯息的方式来沟通。</span><span id=Layer112></font></p><p><font size=2 color=#3c3c3c face=arial>讯息伫列可允许客户端传送一个讯息,然後不需等待便能继续执行</span><span id=Layer113></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=Layer114></font></p><hr><p><font size=2 color=#3c3c3c face=arial>MSMQ在1997年发行,允许分散式透过伫列沟通。如图1-10所示,MSMQ允许应用程式传送一个讯息到伫列中。</span><span id=Layer115></font></p><br><center><a target=_new href=imagesh/1-10.gif><img border=0 src='imagesl/1-10.gif'></a></center></span><span id=Layer116><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-10</span><span id=Layer117> </b></font>透过MSMQ,部份的分散式应用程式便可以传送讯息到伫列,并从伫列接收讯息。</span><span id=Layer118></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>若有必要,MSMQ可以将讯息转送到其它伫列中,最後由其它应用程式接收。这个应用程式也有可能回传一个讯息给传送者,通常是透过不同的伫列。传送端并不需要等待回应,当讯息传送时它也不一定在执行中。透过MSMQ,发出一个要求与取得一个回应的动作是完全分开的,和密集连锁的呼叫和RPC的回应不同。MSMQ对许多分散式应用程式来说是一个功能相当强大的工具,将於</span><span id=Layer119> <a target='_new' href=209.htm#>第九章</span><span id=Layer120></a> 中描述。</span><span id=Layer121></font></p><p><font size=2 color=#3c3c3c face=arial>MSMQ提供讯息伫列服务</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>MSMQ提供讯息伫列服务</span><span id=Layer123></font></p><hr><font color=#3e72d7 face=arial size=4><b>Web服务</span><span id=Layer124></b></font><p><font size=2 color=#3c3c3c face=arial>有多少个分散式应用程式是为了没有浏览器介面选择性的Windows 2000 而建立的?正确的答案是相当趋进於零。不管用在Internet或跨公司组织的Intranet,今日的应用程式必须要能够过Web存取-这是使用者要求的。</span><span id=Layer125></font></p><p><font size=2 color=#3c3c3c face=arial>透过Web存取已变成基本的功能</span><span id=Layer126></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>透过Web存取已变成基本的功能</span><span id=Layer127></font></p><hr><p><font size=2 color=#3c3c3c face=arial>为了达到这个要求,Windows 2000 包含了Internet Information Services(IIS)。IIS和其它的Web伺服器一样,它允许客户端的浏览器要求一个包含HyperText Markup Language (HTML)的一般档案;客户端透过Uniform Resource Locators (URLs)来要求这些档案。同样地就像其它Web伺服器一样,IIS允许客户端传入可以识别身份和档案的URL。当这些应用程式执行时,便动态地产生HTML和其它的资讯,然後传回IIS以及要求这份文件的浏览器上。</span><span id=Layer128></font></p><p><font size=2 color=#3c3c3c face=arial>IIS允许浏览器存取档案与应用程式</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>IIS允许浏览器存取档案与应用程式</span><span id=Layer130></font></p><hr><p><font size=2 color=#3c3c3c face=arial>如图1-11所示,IIS可以使用许多种方式来产生资讯并传回客户端。</span><span id=Layer131></font></p><br><center><a target=_new href=imagesh/1-11.gif><img border=0 src='imagesl/1-11.gif'></a></center></span><span id=Layer132><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图1-11</span><span id=Layer133> </b></font>IIS提供许多方式来产生要回传到客户端的资讯,范围从读取一个简单的档案到建构一个存取资料库的复杂应用程式。</span><span id=Layer134></td></table></font></center><p><font size=2 color=#3c3c3c face=arial>对於IIS来说最简单的方案便是从一个一般的档案中读取HTML标注的资料。也有可能执行一个能动态查询资料库来产生HTML的应用程式。IIS支援许多不同的方式来建立这类的应用程式,包含:</span><span id=Layer135></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> Common Gateway Interface</span><span id=Layer136> </b></font>(</span><span id=Layer137><font size=2 face=arial color=#3e80d7><b> CGI</span><span id=Layer138> </b></font>) 允许建立一个应用程式,每当发出一个新要求时,便在另一个行程中执行。</span><span id=Layer139></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> Internet Server API</span><span id=Layer140> </b></font>(</span><span id=Layer141><font size=2 face=arial color=#3e80d7><b> ISAPI</span><span id=Layer142> </b></font>) 允许建立DLL,在必要时载入。</span><span id=Layer143></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> Active Server Page</span><span id=Layer144> </b></font>(</span><span id=Layer145><font size=2 face=arial color=#3e80d7><b> ASP</span><span id=Layer146> </b></font>) 这个技术可让程式设计师建立程式-使用执行在Web伺服器上,相当简单的描述语言,如Visual Basic Scripting Edition,通常称为VBScript。ASP结合了功能强大、容易使用的特性,这也是在IIS建立应用程式最常见的解决方案。</span><span id=Layer147></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>任何使用这些方案的应用程式都可以建立并使用COM物件,能让应用程式存取资料库、其它应用程式...等等。IIS也和COM+整合在一起,允许应用程式使用它提供的服务,包含交易等等。</span><span id=Layer148></font></p><p><font size=2 color=#3c3c3c face=arial>IIS应用程式可以使用COM物件以及COM+服务</span><span id=Layer149></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>IIS应用程式可以使用COM物件以及COM+服务</span><span id=Layer150></font></p><hr><p><font size=2 color=#3c3c3c face=arial>由於Web浏览器介面的使用人口大增,跨公用或私有网路的需求,许多新的分散式应用程式是使用Web技术建立的。在Windows 2000 中是透过IIS,以Web为基础的应用程式和IIS如何整合在一起将在</span><span id=Layer151> <a target='_new' href=210.htm#>第十章</span><span id=Layer152></a> 中讨论。</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -