高级软件工程08DCOM、自动化.pptVIP

  • 4
  • 0
  • 约1.01万字
  • 约 61页
  • 2017-12-23 发布于上海
  • 举报
高级软件工程08DCOM、自动化

DCOM 可配置性 对 服务器的变化 客户程序的自动安装 等 可以灵活配置 安全性 使用了 Windows NT 提供的 可扩展安全性框架 实现的安全性包括: 访问安全性 激发安全性 等 6、自动化 一种 客户与构件之间通信的方法 COM接口 自动化(OLE自动化) Word、Excel 及VB、Java都使用了自动化技术 特点: 使得用解释性语言和宏语言 访问COM构件更为容易 编写COM构件也将更为容易 关注运行时的类型检查 以牺牲速度与编译时类型检查为代价 自动化 自动化不独立于COM 建立在COM基础上 一个自动化服务器 是一个实现了 IDispatch 接口的COM构件 一个自动化控制器 是一个通过 IDispatch 接口 同自动化服务器进行通信的COM客户 自动化控制器不直接调用自动化服务器实现的函数 而是通过 IDispatch 接口中的成员函数 实现对服务器中函数的间接调用 自动化 内 容 IDispatch 接口 IDispatch 的使用 类型库 IDispatch 的实现 自动化 (1)IDispatch 接口 IDispatch接口是作为 VB 的一部分开发出来的 COM构件通过一个标准的接口( IDispatch ) 提供构件支持的服务 而不必提供多个特定于服务的接口 IDispatch 将接收一个函数的名称并执行它 自动化 interface IDispatch : IUnknown{ typedef [unique] IDispatch * LPDISPATCH; HRESULT GetTypeInfoCount( [out] UINT * pctinfo ); HRESULT GetTypeInfo( [in] UINT iTInfo, [in] LCID lcid, [out] ITypeInfo ** ppTInfo ); HRESULT GetIDsOfNames( [in] REFIID riid, [in, size_is(cNames)] LPOLESTR * rgszNames, [in] UINT cNames, [in] LCID lcid, [out, size_is(cNames)] DISPID * rgDispId ); 自动化 HRESULT Invoke( [in] DISPID dispIdMember, [in] REFIID riid, [in] LCID lcid, [in] WORD wFlags, [in, out] DISPPARAMS * pDispParams, [out] VARIANT * pVarResult, [out] EXCEPINFO * pExcepInfo, [out] UINT * puArgErr ); 自动化 执行函数时 自动化控制程序将调度标识 传给 Invoke 成员函数 自动化服务器根据调度标识 使用 case 语句执行不同的代码 Invoke 的工作方式与 vtbl 类似: 都实现一组按索引访问的函数 都可以定义接口 IDispatch :: Invoke 的一个实现所包含的函数集 被称作一个调度接口 (不是COM接口) 自动化 pVtbl QueryInterface AddRef Release GetTypeInfoCount GetTypeInfo GetIIDsOfNames Invoke Idispatch * pIDispatch FooBar 3 Bar 2 Foo 1 “FooBar” 3 “Bar” 2 “Foo” 1 Idispatch接口 调度接口 Invoke 函数 GetIIDs

文档评论(0)

1亿VIP精品文档

相关文档