📄 208001.htm
字号:
<html><body><span id=Layer1><p><font size=2 color=#3c3c3c face=arial>对於所有最简单的叁层式应用程式来说,将中间层(即商业逻辑)包装成COM元件是有意义的,让客户端可透过分散式的COM (DCOM),或从Web浏览器透过HTTP与Internet Information Services (IIS)存取这些元件。同时让这些元件使用ActiveX Data Objects (ADO)来存取储存资料也具有相当的意义。对於一些很简单的应用程式来说,这些技术可能已满足所有的需求。</span><span id=Layer2></font></p><p><font size=2 color=#3c3c3c face=arial>不过大部份叁层式应用程式的中间层需要的不仅仅如此。举例来说,如</span><span id=Layer3> <a target='_new' href=207.htm#>前章</span><span id=Layer4></a> 所描述,企业级的应用程式通常会使用交易。在某些情况下,依赖资料库管理系统(database management system,DBMS)所提供的交易能力便已足够。若不足够,中间层软体的程式设计师可以直接使用分散交易协调者(Distributed Transaction Coordinator,简称DTC)。如果可以有一种通用的方式让中间层来进行交易处理,并隐藏不同的资料来源之间的异同,以及DTC的复杂性,那麽程式设计师的生活将会变得简单一些。</span><span id=Layer5></font></p><p><font size=2 color=#3c3c3c face=arial>中间层COM物件有利於许多不同的服务使用</span><span id=Layer6></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=Layer7></font></p><hr><p><font size=2 color=#3c3c3c face=arial>或者思索一下∶将企业级应用程式扩展成拥有成千上万同时上线的客户端,这样的需求是很稀松平常的。若只使用一个标准的COM元件,却想要达到这种程度的延展性几乎是件不可能的任务,这必须靠应用程式设计师大量的工作方可完成。建立可延展的应用程式之通用机制,以及能够让许多不同类型的应用程式使用,可能会使建立叁层式应用程式更为简单也更为快速。然而还有其它的问题存在,也就是程式设计师得一再面对的中间层COM物件。</span><span id=Layer8></font></p><p><font size=2 color=#3c3c3c face=arial>有用的服务包含了使用交易来建立可延展的应用程式等等</span><span id=Layer9></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=Layer10></font></p><hr><p><font size=2 color=#3c3c3c face=arial>若果真如此,为何不建立一个通用的解决方案呢?不用要求每位程式设计师重新建立一个自订的方法,较有意义的作法是提供一个标准的解决方案来面对这个问题。Windows 2000平台上的新产物,COM+,就是为了这个而存在的。它提供了一组服务来对付中间层程式设计师共同面对的问题。COM+包含了许多东西,不过Windows 2000第一次发行时,其中COM+ 1.0包含的主体是专注在建立可延展的、交易导向的中间层商业逻辑。</span><span id=Layer11></font></p><p><font size=2 color=#3c3c3c face=arial>COM+为COM物件提供了一组功能强大的服务</span><span id=Layer12></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=Layer13></font></p><hr><a name=208001><font color=#3e70d7 face=arial size=5><b>从COM到COM+</span><span id=Layer14></b></font><p><font size=2 color=#3c3c3c face=arial>Microsoft在1993年时首次让COM公开亮相,而DCOM是在1996年随Windows NT 4.0出货的。稍後在同一年便发行Microsoft Transaction Server (MTS),Windows NT 4.0 Option Pack的一部份。MTS第二版发行後只增强一些功能,基本架构并无太大改变。MTS是完全以COM为基础的(每个MTS应用程式都是设计成一个或多个COM元件)同时它提供一组有用的服务,以便建立叁层式应用程式中的中间层商业逻辑。但先不管这个问题,MTS是以COM的附加功能型式建立的。它并没有修改基本的COM基础架构,取而代之的作法是提供一个独立的程式库,称MTS Executive来提供它的服务。</span><span id=Layer15></font></p><p><font size=2 color=#3c3c3c face=arial>MTS 为中间层的COM物件提供许多的服务</span><span id=Layer16></font></p><hr><font face=Arial Black color=#3e77d7 size=3><b></b></font><p><font size=2 color=#3c3c3c face=arial>MTS 为中间层的COM物件提供许多的服务</span><span id=Layer17></font></p><hr><p><font size=2 color=#3c3c3c face=arial>而真实的状况是COM+整合了MTS与COM。MTS Executive已经告别了年代,它的功能现在已成为标准COM runtime的一部份。如</span><span id=Layer18> <a target='_new' href=205.htm#>第五章</span><span id=Layer19></a> 所描述,有些基本的COM基础架构,如CoCreateInstance也因为COM+ 的到来而大受影响。这些并不代表你无法使用最早在1993年定义的COM来建立应用程式 还是可以的。而COM+的主要目标是将MTS所提供的服务整合到标准的COM程式库,然後提供额外增强的功能。事实上,将增强版的COM+ 1.0视为MTS第叁版是不正确的。COM+从MTS扩增的服务包含∶</span><span id=Layer20></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=Layer21> </b></font>(</span><span id=Layer22><font size=2 face=arial color=#3e80d7><b> Automatic transaction</span><span id=Layer23> </b></font>) 不需要客户端或中间层元件明确地定义交易开始、结束的时机,这个服务可让你以简单、元件导向的方式来使用交易。</span><span id=Layer24></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 物件生命周期服务</span><span id=Layer25> </b></font>(</span><span id=Layer26><font size=2 face=arial color=#3e80d7><b> Object lifetime services</span><span id=Layer27> </b></font>) 聪明的使用伺服器机器的资源是建立可延展的应用程式之基本要素。COM+的及时启动(Just-In-Time activation,JIT)服务允许物件只在必要的时刻才启动,然後在不需要的时後自动地消失。主要的目标是增进应用程式的延展性(以此方式便可在使用相同的伺服器硬体这个条件下,支援众多的客户端)与正确性。物件集区(Object pooling)是COM+提供的另一种选择,允许将不再需要的物件置入集区中的快取,而非将其摧毁。稍後这个物件可以在集区中找到,然後在必要时重复使用。</span><span id=Layer28></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 执行绪与并行服务</span><span id=Layer29> </b></font>(</span><span id=Layer30><font size=2 face=arial color=#3e80d7><b> Threading and concurrency service</span><span id=Layer31> </b></font>) 非多执行绪的伺服器应用程式若得让多个客户端同时存取时效率可能会相当地慢,因为每一个客户端都必需等待,轮流执行。很明显地撰写多执行绪应用程式相当的困难。COM+提供执行绪与并行服务让程式设计师更容易地撰写应用程式,这些应用程式立刻就可让多个使用者安全地存取。</span><span id=Layer32></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 安全性服务</span><span id=Layer33> </b></font>(</span><span id=Layer34><font size=2 face=arial color=#3e80d7><b> Security Services</span><span id=Layer35> </b></font>) 不再需要更改ACL,或更糟的状况是更改应用程式的真正程式码,COM+提供授权服务(authorization service)允许程式设计师或系统管理者控制客户端能存取的资源,只要简单地设定一下应用程式的组态就行了。在管理上COM+同样也允许设定为了进行验证、资料完整性与资料隐密性的应用程式需求,或将或将这些资讯加到应用程式本身以移除这些需求。</span><span id=Layer36></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>COM+ 能与MTS提供的服务相互运作</span><span id=Layer37></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=Layer38></font></p><hr><p><font size=2 color=#3c3c3c face=arial>这些所有的服务,还有更多的服务则由更新、且增强功能版本的COM runtime提供。为了要提供上述的服务,COM runtime便介入客户端对COM物件所发出的每一个method call之间,就如同MTS Executive在Windows NT 4中所做的一样。</span><span id=Layer39></font></p><p><font size=2 color=#3c3c3c face=arial>COM+同样增加其它的服务</span><span id=Layer40></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=Layer41></font></p><hr><p><font size=2 color=#3c3c3c face=arial>在Windows 2000作业平台上首次发行的版本中,COM+同样包含了许多COM相关的服务,这些服务的根源不是在MTS中,它们包含∶</span><span id=Layer42></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> COM+ 事件</span><span id=Layer43> </b></font>(</span><span id=Layer44><font size=2 face=arial color=#3e80d7><b> COM+ Events</span><span id=Layer45> </b></font>) 允许一个元件传送一个事件,让多个客户端接收是应用程式开发时一个很普通的需求。可建立一个一般的服务(有时称为发行与订阅模型)让这件事更容易进行。COM+事件提供这项服务,将事件以COM 物件的method 型式展现。</span><span id=Layer46></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 伫列元件</span><span id=Layer47> </b></font>(</span><span id=Layer48><font size=2 face=arial color=#3e80d7><b> Queued Components</span><span id=Layer49> </b></font>) 往往客户端叫用COM 物件的method是属於同步的。客户端会一直等待直到呼叫回传。伫列元件带来非同步呼叫COM与DCOM物件method的型式,允许这些要求经由Microsoft Message Queuing (MSMQ)携带,而非透过远端程序呼叫(remote procedure call ,RPC)协定或其它的机制等进行。因为它对MSMQ的相依性,所以将在</span><span id=Layer50> <a target='_new' href=209.htm#>第九章</span><span id=Layer51></a> 介绍伫列元件。</span><span id=Layer52></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 元件负载平衡</span><span id=Layer53> </b></font>(</span><span id=Layer54><font size=2 face=arial color=#3e80d7><b> Component Load Balancing</span><span id=Layer55> </b></font>) 当一个客户端呼叫CoCreateInstance,新物件潜在地可能会建立在许多台伺服器机器上。元件负载平衡提供一种服务,追踪一组伺服器目前的负载情形,然後将建立物件的要求转送到最不忙碌的机器。如本章前面所述,元件负载平衡只在Windows 2000的技术预览版本上才有提供,正式的版本中并未支援。</span><span id=Layer56></li><br></font><font size=2 face=arial color=#3c3c3c><li><font size=2 face=arial color=#3e80d7><b> 其它的服务</span><span id=Layer57> </b></font>(</span><span id=Layer58><font size=2 face=arial color=#3e80d7><b> Miscellaneous other services</span><span id=Layer59> </b></font>) 包含了Bring Your Own Transaction (BYOT),允许你明确加入一个正在进行的交易之中,支援COM物件的建构者(constructor)等等。</span><span id=Layer60></li><br></font></ul></font><p><font size=2 color=#3c3c3c face=arial>COM+所提供的大部份服务都是由增强版的COM runtime提供的。这个runtime是Windows 2000的标准部份,如图8-1所示。它介於COM物件与客户端之间,拦截客户端对COM物件所发出的每一个method call。不管客户端是否为一个执行在桌上型电脑,透过DCOM存取这些物件的Visual Basic程式,或是一支执行在与这些物件相同的机器上之ASP script,或其它的程式,由於介於客户端与客户端使用的COM物件之间,都允许COM runtime提供许多有用的服务。如图中所示,使用这些服务的物件大多是最常存取一个或多个资料库的。</span><span id=Layer61></font></p><p><font size=2 color=#3c3c3c face=arial>COM+主要是透过增强版的COM runtime程式库来提供服务</span><span id=Layer62></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=Layer63></font></p><hr><br><center><a target=_new href=imagesh/8-1.gif><img border=0 src='imagesl/8-1.gif'></a></center></span><span id=Layer64><center><table border=0 ><td align=center><font color=#3c3c3c face=arial size=2><font size=2 face=arial color=#3e80d7><b> 图8-1</span><span id=Layer65> </b></font>浏览器与非浏览器的客户端能更透过COM runtime存取COM物件。</span>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -