2011-03-18 46 views
0

從架構上講,您如何整合來自多個OData/WCF服務的數據而不犧牲性能?我在服務上暴露了一個EF上下文,並希望在要查詢的對象中具有靈活性。管理多個OData/WCF服務

假設用戶啓動一個查詢,要求聯繫分佈在全球各地的獨立服務器上運行的多個單獨的OData服務。隨着x的增加,我認爲接收結果所花費的時間也會增加。

有誰知道如何通過緩存或臨時中央數據庫等提高性能?

目前,我正在按照計劃間隔聯繫所有OData服務,並針對此中央數據庫啓動查詢,從而將數據整合到一個SQL數據庫中。如果可能,我正在尋找更好,更輕量級的解決方案。

在此先感謝。

回答

1

是否可以公開一種特定於查詢類型的分層Web服務運行?不知道你是否在這裏談論一個應用程序。

爲了減少延遲時間,您可以異步地請求來自這些不同服務的數據(以便可以同時執行多個呼叫)。這將有助於解決您對增加的服務數量的擔憂。爲了避免客戶端的代碼複雜性,請使用這個新的分層服務。

如果性能成爲問題,請刪除此分層服務,但保留對客戶端服務的併發調用。

如果由於在服務或其他服務之間發送了邏輯數據鏈而無法同時執行這些操作,那麼恐怕有很多可以幫助您將它們合併 - 除了自己更改這些服務或執行你建議 - 自己收集和緩存數據。

更新:只是爲了澄清,是的,它只是另一種服務,爲所有分離的服務對你說話,你的客戶端/應用程序將簡單地使用這一服務。服務本身可以根據您的要求封裝併發呼叫和結果緩存。因爲它是爲了報告,如果數據的年齡或稍微過時的可能性不是問題,或者數據本質上基本上是靜態的,我會同意大塊數據的緩存想法。

+0

通過分層服務,你意味着基本上是一個單一的服務,充當多個網關,對嗎?這將工作。我可以異步查詢小批量的數據,然後對於大批量可能異步建立緩存在頁面加載提前,然後查詢該緩存?它將成爲一個查詢/報告生成的asp.net網站。 – 2011-03-18 22:34:45