我有一個奇怪的場景,清楚地說明我不瞭解WCF和我應該做的一樣好。從WCF返回50,000個實體的性能不佳
我列出了50 000條記錄並創建了我想返回到我的前端的「實體」。 整個過程需要2秒鐘才能完成。
但是,然後序列化啓動服務器端 - 我的「代碼」以外 - 但它只使用一個處理器序列化數據 - 這需要4分鐘?除了重寫「串列化」之外 - 還有哪些其他選項可用?
我使用BasicHttpChannel - 目前沒有安全性 - 編碼是默認的 - 不是MTOM。
任何建議將是偉大的 - 謝謝!
編輯:
我有一個簡單的負載調用,它返回一個POCO沒什麼特別的 - 只有數據 - 5個性能 - 所有字符串 - 一個長。
編輯: 澄清 - 通過WCF從前端加載數據直到數據(POCO's)再次到達「入口點」,返回「通話」需要2秒。
此後,我看到只有我的一個處理器在大約4分鐘內「飆升」到100% - 我認爲這是數據序列化返回的位置 - 我想知道WCF是否有一個選項允許更多處理器執行這項工作 - 或者是我唯一的選擇重寫OnSerializing?
你的「實體」是什麼樣的?它們是否具有多重導航屬性(甚至可能是循環引用)的實體框架類,或精簡DTO幾乎沒有嵌套? – CodeCaster
我們不可能只用這些信息來幫助你。你能提供[mcve]嗎?你的服務,操作和數據合同是什麼樣的?您是簡單的POCO還是其他?你提到「實體」。你在使用實體框架嗎?如果是這樣,什麼版本?你有沒有試過用'DataContractSerializer'替換'XmlSerializer'](https://msdn.microsoft.com/en-us/library/ms733901(v = vs.110).aspx)?如果是這樣,性能影響是什麼? – dbc
是的 - 我有一個簡單的負載調用返回一個POCO(沒有特別的) - 只有數據 - 5個屬性 - 所有字符串 - 一個長。我只能說,如果序列化,我可以清楚地看到,我的10個CPU中只有一個以100%運行,而另一個在串行化數據時全部空閒 - 但實際的加載調用使用了所有處理器。 – d1trut5r