.NET框架与COM

原创 2007年09月28日 09:30:00

背景和历史

可复用软件不是一个新概念。八年来,人们一直在使用各种形式的组件对象模型(COM)。事实证明,它是最为成功的可复用软件模型。COM引进了“组件”的概念——它是可复用的代码块,可以将多个独立函数的功能进行组合,从而扩充成诸如Microsoft Word这样的应用程序。

大多数开发人员使用OLE时深刻体验了COM功能。OLE是基于COM形成的一组功能,使得用户能将一种文档嵌入到另一种文档中。这个功能本身似乎不太引人入胜,但它的作用却不同凡响:当用户将一个Excel文档粘贴到Word文档中后,单击嵌入的Excel文档时,OLE将会把Word的工具栏和菜单转换成Excel的工具栏和菜单。

从开发人员的角度看,COM通过引进几个明确定义的接口(诸如iUnknown)便可提供代码复用功能,开发期工具可通过这些接口来查询一个组件的功能,并能把这些功能添加到工具中。这就像Visual Basic®开发系统工具箱中的控件能够被拖到某个窗体中一样。实际上,每个控件都代表上百行甚至上千行的代码,可以容易地封装在“黑匣子”中,开发人员只需直接调用其功能即可。

开发人员在使用COM时感到不便的一个问题是,他们必须编写附加代码来将业务逻辑程序转换成可复用的组件,同时还必须实现许多接口才能进行这种转换。最重要的是,COM要求开发人员必须手动处理复杂问题,比如:清空不再使用的组件曾占用的内存、计算组件的使用次数、建立或撤消线程和进程以及处理版本控制问题等。

有人可能认为,让开发人员亲自执行这类工作的主意非常好,但这也有几个弊端。首先,要开发人员一一执行上述所有工作非常困难,往往容易出错:导致应用程序错误、系统崩溃以及可怕的“DLL Hell”。另外,严格地写出所有这种附加代码,会降低开发人员的工作效率,导致延期上市。

这对使用Visual C++®开发系统的开发人员来说,尤其如此。而对使用Visual Basic的开发人员来说,这种情况不是很严重。Visual Basic抽象并简化了COM的许多概念,是全世界最具生产力、最流行的开发环境,但它的局限性在于:为了实现这种高生产力而不得不向开发人员屏蔽了COM的一些功能。

微软在2000年的专业开发人员大会(PDC)上引进的.NET框架,能自动在软件编写过程中进行“智能拼接”,使得开发人员可以集中精力编写业务逻辑,而不必编写COM基本结构。

什么是.NET框架?

.NET框架是一个多语言组件开发和执行环境,它由以下三个主要部分组成:

 

公共语言运行时。此名称不能准确反映它的全部功能。实际上,公共语言运行时在组件的开发及运行过程中,都扮演着非常重要的角色。在组件运行过程中,运行时负责管理内存分配、启动或删除线程和进程、实施安全性策略、同时满足当前组件对其它组件的需求。在开发阶段,运行时的作用有些变化:与现今的COM相比,运行时的自动化程度大为提高(比如可自动执行内存管理),因而开发人员的工作变得非常轻松。尤其是,映射功能将锐减开发人员将业务逻辑程序转化成可复用组件的代码编写量。对编程语言而言,运行时这个概念并不新奇:实际上每种编程语言都有自己的运行时。Visual Basic开发系统具有最为明显的运行时(名为VBRUN),Visual C++®跟Visual FoxPro®、Jscript®、SmallTalk、Perl、Python和Java一样有一个运行时,即MSVCRT。.NET框架的关键作用在于,它提供了一个跨编程语言的统一编程环境,这也是它能独树一帜的根本原因。 统一的编程类。.NET框架为开发人员提供了一个统一、面向对象、层次化、可扩展的类库集(API)。现今,C++开发人员使用的是Microsoft基类库,Java开发人员使用的是Windows®基类库,而Visual Basic用户使用的又是Visual Basic API集。只是简单地一用,.NET框架就统一了微软当前的各种不同类框架。这样,开发人员无需学习多种框架就能顺利编程。远不止于此的是,通过创建跨编程语言的公共API集,.NET框架可实现跨语言继承性、错误处理功能和调试功能。实际上,从JScript到C++的所有编程语言,都是相互等同的,开发人员可以自由选择理想的编程语言。 活动服务器页面(ASP+)。ASP+是使用.NET框架提供的编程类库构建而成的,它提供了Web应用程序模型,该模型由一组控件和一个基本结构组成。有了它,Web应用程序的构建变得非常容易。开发人员可以直接使用ASP+控件集,该控件集封装了公共的、用于超文本标识语言(HTML)用户界面的各种小器件(诸如文本框、下拉菜单等等)。实际上,这些控件运行在Web服务器上,它们将用户界面转换成HTML格式后再发送给浏览器。在服务器上,控件负责将面向对象的编程模型提供给Web开发人员,这种编程模型能提供面向对象编程技术的丰富功能。ASP+还提供一些基本结构服务(诸如会话状态管理和进程重启服务),这些服务大大减少了开发人员要编写的代码量,并使应用程序的可靠性得到大幅度提高。ASP+还允许开发人员将软件作为一项服务来提供。通过使用ASP+ Web服务功能,ASP+开发人员只需进行简单的业务逻辑编程,而由ASP+基本结构负责通过简单对象访问协议(SOAP)来提供服务。

COM的关系

.NET框架的一个主要目的是使COM开发变得更加容易。COM开发过程中最难的一件事是处理COM基本结构。因此,为了简化COM开发,.NET框架实际上已自动处理了所有在开发人员看来是与“COM”紧密相关的任务,包括引用计算、接口描述以及注册。

必须认识到,这并不意味着.NET框架组件不是COM组件。事实上,使用Visual Studio 6.0的COM开发人员可以调用.NET框架组件,并且在他们看来,后者更像是拥有iUnknown数据的COM组件。相反,使用Visual Studio.NET的.NET框架开发人员则将COM组件视作.NET框架组件。

为了避免引起误解,这里需对这种关系加以特别说明:COM开发人员必须手动去做大多数.NET框架开发人员可以在运行时自动执行的事情。例如,必须手写COM组件的安全性模块,且无法自动管理模块占用的内存,而在安装COM组件时,注册条目必须放进Windows注册表中。对.NET框架而言,运行时实现了这些功能的自动化。例如,组件本身是自我描述型的,因而无需注册到Windows注册表中便能安装。

COM+的关系

当把COM与Microsoft事务服务器(MTS)和分布式COM(DCOM)结合在一起时,就变成了COM+。COM+提供了一组面向中间层的服务。特别是COM+提供了进程管理功能和数据库与对象连接池处理功能。在将来的版本中,它还将提供一种称为分区的功能——专门为应用程序服务提供商设计的更强大的进程隔离功能。

COM+服务主要面向中间层应用程序开发,并主要为大型分布式应用程序提供可靠性和可扩展性。这些服务是对.NET框架所提供服务的补充;通过.NET框架类,可以直接访问这些服务。

 

.NET框架与COM

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

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
  • 746

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
  • 6194

.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
  • 655

组件与.NET互操作

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

.NET平台常用的框架整理

从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继...
  • moonpure
  • moonpure
  • 2016年07月28日 15:57
  • 8810

(收藏).NET下的一些AOP框架介绍

原帖:http://www.tech-q.cn/redirect.php?tid=2096&goto=lastpost   AOP引 擎 SetPointSetPoint是一款.NET框 架下的全功 ...
  • u011387207
  • u011387207
  • 2013年07月24日 11:02
  • 2919
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET框架与COM
举报原因:
原因补充:

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