2012-10-07 36 views
1

我正在規劃一個Web服務(.NET asmx),我需要儘可能優化它。 Web服務根據從客戶端傳遞的參數從數據庫(Mysql)返回10個隨機記錄(來自客戶端的每個調用都需要是隨機的)。每個參數(1-12)在DB中保存〜2000條記錄。優化.NET Web服務數據庫記錄選擇

解決方案:

  1. 查詢數據庫(將由參數索引),只是返回結果。
  2. 將表格從DB緩存到.net Datatable,然後通過Linq(〜15,000條記錄)進行選擇。
  3. 將數據庫緩存到12個.net數據表中,每個數據表用於可能的參數,並用Linq查詢數據表 。

執行此任務的最佳方法是什麼?我很想聽聽其他的想法!

此致烏迪

+0

爲什麼要使用asmx?現在WCF是首選的服務棧。 – rene

+0

@rene - 實際上,WebApi正在開始用簡單的請求替換wcf。 –

+0

我正在向現有的Web服務添加新的功能(方法)。 –

回答

0

緩存中的數據爲12個強類型陣列。除了從一個簡單數組中選擇10條隨機記錄之外,它將刪除所有處理。它不會比這更快。

請勿使用數據表。你爲什麼?它們只能比強類型自定義類的列表/數組慢。

如何優化選擇10個隨機項目是一個不同的問題,但肯定已經得到了回答。

+0

謝謝! 我需要將結果作爲Json返回給客戶端。是將每個對象(作爲json字符串)存儲在數組中,然後將N個隨機Json字符串連接起來並將此字符串發送到客戶端會很高效? –

+0

@UdiI,這聽起來像是一個非常好的主意,假設你確實需要獲得最佳表現。我推薦它。序列化可能很昂貴。我們現在已經在很大程度上對此進行了優化。您應該加載測試網站並在其上運行一個分析器。你會注意到ASP.NET的開銷比你自己的代碼更大!嘗試擺脫一些。 – usr

+0

從我做的測試來看,它看起來非常好,謝謝! :) –