2010-04-20 157 views
1

我是WCF服務的新手。我已經與WCF一起工作了兩個多月,並熱愛它的功能。我在Windows服務中使用自託管的WCF。綁定是netTCP,因爲客戶端和服務在同一臺機器上。我的通信是雙工,我正在使用WCF會話。有了這些功能,我的應用程序的設計需求之一是UI應始終連接到服務 - 我在我的UI中使用一個單獨的線程來始終輪詢連接狀態,並重新創建並打開通道,以防萬一到故障狀態。由於我有來自服務的異步回叫,客戶端應該始終連接。這裏有幾個問題:自我託管WCF服務上的WCF和客戶端通信

  1. 是否可以使用自主機技術知道客戶端和服務在同一臺機器上?我使用WCF來簡化進程間通信。

  2. 從客戶端保持此活動線程還是應該使用其他一些技術是否合理?

我想在使用和配置WCF方面做得更好。有自己託管的WCF服務的好書或在線閱讀材料嗎?

請指教。

感謝,

Subbu

回答

2

我認爲這是絕對沒使用自託管與WCF。例如,我已經實現了許多託管在Windows服務中的服務。 我假設你正在討論在同一臺機器上的不同進程中託管的客戶端和服務器?如果是這樣,那麼理想情況下,您應該在綁定中使用二進制命名管道。

如果客戶端和服務器上和物理上在同一個進程,那麼你可以考慮使用類似羅馬吻的空交通運輸,以減少序列化的開銷。他CodeProject上的文章可以在這裏找到:http://www.codeproject.com/KB/WCF/NullTransportForWCF.aspx

要回答第2點,我提出一個替代辦法,我的回答另一個問題Stackover:WCF net.tcp server disconnects - how to handle properly on client side?

希望這有助於。

+0

是的,wcf服務和客戶端在兩個獨立的進程上。由於兩個進程相互通信,因此我承載了一個WCF服務,並且由於需要異步通信而在兩端都使用wcf客戶端。我正在使用net tcp綁定。 有時候,我得到一個異常從WCF客戶說:「與服務器的連接中斷.....超時2:59:999 ......」當我檢查客戶端的狀態,其在實際開放狀態。這怎麼可能? net tcp綁定是否與此有關? – Subbu 2010-07-23 16:17:29