《深入理解COM+》
前言
COM是一项位于底层的有效技术。
1992年,Tony Williams 和Bob Atkinson定义了一个简单的结构,从而使Microsoft公司内部和外部的各种组织一次又一次的用它来处理各种各样的问题。
复合文档或者对象链接和嵌入?COM;脚本语言支持和自动化?COM;AciiveX控件和身份鉴定技术(Authentication)?COM;统一数据访问?COM;Microsoft事务服务系统(MTS)和Microsoft分布式事务协调器(MS DTS)?COM;Microsoft SNA服务器事务集成器?COM。
Microsoft Windows DNA?COM。
COM+1.0对COM具有非常重要的意义,它也为COM增加了许多新的、更为先进的特性。在设计的时候,已经充分考虑并增强了用户原先在COM、MTS和其他基于COM应用上的投资效益。
第一:由于COM+1.0集成了COM和MTS这两种原先相互分离的技术,所以它既是一个更好的COM,也是一个更好的MTS。环境、类属性、截取的概念已经被植入系统内部,所以各种功能强大的服务在实现的时候表现的更为独立,清晰。各种服务之间可以无缝的结合,增强了性能和可靠性。
第二:所有的服务比如事务、安全性、可管理性和代理进程等,不仅由于内部高级的截取结构而变得更好,而且他们的特征更为丰富,在深度和广度上都有所增强。那些已经使用这些服务的COM应用可以瞬间变的强大、更为灵活。
第三:COM+1.0新增加了一些基本的服务,比如用于非连接方式的队列组件、针对松散连接的发布-订阅事件的时间服务、用于高速事务一致数据缓存的内存数据(IMDB),以及用于建立可扩展应用集群系统的组件负载平衡和对象池机制。
“我们继续前进,让COM+帮助我们”!
译者前言
本书向读者展现了COM+的所有关键特性,尤为可贵的是,作者并不是简单的按照指导编程的模式介绍这些内容,而是从COM+的各项服务所蕴含的思想出发,深入剖析了这些服务的内在动机以及他们所提供的有效解决方案。
COM+并不是一个虚的体系结构,而是一个实实在在的产品,是一个进入了我们应用系统的基础平台。
COM+着眼于应用层,它的目标是通过一系列系统服务为企业应用提供通用的基础设施;而COM是一个组件对象模型,它为组件对象提供了基本的规范以及相应实现上的支持。
一、COM+基础结构
COM+其实是一个高级的COM运行环境,它预先提供了许多面向企业应用设计者的通用基础设施解决方案,特别是三层结构模型的中间业务层上的基础设施模块。如果您把COM+理解为“Microsoft 企业应用预置功能工具包”,那么你也就领会了COM+模型的本质。
事务服务:事务是保证分布式系统数据完整性的一种机制,特别是在通信失败或者机器故障的情况下。COM+事务服务为COM对象提供了一种用来创建、使用、表决事务结果的简单方法。
安全服务:从本质上讲,所有的企业应用都必须关心安全问题。他们必须保证只有授权的用户才能被允许执行重要的操作(authentication,authorization)。可以通过管理手段以及编写安全代码逻辑手段使用。
同步服务:分布式系统的设计人员必须要保护他们的组件程序的关键部分,以便允许多线程并发访问。可以通过管理手段以及编写同步代码逻辑手段使用。
队列组件:队列组件是指一种通信机制,它允许COM客户对COM对象的调用即时当对象所在的服务器并不能通过网络到达的时候也可以进行(recorder,player )。
事件服务:发布者(publisher)是指企业应用中提供信息变化情况的程序,比如股票价格的变化;订阅者(subscriber)是指企业应用中接受这些变化信息的程序。COM+事件服务为订阅者提供了一条简单的途径可以进行登记,以便接收来自发布者的变化通知;它也为发布者提供了简单的途径可以确定订阅者的位置并调用到这些订阅者。
内存数据库:内存数据库(IMDB,in-memory database)也是一种服务,它为中间层机器上的后台数据库提供了自动的内存缓存功能。极大的提高了速度。(不确定加入了W2K)。
负载平衡:COM+负载平衡服务提供了一种自动机制可以把对象的创建请求分布到一组服务器池中,从而把负载散开。(不确定加入了W2K)。
COM+别名:W2KVoC(windows 2000 version of COM)。活动目录(active service)。
COM+提供了企业范围内的COM应用所需要的各种预制服务。
犹太法典讲到一个很急躁的人来到著名犹太学者Hillel跟前,说:“趁我现在还有耐心的时候,请教我圣经律法吧。”Hillel想了想说:“你自己都不能保证有耐心去做的事情,就不要要求别人去做。静下心来,继续学习吧。”
二、COM+系统结构
首先从管理角度介绍COM+,COM+通过Windows MMC进行管理,在运行中输入dcomcnfg可以进行配置。COM+配置管理器以属性结构管理COM+应用:
1)COM+目录: 可以使用progID为“COMAdmin.COMAdminCatalog”的组件进行程序控制。
COMAdminCatalog:代表COM+目录数据库,是最高级对象,用户必须通过它获得COM+应用程序集合(COMAdminCatalogCollection)以及进行其他配置有关的工作。暴露了GetCollection()方法;
COMAdminCatalogCollection:当用户从COMAdminCatalog对象获得一个COMAdminCatalogObjects集合时使用,比如组件集合、应用程序集合。
COMAdminCatalogObjects:代表集合中的一个对象,比如组件、应用程序。
2)COM+应用程序:添加一个新应用程序,可以通过程序控制的方式,也可以通过COM+安装程序向导的方式。
激活类型:服务应用 or 库应用。
3)COM+组件:组件是业务逻辑的软件实现形式。我们首先编写业务逻辑,然后以COM的形式包装,然后继承COM+所提供的企业基础设施(安装COM+应用程序)。
截取器
代理进程:dllhost.exe
4)接口、方法、各级角色、组件永久以及临时订阅者。
COM+企业基础设施的体现:COM+环境
1) 环境:IObjectContext接口方法,通过GetObjectContext函数可以得到,该接口暴露了事务方法、安全方法。我们可以通过CoGetObejectContext函数或者通过向IObjectContext接口请求任何可以得到的环境对象。比如:IObjectContextInfo、IContextState、ISecurityCallContext接口。
2) 安全性:
鉴定(authentication ):CoInitializeSecurity、SSP(安全支持提供者)、鉴定级别。
授权(authorization):与角色(role)相关。
3)服务器进程身份:交互用户 or 指定用户。
4)线程套间:
CoInitializeEx函数:指定参数COINIT_APARTMENTTHREADED则创建并进入了一个单线程套间(single thread apartment,STA)。指定参数COINIT_MULTITHREADED则进入了一个多线程套间(multi thread apartment ,MTA)。
注册表项ThreadingModel:apartment(STA)、free(MTA)、both(either STA or MTA)。single or 无此注册项表示继承以前的情形。
标准套间(neutral apartment, NA or TNA):注册表项ThreadingModel可以设为neutral,则此对象总是创建于标准套间中。
同步:可以通过配置器配置。
COM+提供了企业应用共同的基础设施,只要你编写了业务逻辑,包装成COM组件的形式,你就可以将其安装到COM+环境中,使用它的基础设施。
三、COM+事务
涉及到企业应用,就会涉及到一些敏感数据,对这些数据的操作就要保持一致性,比如网上缴费业务,不能用户的帐户余额减少了,但是缴费项目的帐户没有增加,这就提出了事务这一概念。
事务的特征:
原子性(automicity):事务的所有操作作为一个整体要么全部成功、要么全部失败。
一致性(consistency):理解为合法性,即事务前后数据库要保持合法性,这边减了多少,那边相应的要增加多少。
隔离性(isolation):事务处理过程中,事务外部无法看到事务的状态,事务对外是不可见的。
持久性(durability):数据库文件的持久性、即使失败了,日志文件的持久性,持久性就是说存储在磁盘而不是ROM。
真实的事务处理:
分布式事务协调器(distributed transaction coordinator, DTC),事务中的每一个组件只是做它自己的事情,然后指示DTC它是否已经顺利的完成了任务。如果所有参与事务的操作都很顺利,则DTC会告诉它们把所有的变化保存起来,并且把变化公布出来,即“提交(commiting)”事务。如果其中任何一个对象拒绝变化,则DTC会丢弃这些变化并恢复到系统的原始状态,即“放弃(aborting)”事务。
COM+资源管理器(resource manager,RM),它是一个可以跨越COM+事务并管理持久系统状态的软件(如SQL Server 2000),RM知道当参与事务的对象改变它所管理的资源时,如何把资源的变化缓存起来。然后,如果事务被提交了,则RM知道如何把这些变化发不出去;如果事务被放弃了,则RM知道如何把这些变化丢弃掉。
COM+配置管理器(DCOMCNFG.EXE)可以对加入到COM+环境中的组件进行事务配置,可以配置事务支持的级别、事务隔离的级别、事务超时……。事务根据组件配置的事务支持级别传播事务。
IDL语言属性,比如TRANSACTION_REQUIRED等等。
通过IObectContext or IContextState接口提交或者丢弃事务。
ADO编程模型,connection对象方法(begintran、committran、rollbacktran)。
前言
COM是一项位于底层的有效技术。
1992年,Tony Williams 和Bob Atkinson定义了一个简单的结构,从而使Microsoft公司内部和外部的各种组织一次又一次的用它来处理各种各样的问题。
复合文档或者对象链接和嵌入?COM;脚本语言支持和自动化?COM;AciiveX控件和身份鉴定技术(Authentication)?COM;统一数据访问?COM;Microsoft事务服务系统(MTS)和Microsoft分布式事务协调器(MS DTS)?COM;Microsoft SNA服务器事务集成器?COM。
Microsoft Windows DNA?COM。
COM+1.0对COM具有非常重要的意义,它也为COM增加了许多新的、更为先进的特性。在设计的时候,已经充分考虑并增强了用户原先在COM、MTS和其他基于COM应用上的投资效益。
第一:由于COM+1.0集成了COM和MTS这两种原先相互分离的技术,所以它既是一个更好的COM,也是一个更好的MTS。环境、类属性、截取的概念已经被植入系统内部,所以各种功能强大的服务在实现的时候表现的更为独立,清晰。各种服务之间可以无缝的结合,增强了性能和可靠性。
第二:所有的服务比如事务、安全性、可管理性和代理进程等,不仅由于内部高级的截取结构而变得更好,而且他们的特征更为丰富,在深度和广度上都有所增强。那些已经使用这些服务的COM应用可以瞬间变的强大、更为灵活。
第三:COM+1.0新增加了一些基本的服务,比如用于非连接方式的队列组件、针对松散连接的发布-订阅事件的时间服务、用于高速事务一致数据缓存的内存数据(IMDB),以及用于建立可扩展应用集群系统的组件负载平衡和对象池机制。
“我们继续前进,让COM+帮助我们”!
译者前言
本书向读者展现了COM+的所有关键特性,尤为可贵的是,作者并不是简单的按照指导编程的模式介绍这些内容,而是从COM+的各项服务所蕴含的思想出发,深入剖析了这些服务的内在动机以及他们所提供的有效解决方案。
COM+并不是一个虚的体系结构,而是一个实实在在的产品,是一个进入了我们应用系统的基础平台。
COM+着眼于应用层,它的目标是通过一系列系统服务为企业应用提供通用的基础设施;而COM是一个组件对象模型,它为组件对象提供了基本的规范以及相应实现上的支持。
一、COM+基础结构
COM+其实是一个高级的COM运行环境,它预先提供了许多面向企业应用设计者的通用基础设施解决方案,特别是三层结构模型的中间业务层上的基础设施模块。如果您把COM+理解为“Microsoft 企业应用预置功能工具包”,那么你也就领会了COM+模型的本质。
事务服务:事务是保证分布式系统数据完整性的一种机制,特别是在通信失败或者机器故障的情况下。COM+事务服务为COM对象提供了一种用来创建、使用、表决事务结果的简单方法。
安全服务:从本质上讲,所有的企业应用都必须关心安全问题。他们必须保证只有授权的用户才能被允许执行重要的操作(authentication,authorization)。可以通过管理手段以及编写安全代码逻辑手段使用。
同步服务:分布式系统的设计人员必须要保护他们的组件程序的关键部分,以便允许多线程并发访问。可以通过管理手段以及编写同步代码逻辑手段使用。
队列组件:队列组件是指一种通信机制,它允许COM客户对COM对象的调用即时当对象所在的服务器并不能通过网络到达的时候也可以进行(recorder,player )。
事件服务:发布者(publisher)是指企业应用中提供信息变化情况的程序,比如股票价格的变化;订阅者(subscriber)是指企业应用中接受这些变化信息的程序。COM+事件服务为订阅者提供了一条简单的途径可以进行登记,以便接收来自发布者的变化通知;它也为发布者提供了简单的途径可以确定订阅者的位置并调用到这些订阅者。
内存数据库:内存数据库(IMDB,in-memory database)也是一种服务,它为中间层机器上的后台数据库提供了自动的内存缓存功能。极大的提高了速度。(不确定加入了W2K)。
负载平衡:COM+负载平衡服务提供了一种自动机制可以把对象的创建请求分布到一组服务器池中,从而把负载散开。(不确定加入了W2K)。
COM+别名:W2KVoC(windows 2000 version of COM)。活动目录(active service)。
COM+提供了企业范围内的COM应用所需要的各种预制服务。
犹太法典讲到一个很急躁的人来到著名犹太学者Hillel跟前,说:“趁我现在还有耐心的时候,请教我圣经律法吧。”Hillel想了想说:“你自己都不能保证有耐心去做的事情,就不要要求别人去做。静下心来,继续学习吧。”
二、COM+系统结构
首先从管理角度介绍COM+,COM+通过Windows MMC进行管理,在运行中输入dcomcnfg可以进行配置。COM+配置管理器以属性结构管理COM+应用:
1)COM+目录: 可以使用progID为“COMAdmin.COMAdminCatalog”的组件进行程序控制。
COMAdminCatalog:代表COM+目录数据库,是最高级对象,用户必须通过它获得COM+应用程序集合(COMAdminCatalogCollection)以及进行其他配置有关的工作。暴露了GetCollection()方法;
COMAdminCatalogCollection:当用户从COMAdminCatalog对象获得一个COMAdminCatalogObjects集合时使用,比如组件集合、应用程序集合。
COMAdminCatalogObjects:代表集合中的一个对象,比如组件、应用程序。
2)COM+应用程序:添加一个新应用程序,可以通过程序控制的方式,也可以通过COM+安装程序向导的方式。
激活类型:服务应用 or 库应用。
3)COM+组件:组件是业务逻辑的软件实现形式。我们首先编写业务逻辑,然后以COM的形式包装,然后继承COM+所提供的企业基础设施(安装COM+应用程序)。
截取器
代理进程:dllhost.exe
4)接口、方法、各级角色、组件永久以及临时订阅者。
COM+企业基础设施的体现:COM+环境
1) 环境:IObjectContext接口方法,通过GetObjectContext函数可以得到,该接口暴露了事务方法、安全方法。我们可以通过CoGetObejectContext函数或者通过向IObjectContext接口请求任何可以得到的环境对象。比如:IObjectContextInfo、IContextState、ISecurityCallContext接口。
2) 安全性:
鉴定(authentication ):CoInitializeSecurity、SSP(安全支持提供者)、鉴定级别。
授权(authorization):与角色(role)相关。
3)服务器进程身份:交互用户 or 指定用户。
4)线程套间:
CoInitializeEx函数:指定参数COINIT_APARTMENTTHREADED则创建并进入了一个单线程套间(single thread apartment,STA)。指定参数COINIT_MULTITHREADED则进入了一个多线程套间(multi thread apartment ,MTA)。
注册表项ThreadingModel:apartment(STA)、free(MTA)、both(either STA or MTA)。single or 无此注册项表示继承以前的情形。
标准套间(neutral apartment, NA or TNA):注册表项ThreadingModel可以设为neutral,则此对象总是创建于标准套间中。
同步:可以通过配置器配置。
COM+提供了企业应用共同的基础设施,只要你编写了业务逻辑,包装成COM组件的形式,你就可以将其安装到COM+环境中,使用它的基础设施。
三、COM+事务
涉及到企业应用,就会涉及到一些敏感数据,对这些数据的操作就要保持一致性,比如网上缴费业务,不能用户的帐户余额减少了,但是缴费项目的帐户没有增加,这就提出了事务这一概念。
事务的特征:
原子性(automicity):事务的所有操作作为一个整体要么全部成功、要么全部失败。
一致性(consistency):理解为合法性,即事务前后数据库要保持合法性,这边减了多少,那边相应的要增加多少。
隔离性(isolation):事务处理过程中,事务外部无法看到事务的状态,事务对外是不可见的。
持久性(durability):数据库文件的持久性、即使失败了,日志文件的持久性,持久性就是说存储在磁盘而不是ROM。
真实的事务处理:
分布式事务协调器(distributed transaction coordinator, DTC),事务中的每一个组件只是做它自己的事情,然后指示DTC它是否已经顺利的完成了任务。如果所有参与事务的操作都很顺利,则DTC会告诉它们把所有的变化保存起来,并且把变化公布出来,即“提交(commiting)”事务。如果其中任何一个对象拒绝变化,则DTC会丢弃这些变化并恢复到系统的原始状态,即“放弃(aborting)”事务。
COM+资源管理器(resource manager,RM),它是一个可以跨越COM+事务并管理持久系统状态的软件(如SQL Server 2000),RM知道当参与事务的对象改变它所管理的资源时,如何把资源的变化缓存起来。然后,如果事务被提交了,则RM知道如何把这些变化发不出去;如果事务被放弃了,则RM知道如何把这些变化丢弃掉。
COM+配置管理器(DCOMCNFG.EXE)可以对加入到COM+环境中的组件进行事务配置,可以配置事务支持的级别、事务隔离的级别、事务超时……。事务根据组件配置的事务支持级别传播事务。
IDL语言属性,比如TRANSACTION_REQUIRED等等。
通过IObectContext or IContextState接口提交或者丢弃事务。
ADO编程模型,connection对象方法(begintran、committran、rollbacktran)。