使用单实例显示一个客户端在WCF C#中由其他客户端看到的任何更改

时间:2018-03-18 23:20:27

标签: c# wcf wcf-binding

这是我正在处理的项目的代码片段,它将多个客户端连接到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;
    }

1 个答案:

答案 0 :(得分:0)

  • 一种方法是使用双面合同

How to: Create a Duplex Contract

  

双工合约是可用的三种消息模式之一   Windows Communication Foundation(WCF)服务。另外两条消息   模式是单向的和请求 - 回复。双工合同包括   客户端和服务器之间的两个单向契约,而不是   要求方法调用是相关的。使用这种合同   当您的服务必须向客户查询更多信息时   明确提出客户端上的事件

  • 您也可以使用 Signalr

Introduction to SignalR

  

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

  • 最后,您只需轮询Wcf服务以获取最新更改信息

WFC Duplex Contracts 非常安全,是实现结果的可靠方式。 Signalr 是一种非常轻量级的方法,并且非常强大或安全。

在这种情况下,如果您不需要安全性并且只需要轻量级方法,则可以使用 Signalr