2011-10-25 48 views
0

假設我想創建一個引用雙工服務(「ServiceDuplex」)的WCF WebHTTP服務(「ServiceREST」)。 ServiceDuplex要求某些回調成員的實現來傳遞從它請求的數據。例如,在ServiceDuplex上調用GetCustomers會觸發該服務上的一個方法,該方法通過回調「ReceiveCustomers」將客戶送回客戶端。在RESTful服務中使用WCF雙工服務

這就是說,假設我想要一個ServiceREST上的方法「GetSingleCustomer」。假設所有數據都是按需檢索(而不是在啓動後進行緩存),那麼我必須首先從ServiceDuplex調用「GetCustomers」,然後等待我的集合在我實現的回調中填充,然後才能搜索單個客戶我需要。

由於webHttp不支持對客戶端的回調,我不得不在我的GET(GetSingleCustomer)調用中使用類似於AutoResetEvent的東西,直到雙面打印回調填充集合。

對於我正在嘗試做的事情,還是我正在嘗試做的錯誤,以至於沒有創造出這樣的做法,是否存在「最佳做法」?

感謝您的幫助。

回答

0

保持簡單,ServiceDuplex並沒有完成所要做的事情,就像調用Async一樣,那麼爲什麼要在第一時間使用它......只是堅持只用於REST。

+0

我真的沒有選擇堅持只有REST。 ServiceDuplex已經存在,我需要它的數據。另外,爲什麼ServiceDuplex「沒有做它應該做的事情」? – Thelonias

+0

雙向通道用於在我們的方法中獲得異步行爲,使用REST服務鏈接它實際上是一個重載,它增加了獲取響應的時間並使Async調用無效,因爲您需要使它們與REST同步服務,我只會作爲最後一個資源來做,但這只是我的看法。 – Andresps2

+0

我已經與duplex或REST工作了一段時間,在我的公司我們有一個使用雙工的大項目,我的任務是製作一個小型iOS客戶端,我們有兩個選擇,可以集成兩個系統,或者創建REST從零開始的業務邏輯,最後一個是我們的選擇,它的工作非常好,但它是一個小型客戶端,如果我們必須重寫100%的雙工服務,情況會有所不同。我的2美分。 – Andresps2