如何整合COM和.NET

ZDNet软件频道 时间:2003-01-17 作者:BUILDER.COM |  我要评论()
本文关键词:
即使你的工作室在一年前(.NET刚刚出现时)就开始.NET平台,你现在可能还有遗留下来的COM应用程序。你也许下定决心把这些应用程序全部或者部分迁移到新的平台上,但与此同时,你该如何更新它们呢?

即使你的工作室在一年前(.NET刚刚出现时)就开始.NET平台,你现在可能还有遗留下来的COM应用程序。你也许下定决心把这些应用程序全部或者部分迁移到新的平台上,但与此同时,你该如何更新它们呢?毕竟没有人会愿意为一个过时的平台编写一次性的代码。

另一方面,这些COM应用程序有的非常成熟、其功能经实践检验是很可靠的。逻辑上,如果你重新开发该应用程序的.NET版本,你需要解决许多相同的问题。对大多数开发小组来说新项目的资源和时间会显得更加不足,由于有许多工作旧版本已经有了,彻底重新开发不是最好的解决方法。

幸好,微软公司不遗余力,使得.NET在功能上可以与COM兼容(前向和后向)。时间限制、与其它应用程序互用性(interoperability)、甚至由于缺乏可转换的代码,这些因素加在一起,使得转化旧有组件要比设计一个全新的.NET版本组件简单的多。

COM和.NET的互用性一文中,S. Vikram解释了COM和.NET组件的不同之处,并按照是否借助于Visual Studio.NET分别介绍了把COM组件添加到.NET应用程序的方法。你将学到RCW(运行时即时包装,runtime callable wrapper),你还会学到.NET是如何处理COM组件的,它们看起来和.NET本身组件没有什么区别。

.NET的出现代表了微软开发工具向前迈出了一大步,但是它并没有提供一些COM+所提供的功能,如事务处理(transaction)和即时对象激活功能(just-in-time object activation)。你可以参考Paul Stephenson编写的文章《在.NET组件中使用COM+的自动事务处理功能》,它会告诉你怎样在.NET应用程序中使用该功能。

再退一步

尽管从表面上来看,试图在COM应用程序中使用.NET组件是一件愚蠢的事,但是由于遗留下来的应用程序会和它的.NET版本并行存在,有些情况下你还是会希望这么做。通过.NET组件的方式给COM应用程序添加新功能会使得日后的迁移工作变得简单一些。

微软有一个命令行工具(RegAsm.exe),你可以用它来创建COM应用程序使用.NET组件所需要的类型库(type libraries)和登记项(registry entries)。

最后,你会从S. Vikram 的文章《让COM利用.NET装配》学会从VB6应用程序调用.NET类库的方法。S. Vikram还讨论了COM即时包装(callable wrapper)以及Visual Studio.NET为简化.NET调用COM对象而提供的工具。

当你知道你要做什么时,事情就简单了

COM和.NET的边界交叉性是很重要的性能,它可以大大减轻程序迁移的难度。我希望本文给出.NET/COM互用性(interoperability)简介可以帮助你实现程序迁移。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134