2014-10-07 176 views
0

我是WCF的新手,我遇到了一个问题,我不知道如何解决它。通过WCF从客户端1到客户端2的通知

我有Windows服务应用程序侦听COM端口,和GUI WPF应用程序配置Windows服务应用程序。其中我的想法是发送通知到WPF应用程序,每当有东西进入COM端口,并可能将数据发送给WPF。

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

由于两个不同的客户端,我必须使用两个不同的ServiceContracts。其中一个ServiceContacts支持回调方法,其中一个不是,所以有两个不同的绑定。

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

请帮助我,谢谢。

+0

回调合约似乎是正确的方式。如果您遇到问题,则需要描述该问题。 “我知道有问题”不会回答。 – Tar 2014-10-07 17:38:57

+0

我对callback方法的定义是在serviceContract1中定义的,我需要从ServiceContract2方法中调用它。问题是我不能实现回调方法,因为我不能在该方法中获得正确的OperationContext(实现该方法的地方),并且当我调用回调时,它始终为空。我的问题是如何在Client2 ServiceContact方法中获取Client1 OperationContext。我的意见是,这是不可能的,但我WCF新手,所以我问:)。如果你现在明白问题,请帮忙。 :))) – user3506697 2014-10-07 17:50:09

+0

张贴一些代码并指出它出错的地方。另外我还不明白你在谈论什么和两个服务合同。将问题简化为核心。 – Tar 2014-10-07 19:29:37

回答

0

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

但是,在企业规模中,您将使用中间件解决方案,即WPF客户端订阅并获取其更新的单独“消息队列/总线”基础结构。如果没有人订阅,则将消息发送到/ dev/null。在任何情况下,“服务”都会将所有内容发布到公交车上。