进程间通信 您所在的位置:网站首页 剪贴板提供了文件内部或文件之间进行信息交换的手段 进程间通信

进程间通信

2023-12-30 16:35| 来源: 网络整理| 查看: 265

进程间通信 项目 06/13/2023

Windows 操作系统提供了促进应用程序之间的通信和数据共享的机制。 这些机制启用的活动统称为 IPC) (进程间通信 。 某些形式的 IPC 促进多个专业流程之间的分工。 其他形式的 IPC 促进网络上计算机之间的分工。

通常,应用程序可以使用分类为客户端或服务器的 IPC。 客户端是从其他某个应用程序或进程请求服务的应用程序或进程。 服务器是响应客户端请求的应用程序或进程。 许多应用程序充当客户端和服务器,具体取决于具体情况。 例如,字处理应用程序可以充当客户端,从充当服务器的电子表格应用程序请求汇总的制造成本表。 反过来,电子表格应用程序可能充当客户端,从自动清单控制应用程序请求最新的清单级别。

确定应用程序将受益于 IPC 后,必须决定使用哪些可用的 IPC 方法。 应用程序可能会使用多个 IPC 机制。 这些问题的解答决定了应用程序是否可以通过使用一个或多个 IPC 机制受益。

应用程序是否能够与网络上其他计算机上运行的其他应用程序通信,或者应用程序是否足以仅与本地计算机上的应用程序通信? 应用程序是否能够与可能在不同的操作系统 ((例如 16 位 Windows 或 UNIX) )上运行的其他计算机上运行的应用程序通信? 应用程序的用户是否必须选择与应用程序通信的其他应用程序,或者应用程序能否隐式地找到其合作伙伴? 应用程序应以一般方式与许多不同的应用程序通信,例如允许与任何其他应用程序执行剪切和粘贴操作,或者其通信要求应限制为与特定其他应用程序的一组受限交互? 性能是否是应用程序的关键方面? 所有 IPC 机制都包含一定的开销。 应用程序应是 GUI 应用程序还是控制台应用程序? 某些 IPC 机制需要 GUI 应用程序。

Windows 支持以下 IPC 机制:

剪贴板 COM 数据复制 DDE 文件映射 Mailslots 管道 RPC Windows 套接字 使用 IPC 剪贴板

剪贴板充当应用程序之间数据共享的中央存储。 当用户在应用程序中执行剪切或复制操作时,应用程序会将所选数据以一种或多种标准或应用程序定义的格式放在剪贴板上。 然后,任何其他应用程序都可以从剪贴板检索数据,从其理解的可用格式中进行选择。 剪贴板是一种非常松散耦合的交换介质,应用程序只需就数据格式达成一致。 应用程序可以驻留在同一台计算机上,也可以驻留在网络上的不同计算机上。

关键点: 所有应用程序都应支持其理解的数据格式的剪贴板。 例如,文本编辑器或字处理器至少应该能够生成和接受纯文本格式的剪贴板数据。 有关详细信息,请参阅 剪贴板。

使用 COM for IPC

使用 OLE 的应用程序管理 复合文档,即由来自各种不同应用程序的数据组成的文档。 OLE 提供的服务使应用程序能够轻松地调用其他应用程序进行数据编辑。 例如,使用 OLE 的字处理器可以嵌入电子表格中的图形。 用户可以通过选择嵌入的图表进行编辑,从字处理器中自动启动电子表格。 OLE 负责启动电子表格并显示图形以供编辑。 当用户退出电子表格时,图形将在原始字处理器文档中更新。 电子表格似乎是字处理器的扩展。

OLE 的基础是组件对象模型 (COM) 。 使用 COM 的软件组件可以与各种其他组件通信,即使是尚未编写的组件。 组件作为对象和客户端进行交互。 分布式 COM 扩展 COM 编程模型,使其跨网络工作。

关键点: OLE 支持复合文档,并使应用程序能够包含嵌入或链接的数据,这些数据在选择后会自动启动另一个应用程序进行数据编辑。 这使应用程序可由使用 OLE 的任何其他应用程序进行扩展。 COM 对象通过一个或多个相关函数集(称为 接口)提供对对象数据的访问。 有关详细信息,请参阅 COM 和 ActiveX 对象服务。

使用 IPC 的数据复制

数据复制使应用程序能够使用 WM_COPYDATA 消息将信息发送到另一个应用程序。 此方法要求发送应用程序和接收应用程序之间进行协作。 接收应用程序必须知道信息的格式并能够识别发件人。 发送应用程序无法修改任何指针引用的内存。

关键点: 数据复制可用于使用 Windows 消息传送将信息快速发送到另一个应用程序。 有关详细信息,请参阅 数据复制。

将 DDE 用于 IPC

DDE 是一种协议,使应用程序能够以各种格式交换数据。 应用程序可以使用 DDE 进行一次性数据交换或持续交换,其中应用程序在新数据可用时相互更新。

DDE 使用的数据格式与剪贴板使用的数据格式相同。 可将 DDE 视为剪贴板机制的扩展。 剪贴板几乎始终用于对用户命令的一次性响应,例如从菜单中选择“粘贴”命令。 DDE 通常也由用户命令启动,但它通常无需进一步的用户交互即可继续工作。 还可以为具有更紧密耦合通信要求的应用程序之间的特殊用途 IPC 定义自定义 DDE 数据格式。

DDE 交换可以在同一台计算机或网络上不同计算机上运行的应用程序之间发生。

关键点: DDE 不如较新的技术那么高效。 但是,如果其他 IPC 机制不适用,或者必须与仅支持 DDE 的现有应用程序进行交互,仍然可以使用 DDE。 有关详细信息,请参阅 动态数据交换 和 动态数据交换管理库。

使用 IPC 的文件映射

文件映射 使进程能够将文件的内容视为进程地址空间中的内存块。 该过程可以使用简单的指针操作来检查和修改文件的内容。 当两个或更多个进程访问同一个文件映射时,每个进程都会在其自己的地址空间中接收一个指向内存的指针,可用于读取或修改文件的内容。 进程必须使用同步对象(如信号灯)来防止多任务环境中的数据损坏。

可以使用文件映射的特殊情况在进程之间提供 命名共享内存 。 如果在创建文件映射对象时指定系统交换文件,则会将文件映射对象视为共享内存块。 其他进程可以通过打开相同的文件映射对象来访问同一内存块。

文件映射非常高效,还提供操作系统支持的安全属性,可帮助防止未经授权的数据损坏。 文件映射只能在本地计算机上的进程之间使用;它不能通过网络使用。

关键点: 文件映射是同一计算机上的两个或多个进程共享数据的有效方法,但必须在进程之间提供同步。 有关详细信息,请参阅 文件映射 和 同步。

将 Mailslot 用于 IPC

Mailslot 提供单向通信。 创建 mailslot 的任何进程都是 mailslot 服务器。 其他进程(称为 mailslot 客户端)通过向 mailslot 服务器写入邮件向其 mailslot 服务器发送邮件。 传入邮件始终追加到 mailslot。 mailslot 将保存邮件,直到 mailslot 服务器读取邮件。 进程可以是 mailslot 服务器和 mailslot 客户端,因此可以使用多个 mailslot 实现双向通信。

mailslot 客户端可以将邮件发送到其本地计算机上的 mailslot、另一台计算机上的 mailslot,或者发送到指定网络域中所有计算机上具有相同名称的所有邮件图。 广播到域上所有邮件图的邮件不能超过 400 字节,而发送到单个 mailslot 的邮件仅受 mailslot 服务器在创建 mailslot 时指定的最大邮件大小的限制。

关键点: Mailslot 为应用程序提供了一种简单的方法来发送和接收短消息。 它们还允许跨网络域中的所有计算机广播消息。 有关详细信息,请参阅 Mailslots。

使用用于 IPC 的管道

双向通信有两种类型的管道:匿名管道和命名管道。 匿名管道 使相关进程能够相互传输信息。 通常,匿名管道用于重定向子进程的标准输入或输出,以便它可以与其父进程交换数据。 若要在双工操作) (双向交换数据,必须创建两个匿名管道。 父进程使用其写入句柄将数据写入一个管道,而子进程使用其读取句柄从该管道读取数据。 同样,子进程将数据写入另一个管道,父进程从中读取数据。 匿名管道不能通过网络使用,也不能在不相关的进程之间使用。

命名管道 用于在不是相关进程的进程之间以及不同计算机上的进程之间传输数据。 通常,命名管道服务器进程会创建一个具有已知名称或要与其客户端通信的名称的命名管道。 知道管道名称的命名管道客户端进程可以打开其另一端,但受命名管道服务器进程指定的访问限制的约束。 服务器和客户端都连接到管道后,可以通过对管道执行读取和写入操作来交换数据。

关键点: 匿名管道提供了一种有效方法,用于将标准输入或输出重定向到同一计算机上的子进程。 命名管道提供了一个简单的编程接口,用于在两个进程之间传输数据,无论它们驻留在同一台计算机上还是通过网络传输数据。 有关详细信息,请参阅 管道。

使用 RPC for IPC

RPC 使应用程序能够远程调用函数。 因此,RPC 使 IPC 像调用函数一样简单。 RPC 在单台计算机或网络上不同计算机上的进程之间运行。

Windows 提供的 RPC 符合 Open Software Foundation (OSF) 分布式计算环境 (DCE) 。 这意味着使用 RPC 的应用程序能够与运行与支持 DCE 的其他操作系统的应用程序通信。 RPC 自动支持数据转换,以考虑不同的硬件体系结构以及不同环境之间的字节排序。

RPC 客户端和服务器紧密耦合,但仍保持高性能。 系统广泛使用 RPC 来促进操作系统不同部分之间的客户端/服务器关系。

关键点: RPC 是一个函数级接口,支持自动数据转换和与其他操作系统通信。 使用 RPC,可以创建高性能、紧密耦合的分布式应用程序。 有关详细信息,请参阅 Microsoft RPC 组件。

使用适用于 IPC 的 Windows 套接字

Windows 套接字是一个与协议无关的接口。 它利用基础协议的通信功能。 在 Windows 套接字 2 中,套接字句柄可以选择性地用作标准文件 I/O 函数的文件句柄。

Windows 套接字基于 Berkeley Software Distribution (BSD) 首次推广的套接字。 使用 Windows 套接字的应用程序可以与其他类型的系统上的其他套接字实现进行通信。 但是,并非所有传输服务提供商都支持所有可用选项。

关键点: Windows 套接字是一种独立于协议的接口,能够支持当前和新兴的网络功能。 有关详细信息,请参阅 Windows 套接字 2。

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有