2011-08-23 67 views
1

我期待實現一個服務(web/windows,.net),該服務維護可用服務的列表,並可根據請求的性質或類型提供端點。然後請求者可以將實際的工作請求傳遞給提供的端點。實際的工作請求可能包含非常大的數據塊(從10MB到可能超過GB)。Web服務提供者路由

WCF路由服務聽起來像一個完美的結合,但事實並非如此,因爲它需要實際的工作請求通過它,創建了路由服務的瓶頸(整個問題是要讓系統成爲能夠擴展)。如果我有更小的消息,WCF路由將毫無疑問。

那裏有什麼符合法案的嗎?最好基於.NET/Windows的?

回答

0

你的意思是因爲請求阻止工作?

可以使用OneWayOperationContract來創建異步服務,以便不阻塞請求池。

[ServiceContract] 
interface IMyContract 
{ 
    [OperationContract(IsOneWay = true)] 
    void DoWork() 
} 

更新

我想明白你的問題現在好了,你正在尋找負載分配到不同的服務器,以避免請求瓶頸,由於流量負載(基於內容的優選地分佈)。

我會說MVC Routing確實是這個理想選擇。您可以利用的功能之一是翻轉功能。您實際上可以定義多個備份端點,並且在出現故障的情況下,它會自動轉到下一個端點。有一個很好的介紹如何工作here

這裏還有一篇很好的文章,講述了使用相同原理的WCF負載均衡。它爲round robin filter實現提供了2個解決方案,允許您對服務請求進行負載均衡(即使在開始時他說他支持負載平衡的一般答案是因實現原因而不是)。

如果您擔心所有通過一臺服務器的請求路由並仍然成爲瓶頸,那麼請考慮web負載均衡器。這是相同的情況。坐在中間轉發數據包不需要太多的工作,並且他們沒有問題處理大量的流量。我認爲這不是IMO的問題。

+0

不是因爲他們明確阻止工作,而是因爲執行路由的服務器將不得不處理整個大消息內容。在高峯時段,這是一個可笑的數據量和請求數量。 – StingyJack

+0

有你 - 更新了答案。 – TheCodeKing

相關問題