技术开发 频道

重用托管代码中的Classic COM 组件


Classic COM中的重用机制


    Classic COM从来没有预定过实作码方案,一直由界面继承执行。COM中,传统的重用机制一直使用了内含包容和汇总。

   只是为了唤醒记忆,内含包容允许你展示外部组件,此外部组件在其内部完全包含内部组件。客户端只能看到外部组件接口。外部组件接口显示的方法通常自己处理工作,或者在必要的时候把工作委派给内部组件。外部组件创建了一个内部组件实例,当它需要平衡某些功能(此功能由内部组件显示)时,外部组件向内部组件发出呼叫。从客户端方面来看,它从不知道这里有一个被外部组件保护的内部组件,而此外部组件确实为外部组件工作。



Classic COM中的重用机制

    Classic COM从来没有预定过实作码方案,一直由界面继承执行。COM中,传统的重用机制一直使用了内含包容和汇总.

通过COM类的容器重用组件

    只是为了唤醒记忆,内含包容允许你展示外部组件,此外部组件在其内部完全包含内部组件。客户端只能看到外部组件接口。外部组件接口显示的方法通常自己处理工作,或者在必要的时候把工作委派给内部组件。外部组件创建了一个内部组件实例,当它需要平衡某些功能(此功能由内部组件显示)时,外部组件向内部组件发出呼叫。从客户端方面来看,它从不知道这里有一个被外部组件保护的内部组件,而此外部组件确实为外部组件工作。

通过COM类的聚集重用组件

    在汇总的情况中,外部对象再也不向内部组件发送呼叫。相反,通过处理内部组件接口指针,它允许客户端直接与内部组件相连。外部组件不再在内部组件接口上中途阻止方法呼叫,因为客户端直接与内部组件相作用。如果没有汇总在一起,内部组件使用一个默认的IUnknown (Non-delegating unknown)执行;如果汇总在一起了,它使用外部组件的IUnknown 执行 (Controlling/Delegating unknown)。这就保证了客户端总是得到外部组件的IUnknown接口指针,而不是内部组件的non-delegating IUnknown接口指针。再一次,以客户端看来,它并不知道这里有一个内部组件。客户端认为内部组件接口只是另一个被外部组件显示的接口。

    接着看一下从.NET类型在现有COM组件中重用非托管代码的不同方法。
0
相关文章