NET支持COM吗?
COM+和MTS在NET上如何存在?
NET组件和COM组件有什么区别?
COM+在NET中依然存在如果应用程序确实需要使用COM+和MTS的功能特性那么可以选择合适的技术与NET组件协同工作实际上组件是任何类型解决方案的一部分不管是分布式解决方案还是非分布式组件在NET环境中非常类似一个COM组件它们都是DLL包含一个或多个类能够被其他应用程序实例化两者主要的不同点在于它们的实现方法这里我们不去详细讨论技术细节
在应用程序中考虑使用什么样的组件有多种选择使用COM+还是MTSCOM+和MTS都能够与COM组件协同工作因此当创建一个组件时该组件必须符合COM的二进制标准而且需要在使用之前向注册表注册
NET Framework通过COM Interop(COM互操作)技术支持COM+和MTS一个传统的COM应用程序能够调用一个NET组件同时NET组件(在NET中称为NET Assembly)也能够调用一个COM组件这一非常强大的双向互操作特性使你可以在应用程序中混合使用两类技术
COM+与MTS是与COM组件协同工作的当你放置一个NET组件到到一个MTS包或者一个COM+应用程序中该组件仍然能够以同样的方式被一个NET应用程序调用此时你不会意识到COM+和MTS的存在
下面我们来看一看在使用COM Interop时的性能开销NET和COM使用不同的执行机制(NET使用通用语言运行时Common Language Runtime而COM则不是)NET组件和COM组件在不同的标准上实现(NET组件使用通用类型标准而COM使用二进制标准)两者之间的互相调用会增加一些性能开销事实上每执行一次互操作调用大约花费到条CPU指令当你调用一个存在于COM+中的类方法时每次调用都会出现这些性能方面的开销
如果一定要使用COM+和MTS的功能特性请把组件存放于COM+和MTS中并确认你需要所有功能特性如果组件只在一个数据库中执行事务处理而且一直都在单个数据库环境中工作那么不需要在使用COM+来完成事务管理仅仅使用ADONET就可以了反之如果需要多个数据库间的对象池和事务处理支持那么应用程序就需要COM+和MTS