首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从windows-service接收通知

从windows-service接收通知
EN

Stack Overflow用户
提问于 2017-09-28 17:51:41
回答 6查看 3K关注 0票数 4

我在C#中构建了两个部分的软件:一个是做一些事情的Windows服务,另一个是发送命令到服务的托盘应用程序,也包括从服务接收消息并通知用户。

对于这种通信,我在windows服务中创建了一个WCF服务器(NamedPipes),然后Tray连接并“订阅”以接收消息。

为了让Tray从服务接收通知,它们之间的连接是DuplexChannel。在DuplexChanel中,客户机调用服务器,服务器可以在客户机上执行方法。

但现在我明白了,DuplexChannel并不是真正的目标(我指的是从客户端长期监听):默认情况下,它是在一段时间不活动之后关闭的,在我设置了一个生产模式之后,它在很长一段时间后或者可能是睡眠模式之后关闭,等等。我放弃了试图解决它所带来的问题(也许我错了)。

问题是:

从windows向同一台PC上的客户端软件发送消息的最佳方法是什么? A.在很长一段时间内(只要计算机运行) B.以允许多个客户端(因为被启动几次,每个用户一次)的方式。

EN

回答 6

Stack Overflow用户

发布于 2017-10-05 15:50:56

您也可以使用MSMQ。但WCF是一条路。不要被这个有点复杂的概念吓跑了,WCF会帮你处理重担的。最大的挑战是配置,但最终WCF只是另一个通信渠道。我推荐和这个教程

票数 1
EN

Stack Overflow用户

发布于 2017-10-06 14:25:18

  1. 我认为使用WCF可以开发一个Websocket服务器
  2. 此外,您还可以使用轮询技术,其中客户机经常要求(呼叫)服务器获取任何新闻(轮询).both、长轮询和短轮询可能是有用的。
  3. 在服务器上开发tcp lisenter,在客户端开发tcp客户端
票数 1
EN

Stack Overflow用户

发布于 2017-10-09 09:29:07

海事组织,这是一个真正的肮脏的事情做WCF,即使我已经遇到过几次这个问题。就我个人而言,我通常更喜欢在类似的场景中使用TCP套接字与ProtoBuf一起进行(反)序列化。对于一些简单的场景来说,这会很好,但是对于很多客户来说,事情会很快变得相当严峻。

https://csharphardcoreprogramming.wordpress.com/2014/01/31/protocol-buffers-part-3-advanced-tcp-networking/有一个不错的例子。

在复杂的场景中,您可能需要一些自动处理许多不同问题的东西,如重新连接、轮询、池等。此外,如果您对UI使用WPF,那么所有事情都需要发生异步,您必须在正确的线程中处理事件,这是一件很痛苦的事情。如果您有这样的场景,我会认真考虑使用https://www.asp.net/signalr

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46475462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档