书籍详情
Effective COM中文版
作者:(美)Don Box等著;余蒲澜译
出版社:中国电力出版社
出版时间:2003-08-01
ISBN:9787508308470
定价:¥29.00
购买这本书可以去
内容简介
《COM本质论》作者DonBox又一力作。COM完全是作为Microsoft用于面向对象的分布式应用开发的关键中间层技术建立的。从无数成功的部署中学习到的经验使作者总结出了最有效地使用COM的重要技术和最佳实践。在本书中,作者DonBox、KeithBrown、TimEwald和ChrisSells提出了创建高效的、健壮的、可维护的、基于COM的应用程序的50条具体指导原则。根据作者使用和讲授COM的广泛实践总结出的这些经验法则、应避免的陷阱以及基于经验的技巧,将使你成为一个更高产的成功的COM程序员。DonBox、KeithBrown、TimEwald和ChrisSells都在一家领先的COM教学机构——DevelopMentor担任教员。作为DevelopMentor公司的合作创建人,DonBox曾提供过基于COM的项目咨询,比如将Microsoft的MTS和SoftwareAG的COM移植到Solaris操作系统。KeithBrown自从COM于1993年面世以来就一直在使用它。除了在DevelopMentor公司的工作外,他还为《MicrosoftSystemsJournal》的SecurityQ&A专栏撰稿。TimEwald是DevelopMentor公司的首席科学家,主要从事COM相关的研究和开发。ChrisSells是DevelopMentor公司的C++和COM教师,也是使用COM设计和构建分布式系统方面的独立咨询专家。欲了解关于作者的更多信息,请阅读本书后面对作者的介绍。
作者简介
暂缺《Effective COM中文版》作者简介
目录
译者序
前 言
第1章 从C++转变到COM
实践1 在定义类之前定义接口(用IDL实现)
实践2 设计时牢记分布式的概念
实践3 对象不应该有自己的用户界面
实践4 当心COM单实例
实践5 不要允许C++的异常跨越方法边界
第2章 接口
实践6 接口是语法和松散的语义, 二者都是不可变的
实践7 避免E_NOTIMPL
实践8 要类型化的数据, 不要模糊的数据
实践9 避免连接点
实践10 不要为单个对象的同一接口提供多个实现
实践11 无类型语言失去了COM的优点
实践12 双接口是很苛刻的, 不要强求人们去实现它
实践13 选择合适的数组类型(不要使用开放的和可变的数组)
实践14 避免将IUnknown作为一个静态类型化的对象引用(使用iid_is)传递
实践15 避免包含指针的[in, out]参数
实践16 注意循环引用(以及它们可能造成的问题)
实践17 避免使用wire_marshal, transmit_as, call_us以及cpp_quote
第3章 实现
实践18 防御性编码
实践19 总是初始化[out]参数
实践20 不要使用还没有被AddRef的接口指针
实践21 在桥接COM类型系统和C++类型系统时使用static_cast
实践22 智能指针带来的复杂性至少和它们消除的复杂性一样多
实践23 不要手工优化引用计数
实践24 使用延迟求值实现枚举器
实践25 适当地使用flyweight
实践26 避免跨单元边界使用tearoff
实践27 要特别地小心使用BSTR
实践28 COM聚合和包容只是一种身份诡计, 而不是代码重用
第4章 单元
实践29 不要跨单元边界访问原始接口指针
实践30 当在MTA线程之间传递接口指针时, 使用AddRef
实践31 用户界面线程和对象必须在单线程单元(STA)中运行
实践32 避免从进程内服务器创建线程
实践33 小心FTM
实践34 当心MTA中的物理锁
实践35 STA可能也需要锁
实践36 避免扩展进程内对象上的现存列集
实践37 当你提前退出时, 请使用CoDisconnectObiect来通知存根
第5章 安全
实践38 ColnitializeSecurity是你的朋友, 要学习它. 爱它. 调用它
实践39 避免以激活者方式激活
实践40 避免伪装
实践41 使用细粒度验证
实践42 使用细粒度访问控制
第6章 事务
实践43 使事务尽可能短
实践44 当分发自己的对象的指针时总是使用SafeRef
实践45 不要跨活动边界共享对象引用
实践46 小心从事务层次的中间公开对象引用
实践47 小心隐式地提交事务
实践48 在适当的时候使用非事务对象
实践49 把重要的初始化移到IObjectContro1::Activate
实践50 不要依赖爪激活和ASAP停用来实现可伸缩性
结束语
关子作者
索引
前 言
第1章 从C++转变到COM
实践1 在定义类之前定义接口(用IDL实现)
实践2 设计时牢记分布式的概念
实践3 对象不应该有自己的用户界面
实践4 当心COM单实例
实践5 不要允许C++的异常跨越方法边界
第2章 接口
实践6 接口是语法和松散的语义, 二者都是不可变的
实践7 避免E_NOTIMPL
实践8 要类型化的数据, 不要模糊的数据
实践9 避免连接点
实践10 不要为单个对象的同一接口提供多个实现
实践11 无类型语言失去了COM的优点
实践12 双接口是很苛刻的, 不要强求人们去实现它
实践13 选择合适的数组类型(不要使用开放的和可变的数组)
实践14 避免将IUnknown作为一个静态类型化的对象引用(使用iid_is)传递
实践15 避免包含指针的[in, out]参数
实践16 注意循环引用(以及它们可能造成的问题)
实践17 避免使用wire_marshal, transmit_as, call_us以及cpp_quote
第3章 实现
实践18 防御性编码
实践19 总是初始化[out]参数
实践20 不要使用还没有被AddRef的接口指针
实践21 在桥接COM类型系统和C++类型系统时使用static_cast
实践22 智能指针带来的复杂性至少和它们消除的复杂性一样多
实践23 不要手工优化引用计数
实践24 使用延迟求值实现枚举器
实践25 适当地使用flyweight
实践26 避免跨单元边界使用tearoff
实践27 要特别地小心使用BSTR
实践28 COM聚合和包容只是一种身份诡计, 而不是代码重用
第4章 单元
实践29 不要跨单元边界访问原始接口指针
实践30 当在MTA线程之间传递接口指针时, 使用AddRef
实践31 用户界面线程和对象必须在单线程单元(STA)中运行
实践32 避免从进程内服务器创建线程
实践33 小心FTM
实践34 当心MTA中的物理锁
实践35 STA可能也需要锁
实践36 避免扩展进程内对象上的现存列集
实践37 当你提前退出时, 请使用CoDisconnectObiect来通知存根
第5章 安全
实践38 ColnitializeSecurity是你的朋友, 要学习它. 爱它. 调用它
实践39 避免以激活者方式激活
实践40 避免伪装
实践41 使用细粒度验证
实践42 使用细粒度访问控制
第6章 事务
实践43 使事务尽可能短
实践44 当分发自己的对象的指针时总是使用SafeRef
实践45 不要跨活动边界共享对象引用
实践46 小心从事务层次的中间公开对象引用
实践47 小心隐式地提交事务
实践48 在适当的时候使用非事务对象
实践49 把重要的初始化移到IObjectContro1::Activate
实践50 不要依赖爪激活和ASAP停用来实现可伸缩性
结束语
关子作者
索引
猜您喜欢