我正在创建一个“智能”组件库,可以进行通信。可以使用主控制器进程,其可以创建进程或启动包含通信器的服务。主设备为创建的实体分配端口号,然后可以使用http向其发送XML消息。我的问题是:假设主对象崩溃,并重新启动。我可以遍历服务和进程并匹配名称,但是如何恢复分配给子进程/服务的端口号?
我考虑将一个对列表 - 进程ID和端口号 - 写入一个隐藏文件,该文件可以在启动时重新加载,但因为进程ID不一定是唯一的(仅在进程本身的持续时间内)看似健壮。我可以从进程中检索端口号,因为我只能查询用于创建它的参数数组,但这对服务不起作用。有关每个孩子的端口号可以存放在哪里的任何想法,以便我可以恢复它?
答案 0 :(得分:0)
服务可以使用参数,您可以查询运行的进程以查找用于启动进程的参数(使用WMI)。
答案 1 :(得分:0)
我认为您使用的是WCF,在这种情况下,根据您的网络,WCF Discovery可能是一种选择。
Discovery API为使用WS-Discovery协议动态发布和发现Web服务提供了统一的编程模型。这些API允许服务发布自己和客户端以查找已发布的服务。一旦服务可被发现,该服务就能够发送通告消息以及监听和响应发现请求。可发现的服务可以发送Hello消息以通知他们到达网络和Bye消息以宣布他们离开网络。要查找服务,客户端会发送一个Probe请求,该请求包含网络上的特定条件,例如服务合同类型,关键字和范围。服务接收Probe请求并确定它们是否符合条件。如果服务匹配,则通过向客户端发送ProbeMatch消息以及联系服务所需的信息来响应。
更具体地说,在我看来,你正试图重新实现WCF Discovery Proxy。