网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

.NET组件和COM组件之间的相互操作方法

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/02/25

鉴于大家对ASP.net十分关注,我们编辑小组在此为大家搜集整理了“.NET组件和COM组件之间的相互操作方法”一文,供大家参考学习!

    .NET技术是微软大力推广的下一代平台技术,自从.NET技术架构Beta2版本的正式发布,此项技术也逐渐走向成熟和稳定。按照微软的平台系统占有 率,我们不难想象得到,在未来的一两年内.NET技术必定会势如破竹一般的登上主流的技术平台,而一个新的技术平台得以快速发展的最重要的前提是:他不会 彻底的摒弃以前的技术,这一点对于.NET技术来说指的就是COM/COM+技术了。 

    一般来说,在IT技术界以及硬件产业,技术的更新换代速度非常得惊人,而惯例是所有的新技术都会遵循向下兼容的原则,但是.NET技术不仅仅做到了这一 点,.NET甚至实现了相互之间的各自调用,这一点是非常难能可贵的。也就是说,不但我们可以在.NET组件中调用COM组件,同时也可以在COM组件中 正常的调用.NET组件。这点带来的好处是显而易见的,一方面我们可以保持现有的技术资源,另一方面,在现有资源中可以利用.NET所带来的各种新技术。 
    
    在开始之前我们先来看一下.NET组件和我们目前常使用的COM组件之间有何不同之处吧。 

    .NET组件可以分为两大类:共享的.NET组件和私有的.NET组件。 

    共享的.NET组件需要通过标准公开关键字密码技术来保证自身的唯一性,在这一点上面比较类似于COM的全球唯一ID号码GUID。但是,我们在可能的情 况下应当尽量避免使用共享的.NET组件,因为这样将会有可能再一次的陷入目前在视窗系统下长期困扰开发人员的“DLL地狱”。 

    私有的.NET组件是我们将会经常使用的.NET组件方式,在这种方式之下,我们发布.NET组件需要做的只是简单的进行拷贝操作就可以了,仿佛回到了远古的DOS时代了,在也不必关心纷繁复杂的系统注册表了,也不必担心DLL的版本被覆盖等等的问题了。 

    而COM组件是微软曾经力推了很多年的一种代码复用的技术框架,在这些年里也得到了极大的发展和应用,但它的弊端却也日益明显,我们不得不面对众多的 COM组件之间的版本控制和令人恐怖的DLL地狱,还有注册表、GUID等等。在我们安装一个软件的同时,也带来了大量的我们所未知的版本繁多的COM组 件到我们的操作系统中。 

    但是,COM组件的技术优势也是明显的,在很大的程度上实现了Windows平台下的代码复用,所以我们才会提出这样的一个话题,如何才能在.NET技术日臻成熟的情况下,保护和利用已经存在的大量的采用COM技术的软件和产品呢? 

    下面我们就探讨一下,如何实现.NET组件和COM组件之间的相会调用和操作。 

    首先,我们来看看在现有的COM组件中如何调用.NET编写的组件吧:
在这里我们使用C#编写一个最简单的组件,仅仅实现返回一个字符串,详细的代码如下: 

    在上面的.NET组件当中我们实现了一个类成员:say。他的用途是简单的返回一段字符串。 

    切换到MS-DOS命令行下面,运行:
C:\>csc /t:library /out ClassLibrary1.DLLClassLibrary1.cs 

    上面的编译器参数/t:library 告诉C#编译器我们现在是在建立一个库应用程序。这样,我们就得到了一个名称为ClassLibrary1.DLL的.NET组件了。 
    但是想要在现有的COM组件中使用这个组件,我们还有进行如下步骤: 

    切换到MS-DOS命令行下面,运行:

本新闻共5页,当前在第1页  1  2  3  4  5  

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号