gpt4 book ai didi

c# - 在 COM 中使用托管 (.NET) 组件是否有成本?

转载 作者:行者123 更新时间:2023-11-30 15:46:49 25 4
gpt4 key购买 nike

我们公司严重依赖 COM+ 组件来集中我们的 DAL 代码并利用 COM+ 处理事务和连接池的能力。当我们开始使用 COM+ 时,它只是使用 VB6 DLL,并且总是通过后期绑定(bind),因此我们可以利用托管在不同服务器上的 DLL。

当我们在 2005 年开始转向 .NET 时,我们将 DAL 功能移植到 .NET 并继续使用 COM+ 和后期绑定(bind)来托管组件。我们将像这样实例化对象:

objBalLauncher = CreateObject("NETBLL.Launcher", "\\" & strCOMPlusServerName)

我注意到 CreateObject 似乎是针对 ActiveX COM 组件的,所以这让我想到了两件事:

  • 如果 COM+ 是为非托管组件设计的,那么将 COM+ 与托管 .NET DLL 一起使用是否会产生成本?
  • 使用 CreateObject() 从 .NET 代码中后期绑定(bind)到程序集是否有成本?这是否会强制您的代码跨越托管/非托管障碍以与 DLL 通信?

注意:虽然我有兴趣了解 COM+ 的替代方案(我确信现在已经可以使用),但我最感兴趣的是了解在 COM+ 中使用托管 DLL 会产生哪些费用。

最佳答案

将托管 .NET 组件作为 COM+ 对象托管确实需要将 COM+ 调用从非托管 COM+ 主机编码到 COM 对象的托管 .NET 实现,所以是的,这是一些开销。

但是,如果您正在远程访问您的对象,那么标准 COM 编码和相关 RPC 的成本可能会盖过 COM 互操作开销,因此它可能甚至不会在您的等式中考虑太多。当然,COM 对象完成的实际工作、访问数据库、登记分布式事务等可能使互操作开销相形见绌。

但是,当然,在一天结束时,您需要分析并确定您的潜在瓶颈在哪里。不过,我怀疑 COM 互操作将成为一个主要问题。

关于c# - 在 COM 中使用托管 (.NET) 组件是否有成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com