0

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

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

4

2 回答 2

0

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

Discovery API 为使用 WS-Discovery 协议的 Web 服务的动态发布和发现提供了统一的编程模型。这些 API 允许服务发布自己,并允许客户端查找已发布的服务。一旦服务变得可发现,该服务就能够发送通知消息以及侦听和响应发现请求。可发现服务可以发送 Hello 消息来宣布它们到达网络,并发送 Bye 消息来宣布它们离开网络。要查找服务,客户端会发送包含特定条件(例如服务合同类型、关键字和网络范围)的探测请求。服务接收探测请求并确定它们是否符合条件。如果服务匹配,

更具体地说,在我看来,您正在尝试重新实现WCF Discovery Proxy

于 2012-06-01T06:59:31.223 回答
0

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

于 2012-05-31T18:41:04.447 回答