WCF分布式开发必备知识(3):Enterpise Services2011-02-26 博客园 Frank Xu Lei今天继续我们<WCF分布式开发必备知识>系列文章第3节,通过前两节的学习,我们已经掌握了MSMQ和.Net Remoting的概念和开发过程.今天我们来学习.Net分布式开发的另外一个技术:Enterpise Services.本节的基本结构是1.EnterpiseServices和COM+的基本概念.2.Enterpise Services中重要的类及特性3.Enterpise Services实现COM+事务的编码部署测试过程.最后是总结.那么现在我们就开始今天的学习,首先介绍的是:一.基本概念1.什么是COM+COM+的底层结构仍然以COM为基础,它不仅具备了COM的易于用户定制可重用简化开发的优点,同时又避免了COM实现方面的一些不足.把COM、DCOM和MTS的编程模型结合起来,它通过操作系统的各种支持,使组件对象模型建立在应用层上,继承了它们的绝大多数特性,增加了新的功能。 COM+的几个主要特性: 比如队列服务、负载平衡、内存数据库、事件服务等。它更加注重于分布式网络应用的设计和实现(参考msdn)。 2.什么是Enterpise ServicesEnterpise Services是微软应用程序服务器技术的别称..Net Enterpise Services提供了可以在.Net 组件中使用的COM+服务.因为它也是基于以前的COM+技术,在.NET平台上开发.NET组件,使用Enterpise Services可以将.NET组件并进行封装为COM对象,这样.NET组件就可以使用COM+服务了..NET做为新一代的开发平台,实现了COM组件相互之间的调用,继承了向前兼容的优良传统.同样COM+可以调用.Net 组件,会给COM+服务带来一些扩展.二.Enterpise Services中重要的类及特性Enterpise Servicesg工作在三层架构中的业务逻辑层或者数据访问层.由于基于COM+技术,所以它也可以通过Micro Application Center Server实现负载均衡.下面我们来介绍一下Enterpise Services里几个重要的概念.(1)上下文(context又翻译为环境):所有的COM+服务都是通过上下文(context又翻译为环境)实现的,上下文是进程里提供给对象运行时服务的空间.如果一个对象调用另外一个上下文里的对象,这个方法调用会被代理截取,COM运行时就可以利用代理来预处理或者迟处理请求并执行相关的服务代码.过程如图1

图1COM+服务与上下文(2)自动事务处理(automatic transaction):Enterpise Services里最常用的特性就是自动事务处理,这个一般在类的星星[Transaction]使用这个特性,就不需要再编写复杂的代码来显示执行事务准备工作,如对象的传递等,设置这个属性后,上下文环境会在后台进行设置.具体的设置在TransactionOption类的属性里选择.Required表示共享一个事务,必要的时候创建一个新事务.(3)对象池(Obejct pooling):这个属性可以设置是需要对象池和对象池的大小.主要是考虑到对象的创建和销毁会占用更多的资源.使用对象池会事先创建对象,客户的请求到来就直接到对象池里查找需要的对象,直接响应请求,可以提高服务的性能,节约时间.(4)ServicedComponent:是所有使用COM+服务类的基类.ServicedComponent继承自ContextBoundObject类.ContextBoundObject继承自MarshalByRefObject.这个类在上一节的.Net Remoting介绍过,使支持remoting的程序可以跨程序域边界的访问对象.另外还有分布式事务处理的等概念,Enterpise Services里是使用DTC来实现的.