`
leonardleonard
  • 浏览: 811931 次
社区版块
存档分类
最新评论

将调用密集型的 COM 组件迁移到托管代码

阅读更多
.NET Framework 提供了一个简单的方法与传统的 COM 组件进行交互。其优点是可以在保留现有投资的同时利用新的平台。但是在某些情况下,保留旧组件的性能开销使得将组件迁移到托管代码是值得的。每一情况都是不一样的,决定是否需要迁移组件的最好方法是对 Web 站点运行性能测量。建议您研究一下如何将需要大量调用以进行交互的任何 COM 组件迁移到托管代码。
  许多情况下不可能将旧式组件迁移到托管代码,特别是在最初迁移 Web 应用程序时。在这种情况下,最大的性能障碍之一是将数据从非托管环境封送到托管环境。因此,在交互操作中,请在任何一端执行尽可能多的任务,然后进行一个大调用而不是一系列小调用。例如,公共语言运行库中的所有字符串都是 Unicode 的,所以应在调用托管代码之前将组件中的所有字符串转换成 Unicode 格式。

  另外,一处理完任何 COM 对象或本机资源就释放它们。这样,其他请求就能够使用它们,并且最大限度地减少了因稍后请求垃圾回收器释放它们所引起的性能问题。

分享到:
评论

相关推荐

    WPF调用COM组件

    标题“WPF调用COM组件”暗示了我们的重点在于理解如何在WPF应用中使用由C++编写的COM组件。WPF是.NET Framework的一部分,提供了一种创建具有丰富图形界面的桌面应用程序的方法。它利用XAML语言来描述用户界面,提供...

    PB 调用.NET COM组件

    在.NET Framework中,可以通过创建COM互操作组件(也称为托管COM),使得非.NET环境如PB这样的应用程序可以调用.NET类库的功能。以下是关于这个主题的详细解释: 一、PowerBuilder简介 PowerBuilder是一种流行的...

    CLR 完全介绍--托管代码与非托管代码之间的封送处理

    托管代码和非托管代码之间的交互是通过 CLR 实现的,CLR 负责将托管代码和非托管代码之间的数据交换。 封送处理的方向属性 在封送处理中,方向属性扮演着非常重要的角色。方向属性是指 InAttribute 和 ...

    c#调用 非托管Dll组件 完整示例

    本文将详细介绍如何在C#中调用非托管DLL,以及如何使用C++生成非托管组件。 首先,理解“托管”与“非托管”的概念至关重要。在.NET中,“托管代码”指的是由.NET运行时管理的代码,它具有垃圾回收、类型安全等特性...

    pb调用C#中COM组件实例(源码+运行EXE)

    标题中的“pb调用C#中COM组件实例”是指在PowerBuilder(PB)环境中通过COM(Component Object Model)接口调用由C#语言编写的组件。这种方法允许不同编程语言之间进行互操作,使得PB能够利用C#的强大功能,如.NET ...

    c++调用c#的com组件

    在IT行业中,跨语言通信是...这个项目可能包含了创建和调用C# COM组件的示例代码,可以帮助你更好地理解和应用这个技术。通过深入学习和实践,你可以掌握C++调用C# COM组件的核心知识,提升跨平台、跨语言编程的能力。

    Unity_Xlua_lua代码调用UnityUI组件代码

    Unity_Xlua_lua代码调用UnityUI组件代码.

    在javascript函数中调用com组件的属性和方法

    本文将介绍如何在JavaScript函数中调用COM组件的属性和方法,并提供一个实例演示如何使用COM组件来实现时钟示例。 在JavaScript中调用COM组件的属性和方法需要使用ActiveXObject对象来创建COM组件的实例。例如,在...

    非托管C++调用C#的dll

    通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA C#提供了一种非托管C++直接调用的方法,该方法可以...

    c++如何采用com组件的方法直接调用动态库

    使用 #import 导入类型库可以将 COM 组件的接口定义导入到 C++ 代码中。例如: ```cpp #import "D:\vomont\platform\bin\ZKDSDev\zkemkeeper.dll" no_namespace ``` 在头文件中引用该语句,然后编译生成一个 ...

    PHP 调用 Delphi 开发的 COM 组件实例代码

    4. **调用COM组件**:在PHP代码中,你可以使用`com_load`函数加载注册的COM组件,然后通过实例化对象来调用其方法。以下是一个简单的示例: ```php $comObject = new COM("YourComComponent.ClassName") or die(...

    PB调用PB自己制作的COM组件

    2010.7.2 在QQ朋友菠菜/yun(1216297)的引导下接触到了PB制作COM组件应用。 1、文件夹A下用COM的向导制作了一个不可视的object,制作了最简单的函数,最后打包成dll文件。 2、利用regsvr32注册了这个dll。 3、...

    进程外com组件实现win764位软件调用32位库

    本文将详细介绍如何通过进程外COM组件在64位Windows 7系统中实现对32位库的调用。 首先,了解COM(Component Object Model)组件。COM是一种微软定义的二进制接口标准,允许不同语言编写的对象之间进行交互。COM...

    vc.net2005调用WebService(托管与非托管)

    在MFC中,你可以使用WinInet或WinHttp库来实现非托管Web服务调用,或者使用ATL(Active Template Library)创建COM组件,通过.NET互操作性来调用托管Web服务。 在Windows控制台程序中,我们可以更直接地利用.NET...

    c#调用非托管dll

    在上面的代码中,我们使用 DllImport 属性来指定包含外部方法的实现的 DLL 位置,并且在 Main 方法中调用非托管 DLL 中的入口点。 C# 调用非托管 DLL 需要使用 DllImport 属性来指定包含外部方法的实现的 DLL 位置...

    c#调用托管c++调用c++

    在本案例中,C#代码将通过C++/CLI(即托管C++)作为桥梁来调用非托管的C++代码。 **2. 托管C++(C++/CLI)** C++/CLI是C++的一个扩展,允许开发者编写既能与.NET Framework交互又能调用原生C++代码的程序。在托管...

    WPF中webBrowser控件与脚本交互(调用托管代码)

    在Windows Presentation Foundation (WPF)应用中,WebBrowser控件是一个强大的工具,它允许开发者将网页内容嵌入到桌面应用程序中。本示例探讨的是如何利用这个控件实现Web页面与WPF应用之间的交互,特别是从...

    c++调用C# COM 参数是结构体数组

    C++ 调用 C# COM 参数是结构体数组 ...C++ 调用 C# COM 参数是结构体数组需要涉及到多种技术,如 COM 组件、Marshal 类、结构体数组的传递等。只有正确地使用这些技术,我们才能实现复杂的编程任务。

    Arcgis 学习--COM 组件的调用返回了错误 HRESULT E_FAIL

    在使用ArcGIS进行地理信息系统的学习与开发时,我们不可避免地会接触到COM(Component Object Model)组件技术,它允许开发者在不同的编程语言和开发环境中创建和使用可重用的软件组件。然而,在COM组件的调用过程中...

    C#调用C++ DLL 托管

    本篇文章将深入探讨如何在C#中使用托管方式调用C++ DLL,实现简单的加减法操作。 首先,我们需要理解什么是托管代码和非托管代码。托管代码是指运行在.NET Framework的Common Language Runtime (CLR)之上的代码,它...

Global site tag (gtag.js) - Google Analytics