簡體   English   中英

WCF性能

[英]WCF performance

我們的數據庫中有一個表,大約有2,500,000行(大約3GB)。 從技術上講,在使用WCF查詢此數據的silverlight應用程序中查看此表中的數據是否可行? 我可能會看到最大緩沖區大小和超時錯誤的問題。 我們可能需要將整個數據用於可視化目的。

如果有一個實際的解決方案,請指導我。

將3GB移動到客戶端是行不通的。

用於可視化目的。

更好地准備可視化服務器端。 這將足夠慢。

通常在這種情況下,如果您需要查看單個記錄,那么您將使用分頁策略。 因此,您對WCF的調用將是一個頁面值記錄,您將顯示這些記錄,用戶將單擊下一個/上一個按鈕或其他一些按鈕。

至於可視化,您應該在服務器上執行一些轉換/縮減,因為250萬條記錄類似於在屏幕上顯示每個像素的一個數據點。

首先,看看這里

將3GB數據從磁盤傳輸到磁盤可能需要花費幾分鍾時間,更不用說跨越網絡了。 我認為你有更大的魚來炒--WCF限制在這里無關緊要。

因此,我們假設您在幾分鍾/小時后通過電線獲取數據,您在哪里存儲它? 你在Silverlight應用程序如果在瀏覽器內運行不能增長到3GB(即使在64位機器上),即使它可以,它沒有任何意義。 特別是轉換為對象時的數據量將占用更多空間。

這是我要做的:

  • 讓服務器提供有用數據的快照/視圖,例如提供摘要,OLAP多維數據集,......
  • 對於每條記錄,提供所需的最低數據。
  • 如果您需要每條記錄的詳細信息,請在單獨的呼叫中執行此操作

好吧,我相信並建議您不要在同一個列表中顯示2,5百萬行。

如果您開發了一個良好的數據分頁,並且您查詢數據的方式是最佳的,我找不到WCF的問題。

我同意使用WCF接口查詢數據的效率低於獨立,直接訪問基礎結構解決方案,但如果您需要托管一些業務和數據,並且N客戶端需要在SOA解決方案中訪問它,或者它是客戶端 - 服務器解決方案,您需要確保您的查詢是有效的。

建議:

  • 使用OR / M. NHibernate將是您的最佳選擇,因為它有很多方法可以調整性能,並且由於它通過NHibernate 3.0中的QueryOver API支持LINQ,因此分頁很容易。 該產品有一個非常有趣的緩存方案,它將讓您的應用程序有效地可視化您的2,5百萬行數據庫。

  • 做緩存。 NHibernate可以幫助你在這個領域,但考慮到這一點,並根據客戶端技術(Web,Windows ...),您將找到緩存表示視圖的好選項(例如,ASP.NET輸出緩存)。

  • 想想你將如何在WCF中序列化對象:SOAP還是JSON? 也許你會對JSON感興趣,因為序列化的對象足夠小以節省網絡流量。

如果您有任何疑問,請注釋!

好吧,在很多用戶談到你在技術上做了什么之后 - 沒有人想到你有什么感覺?

  • 250萬行在網格中沒有任何意義。 零。 每頁顯示80行(寬屏幕,傾斜90度),這將是31250頁的數據。 你甚至不能寫一個特定的頁面。 忽略加載時間 - 即使IF(!)你加載了等等,在網格中有這個數量是沒有意義的。 過濾下來,然后在頁面上加載你需要的東西。 但關鍵在於強迫用戶在考慮網格的情況下進行過濾。 一旦你了解它們,就不要讓網格的表現變得很好。

  • 告訴你這有多糟糕。 為了獲得網格。 如果指定ONE PIXEL或每個數據項,則需要使用1.33個1024 * 768像素的屏幕來顯示數據。 這是每個項目一個像素。

因此,在一天結束時,即使IF(這是不可能的)設法使這個工作,你最終會有一個非感性/不可用的應用程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM