多くの契約があるサービスへのWCFサービスリファレンスを持つSilverlight 4アプリケーションを実行しています。Silverlight 4のWCFスタートアップのパフォーマンス
スタートアップのパフォーマンスがひどいので、プロファイリングして、最初のWCF呼び出しでシリアル化コードを生成するのに7秒かかることがわかりました。
私はXmlSerializerを(explained here)を使用して、起動時間を改善する方法が存在しているはず。これは、事前に別のアセンブリにシリアル化コードを生成することによって行われますが、Silverlightでこれを行う方法を理解できないようです。
誰もこれまでに行ったことはありますか?それも可能ですか?助けてくれる他のアイデアも大歓迎です。
ありがとうございました。
私はそれが逐次化コードだと肯定的です。このコード行を実行すると、新しいXmlSerializer(typeof(Request))が7秒かかります。 Requestクラスには約100個のXmlIncludeAttributeが定義されています。したがって、Requestクラスのシリアライゼーションコードを生成することは、100の他のクラスのコードを生成することを意味します。 私はSilverlightでsgen.exeを使用する方法を本当に探しています。 –
良い点。私は思ったほどシリアライズについてはあまり知らなかったことが分かります。しかし、掘り下げた後、DataContractSerializerの代わりにWCFコントラクトでXmlSerializerを使用している理由はありますか? DCSは、おそらくXmlSerializerの起動時の問題を回避するように最適化されています。 –
良い提案しかし、私はそれを試みたと私はそれが動作するとは思わない。 DataContractSerializerはより厳密なルールを持つようですので、slsvcutil.exe/serializerを使用してサービス参照を生成しようとします。DataContractSerializer ...これと同じ種類の失敗が発生します - http://stackoverflow.com/questions/906082/problem-with-generating-webservice-proxy-using-svcutil –