2011-01-30 79 views
0

我正在運行一個Silverlight 4應用程序,該應用程序對涉及許多合同的服務具有WCF服務引用。WCF在Silverlight 4中的啓動性能

我注意到我的啓動性能很糟糕,所以我對它進行了分析,發現在第一次WCF調用中花費了7秒的時間來生成序列化代碼。

startup profile

我知道有通過使用XmlSerializer(explained here),以提高啓動時間的方式。這是通過將序列化代碼提前生成一個單獨的程序集來完成的,但我似乎無法弄清楚如何在Silverlight中執行此操作。

有沒有人做過這個?它甚至有可能嗎?任何其他可能的幫助也是受歡迎的。

謝謝。

回答

0

鏈接到的文章介紹瞭如何使用svcutil.exe預生成類,但如果您在Visual Studio或WCF RIA Services中使用「添加服務引用」對話框,則此代碼生成爲已經爲你完成了。所以這不是我會尋求任何性能提升的地方。無論如何,7秒似乎太長了,除非你真的需要成千上萬的不同的課程,而你正在嘗試開始。我強烈的懷疑是你完全有一個不同的問題。任何需要7秒的操作都是算法或IO界限。我敢打賭,這是I/O:要麼到達WCF服務的網絡I/O,要麼可能是從WCF服務到它自己的數據源的I/O。加載某種嗅探器(Wireshark,Firebug,沿着這些線),並更好地瞭解網絡上發生的事情。無論如何,這就是我要開始的地方。

+0

我認爲這是序列化代碼。運行這行代碼需要7秒 - 新的XmlSerializer(typeof(Request)); Request類在其上定義了約100個XmlIncludeAttribute。因此,爲Request類生成序列化代碼意味着爲其他100個類生成代碼。 所以我真的很想找一種方法在Silverlight中使用sgen.exe。 – 2011-01-31 07:39:34