当前位置:编程学习 > C#/ASP.NET >>

从Windows DNA到.NET(2)

答案:     二、微软组件技术的演变--从COM到DCOM和MTS,直到COM+
  
  
  自从80年代面向对象的思想出现以来,从面向对象的程序设计语言到面向对象的程序设计方法,面向对象的思想迅速发展,渗透到计算机科学的每一个领域中来。在过去的10年中,对象技术的发展路径是从DDE(动态数据交换)、OLE(对象链接和镶入)、COM(组件对象模型)和ActiveX。在这些技术的发展过程中,始终遵循着一个思想:复用,使应用程序开发的复杂性降低。
  
  但是Internet/Intranet的飞速发展对应用软件提出了更高的要求,使得对象这个概念有些“小”,已经不适合Internet/Intranet下的分布式软件模型,于是组件化程序设计的思想得到了迅速发展。按照组件化程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行在同一台机器上,也可以运行在不同机器上。大家可以想想,为了使这些跨越不同机器、不同操作系统的组件能够相互通信,这些组件必须遵循一个统一的标准,为此,微软提出了COM标准,同时也给出了这些组件相互协作的环境。COM定义了组件和它们的客户(可以是其它组件)之间相互作用的方式,它可以使组件对象和客户程序不需要经过任何中介组件就能以一种统一的方式相互通信。而且,微软把COM技术用在了Windows系统的各个层次上。从操作系统级的COM对象一直到应用级的COM对象。
  
  对于同一台机器上的COM对象,它具有很好的进程透明性,即COM对象和客户程序可以在同一个进程中,也可以在不同的进程中,但COM对象和客户程序不用考虑具体的通信细节,如系统关于进程间通信的一些规定,只要你遵守了COM标准,你就可以按照一般的函数调用方式来完成调用。但是对于不同机器、不同网络的COM对象,它们如何实现通信呢?我们需要手工来写一些RPC(远程过程调用)之类的东西来完成吗?对此,微软发展了COM,使COM的进程透明性拓展为位置透明性,形成分布式组件对象模型,成为DCOM。DCOM使用了Object RPC协议作为底层的通信协议。DCOM是COM的无缝扩展,我们可以把它理解为COM和网络的结合。有了DCOM,我们可以不用理会那些复杂的底层网络协议的细节,DCOM为我们屏蔽了这些,我们仍然可以向以前一样,传递参数如同调用函数一样调用其它机器上的DCOM组件。DCOM除了拥有COM的语言无关性、可重用性好等有点以外,还提供了位置无关性、安全性好等新优点。DCOM可以作为分布式多层应用的基本架构,我们可以把业务逻辑层放在DCOM中实现,客户端只负责输入数据并把服务器的响应结果会传给客户端。但是DCOM由于牵涉到网络和安全性,配置起来比较复杂,令人头痛,这在部分程度上影响了它的使用。我们可以简单的说,DCOM提供了一种访问网络上其它机器的COM对象的手段。
  
  微软提供了一个什么样的环境来运行COM、DCOM组件呢?MTS(Microsoft Transaction Server)就是这样一个COM/DCOM对象的Container执行环境。MTS是Microsoft在Windows平台的中介软件之一,它的主要功能是让Windows程序员能够开发以组件为导向的分布式应用系统,并且具备在同质和异质数据库之间对修改的数据进行两阶段提交的功能。由于MTS提供了事务管理、各种Pooling功能以及对象及时激活等功能,执行在其中的COM/DCOM组件将不用考虑这些事情,而只是专门执行企业逻辑代码。关于事务管理、安全机制、各种Pooling功能等这些底层的系统服务将由MTS自动提供,程序员不用再在COM/DCOM组件中加入这些代码。这些对于开发一个安全稳固的、具备扩展性的多层分布式应用系统至关重要。微软提供的这种MTS架构将会半强迫的使程序员开发以组件为导向的分布式应用系统。执行在MTS中的组件我们称之为MTS组件,MTS组件事实上还是COM/DCOM组件,不过它与一般的COM/DCOM组件在建立方式和生命周期、效率等方面都有所区别。MTS组件的另外重要的一点就是它有执行属性,执行属性这个概念就是把组件的一些执行行为独立出来,让组件的执行环境即MTS来管理。这样做的一个好处是一个组件可以在不同的应用程序中搭配不同的执行行为属性来完成特定应用系统的要求,这是微软的一个重要战略,从MTS开始,持续到COM+,在将来的产品和版本中也将持续下去。声明性开发的主要目的是简化开发过程和提高产品质量。声明越多,开发者的应用程序就越简单,应用程序中开发者可能编入的错误就越少。
  
  对照于我们前面提到的图,可以看到,在中间层,IIS负责应用逻辑层WEB页面的管理,MTS负责应用逻辑层COM 组件的管理。MTS在多线程支持下工作,实现对COM组件的分布式连接管理、线程池自动管理及高性能事务处理的监视。MTS的最重要的目的之一就是帮助开发者节约资源。应用程序使用组件可以共享与数据库的连接,使数据库不再和每个活动客户保持一一连接,而是若干个客户通过共享组件和数据库连接,降低了数据库的负担,提高了系统性能。此外,客户通过组件访问数据库时,MTS的安全管理机制可以按权限将特定组件授给不同的用户组,使商务活动的安全性和系统结构有机地结合在一起。
  
   在Windows 2000之后,微软终于推出了COM+,它标志着微软的组件技术达到一个新的高度。在Windows 2000中,COM +中集成了MTS。过去称为MTS的组件,现在称为已配置的COM +组件(configured COM+ component)。COM+的推出有机的统一了COM/DCOM/MTS的编程模型,形成一个功能强大的组件体系结构,并且把DCOM/MTS的各种优势以更为便捷的方式提供给用户。我们可以把COM+认为是COM/DCOM/MTS的统一体。COM+继承了它们所有的优点,并且更容易开发、发布、维护。微软的开发人员对于什么是COM+做个3个解释:一、COM+的基础是COM;二、COM+在此基础之上增强了一些通用服务;三、努力使COM+变成一种易于开发、易于发布、易于维护的模型。同时,COM+的推出也有对抗SUN-IBM-Oracle的EJB的意味。COM+倡导了一种完全基于构件开发(CBD)的理念。在COM+的模型里,组件的地位得到空前的提高,它更强调应用层面上的组件,通过操作系统(COM+环境)的支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统。COM+技术的一个核心理念就是操作体统本身提供完成许多面向企业开发者的通用基本模块(如线程、对象Pooling、事务服务管理、事件服务管理等),让系统设计人员把精力集中在企业本身的业务逻辑上。如果读者想了解COM+的这些具体机制如事务管理机制、安全机制等可以参看。从下面这张图中可以看出COM+与MTS、COM/DCOM的关系:
  
  可以看到COM+不仅继承了COM、DCOM、MTS的许多特性,同时还新增了一些服务,如负载均衡、内存数据库、事件模型、对象库、队列组件、组件的管理、目录信息等。COM+新增的服务为COM+应用提供了很强的功能,建立在COM+基础上的应用程序可以直接利用这些服务而获得良好的企业应用特性。COM+是Windows DNA结构的核心。
  

上一个:从Windows DNA到.NET(3)
下一个:Chapter 2 Your First VB.NET(2)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,