我在C#中构建了两个部分的软件:一个是做一些事情的Windows服务,另一个是发送命令到服务的托盘应用程序,也包括从服务接收消息并通知用户。
对于这种通信,我在windows服务中创建了一个WCF服务器(NamedPipes),然后Tray连接并“订阅”以接收消息。
为了让Tray从服务接收通知,它们之间的连接是DuplexChannel。在DuplexChanel中,客户机调用服务器,服务器可以在客户机上执行方法。
但现在我明白了,DuplexChannel并不是真正的目标(我指的是从客户端长期监听):默认情况下,它是在一段时间不活动之后关闭的,在我设置了一个生产模式之后,它在很长一段时间后或者可能是睡眠模式之后关闭,等等。我放弃了试图解决它所带来的问题(也许我错了)。
问题是:
从windows向同一台PC上的客户端软件发送消息的最佳方法是什么? A.在很长一段时间内(只要计算机运行) B.以允许多个客户端(因为被启动几次,每个用户一次)的方式。
发布于 2017-10-05 15:50:56
发布于 2017-10-06 14:25:18
发布于 2017-10-09 09:29:07
海事组织,这是一个真正的肮脏的事情做WCF,即使我已经遇到过几次这个问题。就我个人而言,我通常更喜欢在类似的场景中使用TCP套接字与ProtoBuf一起进行(反)序列化。对于一些简单的场景来说,这会很好,但是对于很多客户来说,事情会很快变得相当严峻。
在复杂的场景中,您可能需要一些自动处理许多不同问题的东西,如重新连接、轮询、池等。此外,如果您对UI使用WPF,那么所有事情都需要发生异步,您必须在正确的线程中处理事件,这是一件很痛苦的事情。如果您有这样的场景,我会认真考虑使用https://www.asp.net/signalr。
https://stackoverflow.com/questions/46475462
复制相似问题