我有一个可能正在运行多个实例的应用程序。我有一个同时在所有实例上执行的任务。 我想安排一个操作系统任务来运行一个通过命名管道发送消息的小应用程序,我希望我的所有实例都在该管道上进行监听并完成他们的工作。 当我尝试运行第二次时,我尝试了WCF命名管道并得到了AddressAlreadyInUseException。
可行吗?是否有意义?我的目标是正确的解决方案吗? (并非我不需要向申请人发送回复)
答案 0 :(得分:2)
典型的方法是这样的:
'工人'不需要听管道或插座;您必须以不同方式配置它们,并将此配置传递给“负载均衡器”。通过监听“负载均衡器”,每个“工作人员”可以配置相同,只需要知道如何联系“负载均衡器”。
答案 1 :(得分:0)
Windows管道(如带有油,水或其他物品的真实管道)只有两端,一端是服务器,另一端是单个客户端。
单个管道上不能有多个客户端“侦听”,并且单个接收器将接收从管道发送的每个消息。
您可以让多个服务器都在同一管道名称上侦听管道连接,但管道名称只是一个集合点,而不是共享管道实例。连接到命名管道的每个客户端将通过单个管道实例连接到单个服务器(客户端无法选择)。没有可靠的方法来枚举所有侦听服务器。 (如果你想使用WCF,the way the named pipe binding creates and publishes the actual pipe name意味着,正如你所发现的,一次只有一个服务进程可以监听特定的服务URL)。
两种可能的方法:
我建议第二种方法不那么脆弱(邮件通信完全是一种方式,因此更难以诊断错误的范围)。