logo资料库

C# COM+ 编程指南(中文版).pdf

第1页 / 共219页
第2页 / 共219页
第3页 / 共219页
第4页 / 共219页
第5页 / 共219页
第6页 / 共219页
第7页 / 共219页
第8页 / 共219页
资料共219页,剩余部分请下载后查看
@Team LiB
封 面
内 容 提 要
译 者 序
作 者 简 介
致 谢
前 言
本 书 内 容
目 录
第一部分 与COM的互操作
第1章 理解.NET结构
1.1在通用语言运行库内载入和执行代码
1.1.1 Microsoft中间语言和元数据
1.1.2类装载器
1.1.3即时编译器
1.1.4自动内存管理
1.2装配件
1.2.1装配件清单
1.2.2版本信息
1.2.3共享名称
1.2.4全局装配件缓存
1.2.5定位装配件
1.3应用程序域
1.4通用类型系统
1.5小结
第2章 从.NET中使用COM组件
2.1 将类型库转换成.NET名称空间
2.2运行库可调用的封装器
2.2.1保持对象的一致性
2.2.2维护COM对象的寿命
2.2.3代理接口
2.2.4调度方法调用
2.3线程处理问题
2.4小结
第3章 从COM中使用.NET组件
3.1将装配件转换成COM类型库
3.2向COM注册装配件
3.3 COM可调用封装器
3.3.1保持对象的一致性
3.3.2维护对象的寿命
3.3.3标准COM接口:Iunknown和IDispatch
3.3.4代理接口
3.3.5调度方法调用
3.3.6激活生命周期
3.3.7.NET组件的设计方针
3.4小结
第二部分COM+的核心服务
第4章 事务处理
4.1 ACID的要求
4.1.1原子性
4.1.2一致性
4.1.3隔离性
4.1.4持久性
4.2理解COM+事务处理过程
4.2.1逻辑事务处理生命周期
4.2.2实际事务处理的生命周期
4.3在C#中编写事务处理组件
4.3.1ServicedComponent类
4.3.2基于属性的编程方法
4.3.3把类安装到COM+应用程序
4.3.4JITA、同步化和自动完成
4.3.5开发根和工作者对象
4.4小结
第5章 安全性
5.1理解Windows的安全性
5.1.1认证
5.1.2授权
5.1.3特殊帐号
5.1.4扮演
5.2连线认证
5.3使用COM+安全模型
5.3.1认证与授权
5.3.2基于角色的安全性
5.3.3理解安全性的作用范围
5.4小结
第6章 事件
6.1理解对LCE的需要
6.1.1.NET事件结构
6.1.2将TCE事件与COM+的LCE比较
6.2LCE结构
6.2.1理解预订
6.2.2COM+属性
6.2.3控制订户的通知顺序
6.3 在C#中编写LCE组件
6.3.1第一个LCE组件
6.3.2用组件服务资源管理器创建预订
6.3.3.NET框架的EventClass属性
6.3.4与事件一起使用事务处理
6.4小结
第7章 对象共享
7.1理解对象共享
7.1.1何时使用对象共享
7.1.2对象共享的属性
7.1.3对象共享和可伸缩性
7.1.4对象共享和非确定性结束
7.1.5对可共享对象的要求
7.1.6对事务处理对象的要求
7.2C#中的对象共享
7.2.1共享和非共享组件
7.2.2分析客户
7.3小结
第8章 列队的组件
8.1为列队组件作准备
8.2Microsoft消息队列简介
8.2.1安装MSMQ
8.2.2理解队列
8.2.3MSMQ消息
8.2.4用C#开发MSMQ应用程序
8.3理解COM+中的列队组件
8.3.1客户和服务器的要求
8.3.2记录器、收听器和播放器
8.3.3实例化列队组件
8.3.4异常处理
8.3.5列队组件的设计考虑
8.4与列队组件一起使用其他COM+服务
8.4.1基于角色的安全性
8.4.2事务处理
8.4.3松散耦合事件
8.5在C#中开发列队组件
8.5.1HelloWorld列队组件
8.5.2松散结合事件与列队组件
8.5.3异常类
8.6小结
第三部分高级COM+计算
第9章 远程处理
9.1.NET远程处理框架
9.1.1调度(marshaling)过程
9.1.2终点
9.1.3已知对象
9.1.4通过引用调度和通过值调度的对比
9.1.5激活远程对象
9.1.6代理
9.1.7频道
9.1.8远程对象的寿命
9.2SOAP导言
9.2.1HTTP头
9.2.2SOAP消息
9.3ServicedComponents的远程处理
9.3.1使用SOAP和HTTP的SingleCall组件
9.3.2使用二进制格式化工具和TCP的SingleCall组件
9.3.3由客户激活的ServicedComponent
9.4小结
第10章 COM+和.NET的未来
10.1COM+ 1.5的新特性
10.1.1作为服务的COM+应用程序
10.1.2应用程序分区
10.1.3应用程序进程转储
10.1.4组件别名
10.1.5可配置的隔离级别
10.1.6低内存激活门
10.1.7进程回收
10.1.8应用程序共享
10.2IIS 6.0的新功能
10.2.1新服务器结构
10.2.2应用程序共享池和Web“花园”
10.2.3服务器模式
10.2.4工作进程管理
10.2.5ASP模板缓存细调
10.2.6对元库的XML支持
10.3MSMQ的新功能
10.4小结
附录A CD-ROM包括的内容
A.1系统需求
A.2在Microsoft Windows中使用光盘
A.3本书所附光盘中有什么
A.4故障排除
附录B COM+的共享属性管理器
B.1在线程间共享内存
B.2共享属性管理器API
B.3解决静态问题
附录C C#语言简介
C.1名称空间
C.2流程控制语句
C.3在C#中编写循环
C.4方法参数
C.5数组
C.6基本数据类型
C.7结构
C.8类
C.9属性
C.10索引器
C.11不安全代码
附录D 补偿资源管理器
D.1补偿资源管理器简介
万水计算机编程技术与应用系列 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+开发人员。
分享到:
收藏