c# - 将事件发送到所有工作站的最佳方式是什么

标签 c# wcf web-services tcp udp

我希望有人能指导我,因为我被困住了......我需要编写一个紧急广播系统,通知工作站紧急情况并在用户屏幕底部弹出一条小消息。这看起来很简单,但在多个子网上有大约 4000 个工作站。该系统需要几乎是实时的、轻量级的并且易于部署为 Windows 服务。

当我发现路由器不转发 UDP 广播数据包 x.x.x.255 时,问题就开始了。后来我在 VB6 中做了一个简单的测试 Hook 来捕获网络发送消息,但即使是那些也没有通过路由器。我还编写了一个简单的数据包嗅探器来过滤数据包,只发现网络数据包从未到达预期的目的地。

然后我查看并探索了通过 HTTP 使用 MSMQ,但这需要在目标工作站上安装 IIS。由于有这么多工作站,这将是一个主要的安全问题。

现在我已经完成了一个带有向订阅者发送事件的异步回调的网络服务。它在小范围内完美运行,但一旦超过 15 个订阅者,性能就会显着下降。轮询服务器并不是一个真正的选择,因为它会在服务器上产生负载(而且我也试过)

我需要你的帮助来指导我使用什么技术。有没有人对这么多客户使用 cometd 方式,或者我应该看看 WCF?

我正在使用 Visual C# 2005。请帮助我摆脱困境。

谢谢

最佳答案

考虑使用 WCF 回调机制和事件。有 good introduction朱瓦尔·洛伊 (Juval Lowy) 着。

另一种模式是实现blocking web-service calls .例如,这就是 GMail 聊天的工作方式。但是,您必须在此处处理 session 和超时。当客户端位于 NAT 和防火墙后面且无法直接访问时,它会起作用。但是对于内网的简单警报来说可能太复杂了。

关于c# - 将事件发送到所有工作站的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/377275/

相关文章:

asp.net - "Best Practice"/最喜欢的调用 Web 服务模式 (ASP.NET)

具有数据格式或模式的 C# DateTime.ToString

wcf - netsh 添加带有 http url 的 sslcert 是否仍然启用 ssl?

wcf - Azure WCF webrole/Worker 角色混淆..

android - Web 服务的最佳 RESTful 方法

javascript - 如何在 Protractor 测试中获取 Web 服务响应

c# - 在 C# 中从程序集及其依赖项创建实例

c# - 在方法中停止执行的最佳方法

c# - CsvHelper 从没有标题的文件中加载 DataTable 不工作

wcf - Dynamics CRM - 调用者未通过服务身份验证