适用于智能组件的 C# 可靠体系结构

本文关键字:体系结构 智能 组件 适用于 | 更新日期: 2023-09-27 18:35:50

我正在创建一个通信的"智能"组件库。可以使用主控制器进程,该进程可以创建进程或启动包含通信器的服务。创建的实体由主节点分配一个端口号,然后主节点可以使用 http 向其发送 XML 消息。我的问题是这样的:假设主对象崩溃,然后重新启动。我可以循环访问服务和进程并匹配名称,但如何恢复分配给子进程/服务的端口号?

我考虑过将一个对列表 - 进程 ID 和端口 # - 写入一个可以在启动时重新加载的隐藏文件,但由于进程 ID 不一定是唯一的(仅在进程本身的持续时间内),这似乎并不健壮。我可以从进程中检索端口号,因为我可以查询用于创建它的参数数组,但这不适用于服务。关于每个孩子的端口号可以存放在哪里以便我可以恢复它的任何想法?

适用于智能组件的 C# 可靠体系结构

服务可以使用参数,并且可以查询正在运行的进程以获取用于启动进程的参数(使用 WMI)。

我想您正在使用 WCF,在这种情况下,根据您的网络,WCF 发现可能是一种选择。

发现 API 为 使用 WS-Discovery 协议动态发布和发现 Web 服务提供了统一的编程模型。这些 API 允许服务自行发布,并允许客户端查找已发布的服务。一旦服务可被发现,该服务就能够发送公告消息以及侦听和响应发现请求。可发现的服务可以发送 Hello 消息以宣布它们到达网络,并发送 Bye 消息以宣布它们离开网络。若要查找服务,客户端会发送包含特定条件(如服务协定类型、关键字和网络上的作用域)的 Probe 请求。服务接收探测请求并确定它们是否与条件匹配。如果服务匹配,它将通过向客户端发送 ProbeMatch 消息来响应,其中包含联系服务所需的信息。

更具体地说,在我看来,您正在尝试重新实现 WCF 发现代理。