2010-06-02 124 views
0

我處理肥胖的第三方Web服務,它返回一個簡單的搜索結果數據的3MB治療脂肪web服務,在響應數據的約50%是垃圾郵件。在.net 3.5 C#

如果將這些數據重新映射到我自己的結果對象並丟棄響應,所以我將1-2mb存儲在內存中用於過濾和排序,而不是使用Web響應自己的對象, 4還是我錯過了一點?

到目前爲止,我已經訪問來自一個單獨的項目的web服務,並使用一個新的類來實現交互等我的項目看起來像這樣

|- Web (mvc2 proj) 
|- DAL (database/storage fluent-nhibernate) 
|- SVCGateway (interaction layer + webservice related models) 
|- Services 
-------------- 
|- Tests 
|- Specs 

我試圖做出處理持久性應用程序表現得非常快,而且我還需要臨時存儲結果集,以防客戶去查看產品並希望返回結果。 (服務僅返回可能的14K結果中的500個)。

所以基本上我正在尋找確認我在做正確的事在推動成果轉化爲我自己的對象,或者如果我打破一些規則或即使有處理這更好的辦法。

謝謝

+0

uggh,我認爲我們的第三方對於200k有效載荷是不好的。你確定你不能限制通過他們的服務返回的結果數量嗎?你爲什麼一次需要500個結果?我們至少提供靈活分頁的屬性。 – ScottE 2010-06-02 15:38:43

+0

nope它只返回可用的最多500個結果。 – 2010-06-02 17:41:11

回答

1

假設你將操縱結果數據應用程序的生命週期過程中設置多次,我認爲映射Web服務的結果集,以自己的對象,使有很大的意義。

除了降低內存佔用的明顯的好處,你也可以設計爲您打算在其上執行的操作類型進行最優化的數據的自己的內部表示。因此,您可以節省處理時間和內存使用量。

我可以看到用於存儲臃腫的第三方響應的唯一情況是,如果您的主要用例涉及用戶的數據看一次。如果用戶很少回到他們以前的搜索,那麼你可以利用原來的結果集。

0

嘗試並使用序列化在內存中存儲減少的結果對象。這將非常有用。這確實是提高結果處理速度的唯一途徑。

我還會看看NCache(http://www.alachisoft.com/ncache/)和memcached(http://www.infoq.com/news/2007/07/memcached)之類的進程緩存解決方案,以進一步提高您的速度和可擴展性。

+0

聽起來很可疑。如果您獲得了大量數據,則要避免的是緩存,緩存和其他重複數據。儘可能快地剝離你不需要的東西。 – 2010-06-02 12:52:34

+0

其實我的意思是緩存清除的對象而不是完整的響應。 – 2010-06-02 15:32:36