zoukankan      html  css  js  c++  java
  • OPC和DCOM

          COM用来帮助匹配客户机与服务器的主要机制是Windows RegistryCOM使用注册表来跟踪哪个组件已经被安装到系统中了,注册表中记录的信息包括:哪些组件对客户有效,服务器的DLL,可执行代码的精确位置,以及在应用程序运行过程中COM所需要的大量细节信息。

          这个服务器信息需要放在注册表中的某处。当实现一个服务器时,程序员要保证自己的服务器实现了能够将信息放入注册表中的功能。将信息放入注册表的过程称为服务器注册(server registration)。将信息从注册表中去掉的过程称作服务器解除注册。当服务器及其组件不再使用时,服务器要从系统中删除掉,此时要解除注册。COM服务器的解除注册一般是作为一个应用程序卸载过程中的一部分。

          OPC是基于DCOM技术的。与DCOM有关的规范重要有DA,AE,HDA等。

    开发DCOM主要有两方面原因:

    1、 能够使不同信息格式的文件信息进行交互。

    2、 能够实现软件组件之间的二进制兼容。

    组件之间的交互是通过查询接口的方法来实现的。一个组件包含了多个封装了访问对象方法的接口。COM主要定义了一下内容:

    1、 外部访问二进制COM对象的接口

    2、 用来在运行时查询某个对象是否支持特定接口的一整套方法。

    3、 对象生命周期的管理机制。通过一个引用指针来实现此目的。当一个接口第一次使用时,该指针增加。当接口释放时,指针减少。当多有接口被释放时,指针为0,这表明这个对象已经不再使用,可以终止自己。

    4、 进程间对象的访问规则。因为指向接口和方法参数的指针只能在本进程内有效。

    5、 标识和加载对象机制。

    通过DCOM,我们可以在以下方面对COM进行如下扩展:

    1、 分布式资源

    2、 安全

    3、 多线程模型

    两个重要的问题:

    1、 客户端如何获取服务器接口的第一个指针

    2、 客户端如何启动服务器

    流程:

    客户端调用CoGetClassObject()。此函数在ole32 Dll中提供。此函数主要涉及一下参数:

    CLSID要启动的服务器的ID

    pServerInfo:服务器信息,这个参数只有在安装DCOM后才能获取,它包括一下信息:

    服务所在的远程计算机的名称。

    包含认证机制信息的结构体。

    IClassFactory接口的唯一标识。

    返回的指向IClassFactroy接口指针的内存空间。

    注册表入口引用了包含服务的可执行文件。COM 运行时通过这个入口来启动可执行文件。通过CLSID和注册表中的用户口来进行定位。当启动可执行文件后,就会创建一个工厂并且放回指向接口的指针。

    此时客户端就可以调用IClassFactory接口的CreateInstance函数来创建服务。这样两个不同的进程就通过启动服务来做更多其它工作。

    OPC服务器主要有三种实现方式:

    DLL/InProc-Server:

    在这种情况下,服务在客户端的进程中。

    Local and remote server(OutProc Server):

    Opc服务运行在一个单独进程中。当OPC客户端使用时启动。目前大多采用这种方式。

    Windows NT Service

    服务通过操作系统自动运行,不用客户端启动。

    在分布式情况下,安全性是很重要的。我们必须保证OPC服务器和客户端的交互在期望的组件中进行。

    客户端启动远程计算机的进程。它必须通过认证,并能够对该进程进行相应的操作。同时,客户端必须保证服务器端进行合理的操作。

    安全需求是双向的。可以通过两种方式来配置安全性。

    1、 安全信息都被存储在注册表中。我们可以通过Dcomcnfg来进行管理。这就是声明式方法。

    2、 通过引入DCOM,同时提供了一些编程方法来控制安全行为。这就是编程式方法。

  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/jyz/p/1437136.html
Copyright © 2011-2022 走看看