【问题标题】:Show any changes made by one client to be seen by other clients in WCF C# using Single instance使用单个实例在 WCF C# 中显示一个客户端所做的任何更改以供其他客户端查看
【发布时间】:2018-03-18 23:20:26
【问题描述】:

这是我正在处理的项目中的代码的 sn-p,它让多个客户端连接到 WCF 服务(主机),主机用于检测对服务库数据库所做的任何更改并显示给每个客户端所做的更改,它显示更改的值,进行更改的客户端的 IP 地址。

    private void RaisedPropertyChanged(string prop)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
    public string GetIP()
    {
        OperationContext context = OperationContext.Current;
        MessageProperties prop = context.IncomingMessageProperties;
        RemoteEndpointMessageProperty endpoint =
           prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
        string ip = endpoint.Address;
        Console.WriteLine("Client Ip" + ip);

        return ip;
    }

【问题讨论】:

  • 你的代码现在做什么?你想让它做什么呢?
  • 它不会向其他连接的客户端显示客户端信息(已更改的值),而是继续解决问题。

标签: c# wcf wcf-binding


【解决方案1】:
  • 一种方法是使用双工合同

How to: Create a Duplex Contract

双工合同是三种可用的消息模式之一 Windows 通信基础 (WCF) 服务。另外两条消息 模式是单向和请求-回复。双重合同包括 客户端和服务器之间的两个单向合约,并且不 要求方法调用是相关的。使用这种合同 当您的服务必须向客户端查询更多信息或 在客户端显式引发事件

  • 您也可以使用 Signalr

Introduction to SignalR

ASP.NET SignalR 是一个供 ASP.NET 开发人员使用的库,可简化 向应用程序添加实时 Web 功能的过程。 实时网络功能是让服务器代码推送的能力 内容可用时立即发送给连接的客户端,而不是 而不是让服务器等待客户端请求新数据。

  • 最后,您可以轮询 Wcf 服务以获取上次更改信息

WFCDuplex Contracts 是一种非常安全可靠的方式来实现您的结果。 Signalr 是一种非常轻量级的方法,没有那么健壮或安全。

在这种情况下,如果您不需要安全性而只需要一种轻量级的方法,则倾向于使用 Signalr

【讨论】:

  • 谢谢你的链接,我已经知道怎么做
  • @EdwinKaburu 如果这有助于确保您投票并标记为正确答案。或者,如果您发现了不同的方法,请考虑编写自己的答案并将其标记为正确。它可以帮助其他有类似问题的人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
相关资源
最近更新 更多