万水计算机编程技术与应用系列
C# COM+ 编程指南
[美] Derek Beyer 著
龚小平 史艳辉 杜大鹏 管英强 译
杜国梁 审校
中国水利出版社
内 容 提 要
.NET 框架是 Microsoft 公司为适应 Internet 发展与市场形势而提出的开发平台。C# 是
Microsoft 公司为.NET 框架量身定做的首选语言。本书向读者概要地介绍了.NET 框架和通
用语言运行库的基本概念,进一步讲解了新的.NET 框架与已有的 COM+ (组件对象模型扩
展)技术的互操作方法,即如何在 COM+中使用.NET 组件以及如何在.NET 框架中使用已有
的 COM+组件;如何用 C#语言创建全新的符合.NET 规范的 COM+组件,这些组件可用于事
物处理、安全、事件、对象共享、事件排队以及远程处理。
为了读者更好地阅读本书,作者在附录中还介绍了 C#言的要点。在本书所附的光盘上包括
了本书中的所有源代码。
本书适合有志于学习 Microsoft 新的.NET 框架平台的开发人员。
Original English language edition Copyright ©by Hungry Minds,Inc. All rights reserved including
the right of reproduction in whole or in part in any form. This translation published by
arrangement with Hungry Minds,Inc.
北京市版权局著作权合同登记号:图字 01-2001-4560
图书在版编目(CIP)数据
C# COM+ 编程指南 / (美)拜尔(Beyer,D.) 著; 龚小平等译. —— 北京:
中国水利水电出版社,2002
(万水计算机编程技术与应用系列)
书名原文:C# COM+ Programming
ISBN 7-5084-1O05-X
I.C… II.①拜…②龚… III. ①C 语言 - 程序设计 ②因特网 - 程序设计
IV.①TP312 ②TP393.4
中国版本图书馆 CIP 数据核字(2002)第 013334 号
书 名 C# COM+ 编程指南
作 者 [美] Derek Beyer 著
译 者 龚小平 史艳辉 杜大鹏 管英强 译
出版、发行 中国水利水电出版社(北京市三里河路 6 号 100044)
网址:www.waterpub.com.cn
E-mail:mohannel@public3.bta.net.cn(万水)
sale@waterpub.com.cn
电话:(010)68359286(万水) 63202266(总机) 68331835(发行部)
经 售 全国各地新华书店
排 版 北京万水电子信息有限公司
印 刷 北京蓝空印刷厂
规 格 787 * 1092 毫米 16 开本 15 印张 327 千字
版 次 2002 年 3 月第一版 2002 年 3 月北京第一次印刷
印 数 0001 – 5000 册
定 价 30.00 元(含 1CD)
凡购买我社图书,如有缺页、倒页、脱页的,本社发行部负责调换。
版权所有·侵权必究
译 者 序
自从 2000 年以来,相信许多人都从各种媒体上听说过.NET。Microsoft 为.NET 给出的官方
定义是“.NET 是 Microsoft 用于 XML Web 服务的平台”(.NET is Microsoft’s platform for XML
Web services.)。这是 Microsoft 为适应 Intenet 发展和市场竞争需要而提出的产品战略。.NET
框架成为 Microsoft 所有产品共享的平台。Microsoft .NET 平台包括许多建立在 XML 和
Internet 业界标准的产品族,可提供开发、管理、使用和体验 XML Web 服务的各项功能。
XML Web 服务将成为目前已经在使用的 Microsoft 应用程序工具和服务器的一部分,而且将
被引入到新产品中,以便满足所有的业务需求。XML Web 服务允许应用程序通过 Internet
共 享 数 据 , 而 不 管 使 用 的 是 什 么 操 作 系 统 和 编 程 语 言 。 其 中 共 享 数 据 的 格 式 就 是
XML(eXtended Markup Language,扩展标记语言)。C#语言是 Microsoft 在 C++ 和 Java 的基
础上为.NET 框架特意开发的完全面向对象的语言,是.NET 平台上的首选开发语言。但本书
并非讲解 C#语言的教科书.只是使用了 C#语言编写书中的所有代码。
本书的书名中还有一个缩略语 COM+,其全称是“组件对象模型”的增强版本。这也是
Microsoft 的一项较新的技术。1997 年 Microsoft 在加利福尼亚的 San Diego 召开的专业开发
人员大会上宣布了 COM+计划。这是一种对组件对象模型(Component Object Model,COM)
的扩展。COM+的目的是使用任何语言或任何工具来创建并使用软件组件。相对于.NET 框
架来说,COM+已经是较为传统的技术。那么在.NET 框架下可以使用以前开发的 COM+组
件吗?答案是肯定的,这也正是本书内容要达到的主要目的。.NET 系列丛书编辑 Michael Lane
Thomas 如是说:“如果想要在今天的 COM+服务与未来用 C#语言开发出来的下一代服务之
间自由地‘跳华尔兹’是需要一些高超技术的,而本书可成为您的‘舞蹈教练’。”这句话可
谓一语中的地道出了本书的目的和宗旨。
如果读者有以上知识背景或是想要了解以上知识背景,则本书意义就突现出来。译音们
对以上知识并不很精通,对.NET 和 C#等新知识有极大的好奇心。翻译的过程也就是学习的
过程。错误在所难免,敬请广大读者(特别是行家)提出宝贵意见。
本书是多人努力的成果。龚小平、史艳辉、杜大鹏、管英强参加了翻译工作,其中,龚
小平翻译了前言和第 1 章到第 5 章,史艳辉翻译了第 6 章到第 8 章,杜大鹏翻译了第 9 章到
第 10 章,管英强翻译了附录。全书由杜国梁审校并统稿。参加本书其他工作(录入、打印、
校对等)的人有魏天超、梁国珍、任建畅、马相生、刘发来、董明、迟春和杨天华等。在此
对所有对本书作出贡献的人表示感谢。
译 者
2001 年 11 月 20 日
于防化指挥工程学院
作 者 简 介
Derek Beyer 现在作为 Web 开发专家工作于密歇根州的 Grand Rapids 市的 Meijer Stores 公司。
Derek 经常指导其他开发人员程序设计和开发技巧。他也负责实现并维护核心基础组件,如
Web 和应用程序服务器等。Derek 为公司的开发人员开发并宣讲有关 MTS、COM+、Visual
Basic 和 Active Server Pagers 领域的开发指南。
Derek 也在以芝加哥为基地的咨询公司 March First 作顾问工作。他所从事的项目范围涉及从
开发主要基于 Internet 的消费者站点的应用程序到 SAP R/3 应用程序的 Web 集成。Derek
也在 COM+和.Net 主题的用户组会议上演讲。
闲暇时间,Derek 通常在健身房参加体育锻炼,或者是享受诸如狩猎和钓鱼这样的户外活动。
致 谢
真的很感谢为本书辛苦而勤奋工作的审稿和编辑团队。虽然本人的名字出现在封面上,但本
书其实是团队努力的结果。Matt Lusher 和 Eric Newman 担当了本项目的项目编辑并提供了
很大的帮助。Matt 以其专家的身份和丰富的幽默感使紧张的时光变得更轻松。Chris Jones
努力查找出在本人犯困和睡眼朦胧时所犯的语法错误。一个好的组稿编辑室能把全书结合成
一个整体并使每个人都保持快乐,而 Sharon Cox 这方面的能力就很令人惊叹。Sharon 无疑
使本人通常要处理的问题减少了许多,谢谢你,Sharon! 我对 Hungry Minds 的产品部也欠了
许多人情,这些人士都受易于本人的绘图和屏幕抓图中的错误。我还要感谢 Rolf Crozier,
本书早期的组稿编辑。Rolf 向 Hungry Minds 提出了出版本书的主意并使之启动。
在人们所喜爱的领域内遇到的最好的事情就是具有共同观点并能向其学刀的人们。Steve
Schofield 是我开始学习新技术时曾经遇到的最热心的人士。他对.NET 的兴趣很具感染力。
Steve 也在本人需要将本书变成现实时向本人提供了与 Hungy Minds 内有关人员的联系方
法。Nick McCollum 是本书的令人敬畏的技术编辑。他使我保持诚实并帮助本人使许多主题
更贴近读者。还要感谢许多关键的 Microsoft 雇员,如 Mike Swanson 和 Shannon Paul。Mike
总是能提供帮助和本人所需要的一些东西。他也以微笑和点头来面对本人对许多技术问题的
抱怨。Shannon 给本人提供了关于 COM+事件的关键信息。他也使作者在进入一个主题时能
顺利地写作下去。谢谢你,Shannon。
本人现在已经明白写书是一项很大的工程。没有人能作出这么大的努力而没有来自家庭或朋
友的支持。本人幸运地有一个很优秀的支持系统。系统的基础是我的父母。父亲向我举例说
明真正的工作道德是什么。父亲是我曾经看到的最刻苦工作的人。很感激这些已经从我脑海
消失的工作道德。 母亲为我提供了无条件的支持和鼓励。必须感谢她能理解在我潜心写作
本书时几个月很难看到我。最后但并非不重要,我必须感谢 Jacque。Jacque 是很特别的朋友,
在编写本书的过程中忍受了本人偏执的冲动。她能够以她的同情和积极的能量在我低沉时使
我振作起来。谢谢。
前 言
欢迎阅读《C# COM+ 编程指南》一书。如果已经购买本书或正打算购买,您可能有许多希
望本书能回答的问题。最常见的问题是“COM+ 消亡了吗?”及“COM+ 在.NET 应用程
序中的角色?”。第一个问题的答案很明确,就是“没有”!Microsoft 包含在 Windows 2000
中的 COM+技术对.NET 程序员仍然可以使用。实际上,一些在早期只有 C++程序员能用的
COM+技术现在对 Visual Basic .NET 和 C#程序员也都可以用。第二个问题总是有点难以回
答。从作者这里得到的典型回答是“视具体情况而定”。COM+中的技术如分布式处理和列
队组件只能在 COM+中找到。需要确定是否应当使用特定 COM+服务时要自问的问题是“我
的应用程序中需要这种服务吗?”,如果答案是肯定的,就可以自由使用 COM+。如果答案是
否定的,COM+就不适合于该应用程序。
本书使用的所有代码都使用了新的编程语言 C#。C#是特意为.NET 开发的面向对象的编程语
言。实际上,.NET 应用程序是用 C#能编写的唯一的—种应用程序。贯穿全书作者都会指出
有助于编写更好的 COM+组件的 C#语言的特征。虽然所有的代码都是在 C#中编写的,但如
果喜欢的话这些示例也可以用 C++编写。
本书的读者对象
COM+不是适合编程新手的主题。如果读者以前从来没有开发过应用程序,本书就可能不太
合适。说到 COM+,话题就总是牵涉到分布式计算。如果已经开发过应用程序,特别是分
布式 Web 应用程序,本书所讨论的主题对读者就很有意义。
如果读者是.NET 编程或 COM+编程的新手也不要害怕。本书的第一部分介绍了.NET 的基础
知识及其与 COM 组件的交互。第一部分提供了理解.NET 应用程序如何工作及如何与传统
的 COM 组件交互所需的环境。作者强烈建议读者在阅读任何其他章节前先阅读第 1 章。第
1 章向读者介绍.NET 环境。如果不理解该环境如何工作,本书的其余部分对读者就没有太
大的意义。
对那些 C#新手来说,附录 C 提供了对该语言的介绍。附录 C 介绍该语言的基本功能如数据
类型、循环、流程控制语句以及在本书其余部分所用到的特定的语言特色。
本书假设读者并不熟悉 COM+编程。每章都介绍每种 COM+服务的基本功能和问题。读者
在用本书学习如何开发 COM+组件时不必是一个有经验的 COM+开发人员。