2014-10-07 186 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。在任何情況下,「服務」都會將所有內容發佈到公交車上。