希望這不是太開放。我正在研究.NET 4, WPF, WCF, EF (STE's), SQL 2012
應用程序。EF/WCF:減少數據傳輸
我們越來越受到我們客戶的打擊,因爲我們的應用超時並且在沒有太多可用帶寬的情況下掛在較慢的網絡上。
我們的應用程序有幾個「實時」儀表板式顯示器以及幾個基於網格的數據編輯器屏幕。
使用招,我接過仔細看看產品中的不同功能區域 - 特別側重於真實傳輸的數據量。總之,傳輸的數據太多 - 我們的一些WCF調用在一次調用中檢索到超過100 MB的數據。
我相信,我們看到可以通過的事實,有這根本就不是通過檢索WCF和EF數據時採取足夠的照顧來表徵的問題,但也許我是在分析事情:
我我是一個可重用性的狂熱粉絲,但爲什麼當你需要的只是一個id和一個picklist的名字時,爲什麼會返回一個完全水合的EF STE實體呢?有時,我們只需要一個簡單的只讀數據顯示。爲什麼 序列化ChangeTracker信息,包括OriginalValues 集合等?也許,有必要將實體拆分爲 可編輯和「只讀版本」或選取適當的版本?
現在,我們使用BasicHttpBinding/XML序列化,但負載看起來很臃腫。例如,xml包含命名空間和其他一些噪音。啓用IIS 7壓縮有助於大幅度提高 ,但我們可以做更多嗎?對於傳輸數據,JSON格式會更好嗎?雖然將XML更改爲JSON似乎是 重大更改。
是否有任何其他技術可以用來減輕有效載荷大小 - 也許我們可以堅持使用XML序列化,但我們 只需要請求較少的數據。也許使用諸如分頁 或「無限滾動」,延遲背景加載等技術將會是一個不錯的選擇。
有沒有其他人遇到過無法接受的有效載荷大小?你做了什麼來解決它?
謝謝!
如果您要求EF返回一個對象集合,那麼即使您只需要該ID,它也會這樣做。 – Paparazzi
是的。但我們不一定需要序列化完整的對象以提供給客戶端。在這些情況下,使用Id和Name轉換爲簡單的只讀DTO會減輕負載。 –
沒錯。如果你不需要整個對象,那麼不要求整個對象。 – Paparazzi