`

将调用密集型的 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是一种流行的...

    非托管代码访问托管代码

    本文将详细介绍如何使非托管代码调用托管代码。 #### 原理 非托管代码访问托管代码主要是通过.NET框架提供的CLR服务接口来实现。具体来说,通过`ICLRRuntimeHost`接口来启动CLR环境,并执行托管代码。在本例中,...

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

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

    Unity_Xlua_lua代码调用UnityUI组件代码

    Unity_Xlua_lua代码调用UnityUI组件代码.

    非托管代码回调方法的实现

    非托管代码回调方法的实现是将托管代码与非托管代码(如C++或原生DLL)集成的关键技术。在.NET框架中,托管代码是由CLR(Common Language Runtime)管理的,而非托管代码则不受其控制。当需要从非托管代码调用托管...

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

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

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

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

    C#与非托管代码交互操作

    然而,现实的软件开发环境往往涉及到多种技术的混合使用,这包括使用C#和其他非托管代码(如C++、COM组件或者DLL)进行交互。"C#与非托管代码交互操作"这个主题就是探讨如何在C#应用中调用和管理非托管代码资源。 1...

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

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

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

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

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

    解决方法很简单,将缺少的.shx和.dbf文件移动到原先的目录下,然后用一开始的程序读取,程序将会运行通过,没有报错。 在这里,我们学习了COM组件的调用、HRESULT E_FAIL的错误代码、Shapefile文件格式的组成部分和...

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

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

    C#调用C++ DLL 托管

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

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

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

    C#调用java直接调用无需生成.net组件

    本主题聚焦于"C#调用java",探讨如何在C#应用中直接调用Java代码,而无需通过生成.NET组件来实现这一目标。这样的做法能带来更高的稳定性和速度。 首先,我们需要理解的是,C#和Java属于两种不同的编程语言,它们...

    java操纵com组件–java调用C#写的DLL文件

    Java 操纵 COM 组件并调用 C# 编写的 DLL 文件是一种跨语言交互的技术实现。在本文中,我们将深入探讨这一技术,并提供一个完整的示例,包括源代码、DLL 文件以及必要的 JAR 包和工具。我们使用的是一种名为 Jacob ...

    李维《Dephi.NET托管与非托管代码》

    P/Invoke允许.NET应用程序调用非托管DLL中的函数,而COM Interop则使得.NET代码能够与旧版的COM组件无缝协作。 李维在书中详细讲解了这两种技术的使用方法和注意事项,包括接口定义、数据类型转换、错误处理等方面...

    托管平台与非托管的互操作

    【托管平台与非托管的互操作】是指在编程中,如何让使用托管代码(如C#)的应用程序与非托管代码(如C++)进行通信和数据交换。COM(Component Object Model)组件是这种互操作性的一个关键工具,因为它们可以被不同...

Global site tag (gtag.js) - Google Analytics