陈伟视频——(50~55)ActiveX/DLL/EXE组件

陈伟视频——(50~55)ActiveX/DLL/EXE组件

Active X组件
   ·简介
   ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。
   在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行的程序。这个组件就是ActiveX控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和java applet功能类似。
   ——二进制兼容
   ——跨平台的互操作性
  ——版本控制
  ·VB可创建的Active X 组件
    ——Active X 控件
    ——ActiveX文档
     ——代码部分(ActiveX DLL和ActiveX Exe)
   Com组件服务与标准dll的比较
   陈伟视频——(50~55)ActiveX/DLL/EXE组件
   陈伟视频——(50~55)ActiveX/DLL/EXE组件
   ·Com(Component Object Model)
   ①概述
    COM是构造二进制兼容软件组件的规范。它不是编程语言、代码库或者编译器,而是个二进制规范
   ②COM的好处
    1. com组件易替换
    2. com组件适合于改变业务需求
    3. com组件使复用性成为可能
    使用com,将很容易对某些代码实现一次编写和多处使用。而且你可以对这个组简进行任何纠正和改进,而不必改变使用这个组件的应用程序。
    4. com组件有助于并行开发
    一旦设计接口之后,就可以将其分布到几个程序中,组件的实现可以并列进行。
   ③ COM的局限性
    1. 版本问题
  每个COM组件都有GUID,是操作系统标识这个组件的唯一ID.这些GUID存放在Windows Registry(注册表)中。这样每次改变组件接口时,都赋予新的GUID。这个机制可以作为版本号,表示组件改变了接口。使用该组件的软件要注意。它能保证,一旦开始使用一个组件,就总是使用这个组件的同一版本。如果要使用新的版本,则要取得新的GUID。
版本问题是无法避免的。因此,在开发期间,你需要特别注意所用的组件的版本。每次更新都会导致新的版本。在开发期间每次生成新构件时,要有检查组件版本的习惯。
    2. 旧接口应当停用
  COM要求的是接口一旦建立,就无法抛弃它。这就保证一旦程序利用特定版本的组件,就总是支持这个版本的功能。
作为开发人员,我们需要保证旧版本组件接口保持不动。可以在组件中增加功能或更新现有功能。但是不能删除现有功能。这个特点造成的唯一真正问题是组件不断膨胀的演变。到一定时候(如果组件变得太大或旧功能太多),可能要把所要功能移植到新组件中。
    3. com接口要认真规划
  接口是COM组件的集成部分。接口是组件之间相互访问的通信机制。每次组件或其接口改变时,就有一个新版本与组件相关联。认真规划可以防止开发期间产生太多接口版本。
   ④COM服务器的三个关键要求
   1. 接口(Interface)
   接口是服务器与客户机之间的协议,客户机通过接口与服务器通信。
   2. 组件类(CoClass)
   组件类(Component Class)提供所定义接口的实现方法。
   3. 组类型库(Type Library)
   是编译的IDL文件,向支持COM的环境传送接口的信息。
  以COM为扩展名的文件的特点如下:
   1.程序只能设置一个段,且不建立堆栈段;
   2.程序的长度必须少于64K字节;
   3.程序必须预留100H空间,开始处是一条可执行指令;
   4.程序被装入的起始标号必须由END语句说明开始地址;
   5.程序中的子程序必须具有进程属性(NEAR);
   6.如果COM文件是由几个不同的目标模块链接生成的,要求所有目标模块具有同一代码段名和类别名(CLASS),且赋予公共属性(PUBLIC),而主模块应具有100H的入口指针并优先连接。
  EXE文件的结构特点如下:
   1.程序允许建立若干不同名的代码段、数据段、堆栈段或附加段。
   2.程序的长度仅受当前内存可用空间的限制。
   3.程序的入口随应用而定,只需起始标号与END语句说明的起始地址一致。
   4.程序中的各个子程序的属性随段内或段间调用而定为NEAR或FAR。
   5.连接生成EXE文件的各个不同的目标模块内的代码段,数据段或附加段可取同名或独立命名。但要求只有主模块的END语句指出程序入口的起始标号,并至少有一个具有STACK属性的堆栈段
   
   Com组件服务与标准dll的比较
    ·标准dll的调用约定限制
    ·COM组件服务的可扩充性,可移植性。
        陈伟视频——(50~55)ActiveX/DLL/EXE组件
        陈伟视频——(50~55)ActiveX/DLL/EXE组件
 选择进场內或进场外服务器的考虑问题: 速度是使用频道;维护客户状态能力;容错能力;资源影响;
     陈伟视频——(50~55)ActiveX/DLL/EXE组件
      陈伟视频——(50~55)ActiveX/DLL/EXE组件
      陈伟视频——(50~55)ActiveX/DLL/EXE组件
      陈伟视频——(50~55)ActiveX/DLL/EXE组件
      陈伟视频——(50~55)ActiveX/DLL/EXE组件