如何用进程B观察进程A
How to Observe Process A with Process B
如果您能为我指出正确的方向,请提前致谢。我是一名(非常)新手程序员和 Linux 用户,对于我正在想象的软件应用程序的一些建议,我将不胜感激。
背景:基本思想是应用程序 "Middleware" 作为进程在 Linux 上运行,并在远程连接的 "Users" 和本地安装的 "Apps." 来自用户的数据将采用应用程序特定命令的形式(例如 "read message 95"),并且通常相对较短。另一方面,应用程序返回给用户的数据可以是任何东西,从单个字符到几屏全文。中间件的工作是管理多个同时发生的用户连接;识别任意数量的向中间件注册的应用程序,以通知用户命令;并且,在连接的用户和注册的应用程序之间路由纯文本数据。
应用程序可以是任何使用纯文本通信的东西:实时聊天程序、电子邮件服务器、冒险游戏、股票市场模拟器、回合制棋盘游戏、公告板等。每个 App 本身就是一个 运行 进程,管理自己的持久状态。因此,例如,应用程序流程可能如下所示:
- 管理员运行中间件程序,并告诉它在特定端口(例如 4000)上侦听用户连接。此时,没有注册的应用程序,也没有连接的用户。 (如果此时用户要连接,用户将收到通知,没有可用的应用程序。)
- 管理员将特定应用程序(例如 "Chat")作为单独的进程运行,指示应用程序向中间件注册为可用应用程序。
- 用户远程连接到端口 4000 上的中间件,输入登录凭据,然后从已注册应用列表中选择 "Chat"。
- 中间件在内部将用户连接到 "Chat"。
- 用户类型"hello";中间件将 "hello" 传递给 "Chat"; "Chat" 处理用户的输入,并通过中间件将适当的回复(例如 "User: hello")发送回发送用户 and/or 任意数量的其他连接用户。
我的问题:在这种情况下,在中间件和应用程序之间传递数据的最佳 technology/approach 是什么?将应用程序注册为中间件的观察者以便适当地通知用户命令的适当方法是什么?
再次感谢,抱歉太长了!
对我来说,它就像一个 Publisher/Subscriber 架构(如果可以的话,在它之上构建一个管理应用程序)。你所说的 "CHAT LIST" 就像聊天室,换句话说,是频道。这些频道可以由管理员创建,您的应用程序可以向其发送(发布)消息。然后,每条消息都会传送给该频道的所有其他订阅者(因此您的应用程序也可以订阅现有频道)。
这种通信方式用于不同用途的不同应用程序的音调中。从简单的聊天应用到分布式 micro-systems.
有很多publisher/subscriberservices/applications你可以选择。这些服务中的大多数都提供 TEXT 和 BINARY 消息传递。其中一些具有 REQUEST/REPLY 之类的功能(您可以回复发布到频道中的消息),但您可以轻松地在自己的应用层中自己实现它(回复系统)。
告诉选择哪个 MQ(消息队列)或 PUB/SUB 系统只是基于意见,没有用。但为了帮助您入门,请检查 NATS , MQTT , RabbitMQ
我一直在自己的应用程序中使用 nats 在 micro-systems 和我们系统的另一个聊天应用程序之间传递数据。
如果您能为我指出正确的方向,请提前致谢。我是一名(非常)新手程序员和 Linux 用户,对于我正在想象的软件应用程序的一些建议,我将不胜感激。
背景:基本思想是应用程序 "Middleware" 作为进程在 Linux 上运行,并在远程连接的 "Users" 和本地安装的 "Apps." 来自用户的数据将采用应用程序特定命令的形式(例如 "read message 95"),并且通常相对较短。另一方面,应用程序返回给用户的数据可以是任何东西,从单个字符到几屏全文。中间件的工作是管理多个同时发生的用户连接;识别任意数量的向中间件注册的应用程序,以通知用户命令;并且,在连接的用户和注册的应用程序之间路由纯文本数据。
应用程序可以是任何使用纯文本通信的东西:实时聊天程序、电子邮件服务器、冒险游戏、股票市场模拟器、回合制棋盘游戏、公告板等。每个 App 本身就是一个 运行 进程,管理自己的持久状态。因此,例如,应用程序流程可能如下所示:
- 管理员运行中间件程序,并告诉它在特定端口(例如 4000)上侦听用户连接。此时,没有注册的应用程序,也没有连接的用户。 (如果此时用户要连接,用户将收到通知,没有可用的应用程序。)
- 管理员将特定应用程序(例如 "Chat")作为单独的进程运行,指示应用程序向中间件注册为可用应用程序。
- 用户远程连接到端口 4000 上的中间件,输入登录凭据,然后从已注册应用列表中选择 "Chat"。
- 中间件在内部将用户连接到 "Chat"。
- 用户类型"hello";中间件将 "hello" 传递给 "Chat"; "Chat" 处理用户的输入,并通过中间件将适当的回复(例如 "User: hello")发送回发送用户 and/or 任意数量的其他连接用户。
我的问题:在这种情况下,在中间件和应用程序之间传递数据的最佳 technology/approach 是什么?将应用程序注册为中间件的观察者以便适当地通知用户命令的适当方法是什么?
再次感谢,抱歉太长了!
对我来说,它就像一个 Publisher/Subscriber 架构(如果可以的话,在它之上构建一个管理应用程序)。你所说的 "CHAT LIST" 就像聊天室,换句话说,是频道。这些频道可以由管理员创建,您的应用程序可以向其发送(发布)消息。然后,每条消息都会传送给该频道的所有其他订阅者(因此您的应用程序也可以订阅现有频道)。
这种通信方式用于不同用途的不同应用程序的音调中。从简单的聊天应用到分布式 micro-systems.
有很多publisher/subscriberservices/applications你可以选择。这些服务中的大多数都提供 TEXT 和 BINARY 消息传递。其中一些具有 REQUEST/REPLY 之类的功能(您可以回复发布到频道中的消息),但您可以轻松地在自己的应用层中自己实现它(回复系统)。
告诉选择哪个 MQ(消息队列)或 PUB/SUB 系统只是基于意见,没有用。但为了帮助您入门,请检查 NATS , MQTT , RabbitMQ
我一直在自己的应用程序中使用 nats 在 micro-systems 和我们系统的另一个聊天应用程序之间传递数据。