【问题标题】:.Net WebSockets in windows ServicesWindows服务中的.Net WebSockets
【发布时间】:2023-03-26 02:53:02
【问题描述】:

我正在尝试使用 Web 套接字来允许不同机器上的两个 Windows 服务来回传递数据。我发现的几乎所有示例或信息都是关于使用 Web 套接字进行客户端/服务器端通信的。我无法弄清楚如何设置它。我曾考虑将 WebSocketHost 作为 Microsoft.ServiceModel.WebSockets 的一部分,但我不确定如何将其绑定到本地端口而不是 URL。

大家有什么建议吗

谢谢

【问题讨论】:

    标签: c# wcf websocket windows-services


    【解决方案1】:

    我正在尝试使用 Web 套接字来允许不同机器上的两个 Windows 服务来回传递数据。

    您可以使用您找到的 WebSockets 在两台机器上打开套接字。这些示例提到了客户端和服务器,因为这是典型的用法,但 API 并不关心。只要每一方都有一个监听器和一个发送器,它们就可以进行通信。

    但是我想提一下,这并不像听起来那么简单,因为两台机器并不总是可用的。有时一个或另一个很忙,或者网络被阻塞或发生其他事情,或者监听器太忙而无法立即响应,所以你最终需要在双方排队。

    如果您正在执行基于流程的操作,其中一方告诉另一方“我想要 X”,并且这是一个像生成文档这样的大操作,我发现在数据库中构建队列并折腾更有弹性那里的请求,然后等待对方更新记录说它已经完成。

    如果它们是更小、更快的请求,如果你有 MSMQ,它会更合适。

    但是回到您最初的问题,如果您想使用它,任何客户端-服务器示例都应该可以正常工作。 API 不在乎。

    【讨论】:

      【解决方案2】:

      您可以使用 SignalR Self-Host,您真的不想创建自己的 WebSockets 框架,因为这需要很长时间。 这是有关如何在 Windows 服务中启动 OWIN 服务器的链接。 Hosting WebAPI using OWIN in a windows service 以及如何在自主机中设置 signalR Tutorial: SignalR Self-Host

      【讨论】:

        【解决方案3】:

        您可以使用内存映射文件来完成此操作。

        Inter-Process Communication with Memory-Mapped Files

        【讨论】:

        • 我不相信内存映射文件在网络上工作,因为没有共享内存。 OP 指定“在不同的机器上”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-15
        相关资源
        最近更新 更多