进程之间的动态绑定

Posted

技术标签:

【中文标题】进程之间的动态绑定【英文标题】:dynamic binding between processes 【发布时间】:2014-06-16 18:46:58 【问题描述】:

我正在尝试创建一个非常模块化的系统。考虑到任何模块都不应该真正了解任何其他模块(每个模块都在自己的进程中运行)。

将会有另一个程序打开,并且能够判断这些模块将发送和接收什么(我已经大致介绍过)。

我目前遇到的问题,有没有办法让我能够在另一个进程或应用程序域中询问应用程序?并在后期将这些模块绑定在一起。

例如: 可以在运行时广播“X”的模块将被喜欢为可以接受“X”的模块。

这可能很模糊,如果是这样,请让我澄清我没有涵盖的任何内容。

现在,我只需要知道是否可以询问进程,如果可以,如何?我对此很陌生,但我最初的研究并没有让我走得太远。

【问题讨论】:

【参考方案1】:

我最近为个人家庭自动化系统建模了一个这样的系统。基本上,我希望能够让某些传感器(麦克风、相机等)广播他们拥有的东西,并让其他计算机或程序在需要时获取这些信息,而无需确切知道谁将获得编译时的数据。

如果这听起来像您正在寻找的东西,我会研究 Pub-Sub 风格的架构。

http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern

您并没有真正询问这种架构中的过程,但我认为您会得到类似的结果。基本上,您将拥有一个主要的发布-订阅服务器。

在上图中,客户端 2 和 3 “订阅”以接收特定类型的消息。服务器知道谁订阅了什么,因此当客户端 1 发送该消息时,服务器知道它需要将其路由到正确的客户端。

我希望这会有所帮助。

编辑:重新阅读您的问题后,我觉得您可能已经走到了这一步。也许你所需要的只是

http://msdn.microsoft.com/en-us/library/bb546102(v=vs.110).aspx

管道允许您在进程之间传递一些信息。您必须通过管道对数据进行序列化和反序列化,但这(与 pub-sub 架构相结合)应该可以满足您的需求。

【讨论】:

谢谢,有趣的是,这也适用于家庭系统。我希望能够创建模块而不需要知道服务器或其他模块的位置,但我会调查一下。谢谢 使用这种架构,任何一个模块都不需要知道任何其他模块的任何信息。它只需要知道它想要接收什么“类型”的数据。但是,每个模块都必须了解服务器,因为客户端模块需要告诉服务器他们关心某种(或多种)数据。 谢谢,我很可能会走上这条路

以上是关于进程之间的动态绑定的主要内容,如果未能解决你的问题,请参考以下文章

有关于多态和静态绑定与动态绑定的知识

C#怎么实现下拉框动态绑定数据

记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)

ORA-01841 :(full) year 必须在 -4713 和 +9999 之间,并且在使用 DBMS_SQL 绑定到动态 sql 时不能为 0

vue指令 v-bind 属性绑定 动态渲染组件

(十八)多态