• 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,同时提供了一些编程方法来控制安全行为。这就是编程式方法。

  • 相关阅读:
    Autofac一个优秀的.NET IoC
    最强的 C# Autofac学习笔记
    linux 中shell统计fasta文件中每条染色体中的碱基数目
    linux中awk实现类sort u命令
    linux中输出匹配行的行号
    linux中如何统计文本字符的总个数
    java中类与方法
    linux 中同时统计文件的行数和列数
    类是对象的抽象定义,对象是类的具体实例。
    linux 中sed命令替换指定为此的字符
  • 原文地址:https://www.cnblogs.com/jyz/p/1437136.html
Copyright © 2020-2023  润新知