我们公司严重依赖COM+组件来集中DAL代码,并利用COM+处理事务和连接池的能力。当我们开始使用COM+时,它只是使用VB6 DLL,并且总是经过后期绑定,这样我们就可以利用DLL托管在不同服务器上的优势。
当我们在2005年开始迁移到.NET时,我们将DAL功能移植到.NET,并继续使用COM+和后期绑定来承载组件。我们将实例化这样的对象:
objBalLauncher = CreateObject("NETBLL.Launcher", "\\" & strCOMPlusServerName)
我注意到CreateObject
似乎是用于ActiveX COM组件的,因此我想到了两件事:
CreateObject()
从.NET代码中延迟绑定到程序集有成本吗?这是否迫使您的代码跨越托管/非托管屏障与DLL通信?注意:虽然我会对COM+的替代方案感兴趣(我确信到现在为止已经有了),但我最感兴趣的是在COM+中使用托管DLL所花费的费用。
发布于 2010-11-04 10:22:17
托管.NET组件作为COM+对象承载确实需要将COM+调用从非托管COM+主机封送到COM对象的managend .NET实现,因此这是一些开销。
但是,如果您正在远程访问对象,那么标准COM编组和相关RPC的成本可能会超过COM互操作开销,因此它甚至可能不会对您的等式产生多大影响。当然,COM对象所做的实际工作、访问数据库、在分布式事务中登记等可能会降低互操作开销。
但是,当然,在一天结束时,您需要分析并确定您潜在的瓶颈所在。不过,我怀疑COM互操作是否会成为一个主要问题。
https://stackoverflow.com/questions/4099815
复制