《组件技术课程复习》PPT课件.ppt
“组件技术”课程复习,潘爱民北京大学计算机科学技术研究所http:/,内容,第三次课:COM接口与对象第四次课:COM实现第五次课:COM重用模型、跨进程模型第六次课:COM多线程、安全性第八次课:COM开发第十二次课:软件设计模式(一)第十三次课:软件设计模式(二),COM接口与对象,对COM产生的背景有所了解解决程序之间的通信问题组件基本问题COM中IUnknown接口解决了两个重要的问题动态接口发现,允许对象支持多个接口、允许在运行时刻确定对象是否支持某些接口生命周期管理COM接口的内存模型vtable,参照:用C语言描述一个COM接口COM对象的状态与vtable之间的关系,COM接口与对象(续),理解COM接口的原则COM对象与COM接口的标识的重要性引用计数的使用规则IDL只要能看懂基本的IDL文件即可interface、coclass、library、基本数据类型理解COM对象与C+对象的差异层次差异、封装特性、重用性、多态性,COM实现,理解类厂的机制类厂与COM对象一一对应类厂本身也是一个COM对象DllGetClassObject创建类厂对象利用注册表信息解决创建过程的位置透明性根据CLSID,查找InprocServer32根据ProgID,查找InprocServer32对于每一个可被客户直接创建的COM对象,CLSID是必需的,ProgID是可选的理解两者的意义理解COM组件的注册过程的意义理解自注册,COM实现(续),COM库COM库对于创建过程的意义引入COM库之后的基本创建过程CoCreateInstance-CoGetClassObject-DllGetClassObject-IClassFactory-CreateInstance-returnCOM库初始化COM库提供了内存管理功能理解内存管理功能对于组件体系的重要性错误处理机制:HRESULT,COM重用模型,包容和聚合只要求对这两种模型的理解,不要求实现包容外部对象与内部对象的关系:client/server灵活应用,外部对象的接口可以不同于内部对象的接口聚合直接把内部对象的接口暴露给客户理解:内部对象实现两个IUnknown接口,从而维护外部对象的身份一致性1 在客户眼里的IUnknown 需要委托2 在外部对象眼里的IUnknown 不能委托,COM跨进程模型,Marshaling基本概念通过marshaling做到客户与服务器之间通信透明proxy/stub的概念建立跨进程连接的过程marshaling-transport-unmarshalingmarshaling的要点数据类型、数据大小、字节顺序COM库保证了进程透明性,COM线程模型,COM对象与线程的关系COM对象生存在一定的线程环境中,对象在执行方法时是否与线程相关套间的概念STA:STA套间中的对象与线程相关MTA:MTA套间中的对象与线程无关,与MTA有关跨套间调用需要marshaling,同一套间内部调用不需要marshaling,COM安全性,三个概念激发安全性:哪些用户有权启动服务进程调用安全性:客户是否有权调用对象方法服务器进程的身份概念:服务器访问系统资源受其影响,用C+来实现COM对象,掌握原理用多继承方法来实现多个接口ATL方法用内嵌对象来实现COM接口 MFC方法,Patterns(模式),Factory methodBuilderBridgeCompositeIteratorStrategy,Patterns:Factory Method,Patterns:Builder,Patterns:Bridge,Patterns:Composite,Patterns:Iterator,Patterns:Strategy,考试与作业事项,考试形式闭卷,2小时COM部分:重点考对于组件技术的理解pattern部分:重点考对于这些patterns的结构的理解,以及每种模式的要点之处考试满分100,占总成绩50%三次作业占50%,请考试前交上来,