当COM遇见.NET

原创 2003年05月01日 11:27:00

当COM遇见.NET

荣耀  2002

    技术进步是无法遏止的趋势,新老交替更是自然规律。随着新技术的来临,老技术即便不完全退出历史舞台,也将失去曾经拥有的主导地位。作为Windows平台上主流组件技术COM,面对.NET,命运也是如此。

    对于不同的开发人员来说,COM意味的东西也不一样。有些人因为领域所限,很少进行COM开发,而大多数开发人员和COM打了那么多的交道,一下子从COM转移到.NET,并不会是多么快速和自然。在新老技术转换过程中,阻力往往并不是来自于技术本身,而是技术的使用者。

    C语言诞生之际,遭到来自ASM(汇编语言)程序员的重重阻力,但随着C编译器质量的改善,计算机硬件的飞速发展,C语言易用的优点就逐渐凸显出来,结果,C程序员队伍不断壮大。尽管在某些低阶程序设计领域,仍然活跃着一批ASM程序员,但相对于中、高阶主流语言的用户来说,这个比例是显而易见的小。同样,C++之相对于C、Java之对于C++都有过类似的历史。

    今天,在.NET发布的短时间内,开发人员肯定不会立刻放弃Win32 API和COM,也不会将所有代码都移植到.NET上,但在硬件环境和业务需求背景的推动下,在微软的不遗余力的推行下,以及在这个平台自身优点的吸引下,未来几年内,绝大多数Windows开发人员将会把绝大多数精力投入.NET。

    COM是一种跨语言操作的二进制标准,语言互操作的魔法通过接口完成,从某种意义上说,COM就是接口。.NET达到了同样的目标,但实现方式不同。.NET提供了通用语言运行时,而后者则实现了通用类型系统。每一种.NET语言都知道如何将自己的对象布局展示给其它语言,同时也知道如何使用和扩展用其它语言编写的对象。

    但这并不意味着在.NET中不存在接口。实际上,.NET基类库提供了大量的接口(比如ICloneable)。在CLR中,对象引用既可以基于接口,也可以基于类。现在,你有多种程序设计风格选择,你可以进行传统的基于类的面向对象开发,也可以进行基于接口的设计开发,甚至可以混用两种方式。

    COM并不单单是IUnknown和API,除了提供接口外,COM还提供了服务。.NET除了提供接口、对象和CLR外,同样提供了完善友好的服务。.NET克服了COM的缺点,提供并增强了COM的所有优点。可以说,.NET是组件技术的又一个进步,它是比COM更友好的企业模型。因此,假如将COM视作一种编程模型而不是技术细节的话,.NET就更象是对COM的进化,而不是一场取而代之的革命。

    你现在应该停止所有COM开发吗?不是。只要你愿意,你仍然可以创建COM组件,.NET提供的COM互操作能力可以保证你在COM上的投资会得到保护。你不但可以从.NET应用中使用COM组件,也可以在COM应用中使用.NET组件。此外,CLR并没有重新实现任何COM+功能,至少在第一版里是这样。你在.NET中使用的COM+服务,和你在pre.NET时代使用的COM+服务,本质上,没什么两样。

    即便在.NET时代,某些领域的软件开发仍然会采用COM而不是.NET。尽管.NET的CLR对于很多类型的应用来说都是一个了不起的进步,但对于某些应用(比如系统级软件)来说,它未必是最佳选择,这些软件仍将使用COM技术并采用C++这样的语言进行开发。

    在今后几年里,作为一种编程模型,作为一种开发基础设施,作为一种和现存代码互操作的方式,COM仍将被继续使用。但对于使用.NET从头创建的新应用来说,通常不再需要COM。因此,COM虽然仍然重要,但它绝对不会象它曾经那样的重要,COM的应用领域将会不断缩减。越来越多的开发人员,将会跳到.NET这个“沙箱(sandbox)”之中。

-完-

C#开发COM组件

原文:http://blog.csdn.net/soudog/article/details/1593346 1.    概述        Microsoft在解决和以往的COM和SDK开发...
  • jiftlixu
  • jiftlixu
  • 2016年03月09日 14:20
  • 3094

从OLE到COM,再到ActiveX,再到.NET

微软从OLE到COM,再到ActiveX,再到.NET的发展历史的简介
  • just0kk
  • just0kk
  • 2016年03月02日 21:31
  • 750

COM组件与.Net组件的比较

1、COM组件与.Net组件的比较        COM技术要早于.Net技术。COM定义了一个组件模型,在该模型中,组件可以使用不同的编程语言进行编写,其可以在本地进程中使用,也可以跨进程使用或...
  • Chinamming
  • Chinamming
  • 2013年11月21日 13:47
  • 3473

C#开发COM组件供其他开发环境或工具调用介绍

由于工作原因涉及到这一块的开发,由于之前并未接触过,所以本篇文章也是在参考了各种资料后,自己实现并通过通过测试之后所整理的备忘录以及一些个人观点。 希望对刚接触这类型开发的朋友有所帮助,若有不足...
  • xiunai78
  • xiunai78
  • 2013年09月10日 11:23
  • 6197

.Net之路(十四)com组件、OLEDB导入EXCEL

.NET com组件
  • chenfanglincfl
  • chenfanglincfl
  • 2014年06月13日 23:55
  • 1989

PB 调用.NET COM组件

今天需要作一下pb引用.net的外接程序类。反复测试都没有成功。看到这篇文章解决了我的问题。在此感谢。综合我的碰壁经验。需要注意以下两点。 1..net项目需要勾选生成 com组件。 2....
  • pengdayong77
  • pengdayong77
  • 2015年06月30日 12:29
  • 656

组件与.NET互操作

1、何谓组件技术? 组件技术就是利用某种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细节进行了封装,同时对各种业务逻辑规则进行了实现,用于处理用户的内部操作细节,甚至于将安全机制和事...
  • bigpudding24
  • bigpudding24
  • 2015年10月26日 13:10
  • 587

.NET框架与COM

.NET框架与COM 可复用软件不是一个新概念。八年来,人们一直在使用各种形式的组件对象模型(COM)。事实证明,它是最为成功的可复用软件模型。COM引进了“组件”的概念——它是可复用的代码块,可以...
  • u014739778
  • u014739778
  • 2014年04月30日 08:05
  • 245

.Net调用Office Com组件的原理及问题检索com类工厂组件检索 COM 类工厂中 CLSID 为 {XXX} 的组件失败

.net调用office组件进行Excel、Word、ppt的一些操作,需要做一下操作: 1、正确全面的安装office 2、DCOM配置权限(64位系统要添加32位组件【mmc -32】...
  • DonetRen
  • DonetRen
  • 2017年12月09日 09:58
  • 168

连接COM与.NET的桥梁(三)——COM服务器的COM Interop方式

本节部分内容要求读者熟悉COM的消息调用原理,原理请参见杨老师的 专栏文章。...
  • JasonLiao909
  • JasonLiao909
  • 2016年01月28日 21:25
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:当COM遇见.NET
举报原因:
原因补充:

(最多只允许输入30个字)