C# 通过WCF从客户端1通知客户端2

C# 通过WCF从客户端1通知客户端2,c#,wpf,wcf,service,windows-services,C#,Wpf,Wcf,Service,Windows Services,我是WCF的新手,我有一个问题,我不知道如何解决它 我有Windows服务应用程序正在侦听COM端口,还有用于配置Windows服务应用程序的GUI WPF应用程序。其中我的想法是在每次有东西进入COM端口时向WPF应用程序发送通知,并可能将该数据发送给WPF 对于这两个客户端之间的通信,我使用WCF,对于将数据从WCF服务发送到WPF应用程序,我使用回调 由于两个不同的客户,我不得不使用两个不同的服务合同。其中一个ServiceContacts支持回调方法,另一个不支持,因此有两个不同的绑定

我是WCF的新手,我有一个问题,我不知道如何解决它

我有Windows服务应用程序正在侦听COM端口,还有用于配置Windows服务应用程序的GUI WPF应用程序。其中我的想法是在每次有东西进入COM端口时向WPF应用程序发送通知,并可能将该数据发送给WPF

对于这两个客户端之间的通信,我使用WCF,对于将数据从WCF服务发送到WPF应用程序,我使用回调

由于两个不同的客户,我不得不使用两个不同的服务合同。其中一个ServiceContacts支持回调方法,另一个不支持,因此有两个不同的绑定

当WS从COM端口获取数据时,是否有方法调用WPF应用程序上实现的回调方法。在WS上,我调用ServiceContract中为WS定义的代理方法,并在WCF服务中获取数据,但当我调用回调时,其始终为null。我知道OperationContext有问题,我知道问题是什么,但我不知道如何解决它,或者有什么办法解决它

请帮助我并感谢您。

如果您的WFP客户通常通过WCF呼叫“服务”,我认为双工WCF(即带回调的合同)是一种方法。您将在“服务”契约类(通常是其构造函数)中获得回调上下文,然后随时使用它将任何内容转发给WPF客户机。谷歌“双工WCF”


然而,在这种情况下,在企业范围内,您将使用中间件解决方案,即WPF客户端订阅并获取其更新的单独“消息队列/总线”基础设施。如果没有人订阅,消息将发送到/dev/null。“服务”在任何情况下都会将所有内容发布到总线上。

回调契约似乎是正确的方式。如果你有问题,你需要描述这个问题。“我知道有问题”不会给出答案。我对回调方法的定义是在serviceContract1中定义的,我从ServiceContract2方法调用它。问题是我无法实现回调方法,因为我无法在该方法中获得正确的OperationContext(实现该方法的位置),并且当我调用回调时,它始终为null。我的问题是如何在Client2 ServiceContact方法中获取Client1 OperationContext。我的意见是,这是不可能的,但我是WCF新手,所以我问:)。如果您现在理解了这个问题,请帮助。:)发布一些代码并指出哪里出错。而且我还是不明白你在说什么两份服务合同,为什么。简化问题的核心。我有一个服务和两个不同的客户端ws和wpf…ws正在侦听端口并将接收到的数据发送到服务…服务将数据发送到DB,如果wpf客户端是开放的,服务将数据转发到wpf…这就是计划…回调方法如果我理解得很好,可以用于“发送反馈信息”…我不需要反馈…我需要从ws-serviceContract中定义的方法调用wpf中实现的回调方法…这意味着我必须在ws-operation上下文中获取wpf操作上下文…我认为这是不可能的,但必须有一种方法来实现这一点…我仍然认为双工WCF(即带有回调的契约)如果您的WFP客户端通常通过WCF调用“服务”,那么这是一种方法。