2012-10-08 113 views
12

需要一些幫助來弄清楚我在找什麼。基本上,我需要一個服務,其中Server將一堆XML轉儲到一個流中(在一段時間內),並且每次發生轉儲時N客戶端讀取轉儲的數量。WCF REST推送流服務

:每次1000股之一的5美分上升,服務轉儲一些XML成流。連接應用程序從流中獲取信息。

我不認爲連接會永遠關閉,因爲需要讀取新數據流。

這需要遵循WCF REST標準,有沒有我正在尋找的東西?最後,它只是一個不間斷的數據流。

更新:看起來服務需要是多部分/混合內容類型。

+0

你在尋找類似Twitter的流API。 https://stream.twitter.com/1/statuses/sample.json –

+0

是的,這是我正在尋找的。但是從WCF/REST的角度來看。 – Dave

回答

6

我正在使用的應用程序具有類似的體系結構,我打算使用SignalR使用長輪詢技術將更新推送到客戶端。 我還沒有實現它,所以我不能發誓它會爲你工作,但他們的文檔似乎很有前途: 更新:我已經實現了這一點,它的工作得很好。

將數據從服務器推送到客戶端(不只是瀏覽器客戶端) 一直是一個棘手的問題。 SignalR讓它變得簡單, 可以爲您處理所有繁重的工作。

斯科特Hansleman對主題a good blog,有一個有用的文章(包括WCF,REST和SignalR)位置:http://www.codeproject.com/Articles/324841/EventBroker

3

而不是使用WCF,你看看ASP.NET MVC WebAPI

有關在WebAPI中使用PushStreamContent的更多信息,Henrik通過示例(在'Push Content'標題下)有一個不錯的blog

2

你考慮過archived Atom feeds嗎?他們是100%RESTful(hypermedia controls and all),最重要的是,他們是非常可擴展的,他們是

具體而言,歸檔文檔永遠不會更改,因此您可以將緩存期限設置爲1年或更長時間。訂閱文檔是所有最新事件發生並且不斷變化的地方,但通過適當的HTTP緩存標題,您可以返回304 Not Modified,前提是每個客戶端請求之間沒有任何變化。此外,如果您的服務具有自然時間分辨率,則可以設置max-age以利用該分辨率。舉例來說,如果你的數據有20分鐘的分辨率,可以包括在簽約文檔響應下面的頭:

Cache-Control: max-age=1200 

這樣你可以讓你的緩存做大部分的起伏升降和客戶端可以查詢申購儘可能多地記錄文檔,而不會將您的服務帶到膝蓋上。