我一直在努力工作幾天,遇到了WPF應用程序的一個問題,我想知道是否有人遇到過這個問題,並且可以提供幫助嗎? 這個問題似乎歸結爲客戶端生成「即時」序列化程序來處理該Web方法調用中的類型。當第一次調用該方法時(Web服務本身已經運行),可能需要例如8秒,隨後的呼叫可能需要例如20毫秒。在此延遲期間,客戶端WPF進程上的CPU處於高位。從WPF使用WCF首次使用時速度很慢
使用XmlSerializer時,有一種使用svcutil預先生成這些序列化程序集的方法。當(像我們一樣)使用普通的WCF DataContractSerializer時,這個選項似乎不存在。
我希望能夠爲我的所有數據協定(很多)中的所有類型預先生成這個程序集,或者用一個自定義的代碼替換這個程序,我可以編寫和傳遞數據在二進制文件(我們擁有這個Web服務/客戶端的兩端,他們都是.NET 4)。我已經使用了BinaryForamtter和GZip壓縮功能,雖然這加速了數據的傳輸,但它總是會恢復到XML以被框架反序列化,因此這個問題依然存在。
任何想法?
感謝Julien,我已經得到了useDefaultWebProxy false。我期待使用protobuf-net,但是我無法理解它需要我用一個新的屬性重新裝飾我的所有數據類型 - 我希望不會。它在網站上說,如果你願意,v2可以「沒有屬性地使用」,但是所有的例子都使用屬性。這會提高第一次調用的啓動速度,即使在IIS中(這是真正的授權),也就是構建時預生成的protobuf-net串行器嗎? –
@SimonEvans,只要你在每個'DataMember'上設置了'Order'屬性,你就應該沒問題。雖然我沒有使用它(我從一開始就使用protobuf)。 –
朱利安,你的意思是我必須爲每個公共財產增加[ProtoMember(n)]?謝謝你的幫助 –