2011-12-07 22 views
1

はRssXmlHelper.csにRssToolkitから次のコードを考える:XmlSerializer.Serializeに時間がかかる...なぜですか?

serializer.Serializeは()私のWCFサービスで呼び出され
/// <summary> 
    /// Returns XML of the Generic Type. 
    /// </summary> 
    /// <param name="rssDocument">The RSS document.</param> 
    /// <typeparam name="T">RssDocumentBase</typeparam> 
    /// <returns>string</returns> 
    public static string ToRssXml<T>(T rssDocument) where T : RssDocumentBase 
    { 
     if (rssDocument == null) 
     { 
      throw new ArgumentNullException("rssDocument"); 
     } 

     using (StringWriter output = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture)) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(T)); 
      serializer.Serialize(output, rssDocument); 
      return output.ToString(); 
     } 
    } 

は、それは時間の全体の多くを取ります。

私はこれを私のプロジェクトから呼び出すWCFサービスに置いています。私はそれに足を踏み入れ、そして確かにそれは問題点です。

私のソリューション内でプロジェクトを参照しても問題はありません。

WCFサービスでこれを使用するとき、私は別のやり方で何かすべきなのでしょうか?

- UPDATE -

[OK]を、ので、私は、Windows 7用のMicrosoft Windows SDKおよび.NET Framework 4をインストールしsgne.exe RssToolkit.dllを実行し、次のエラーを取得:

Error: An attempt was made to load an assembly with in incorrect format [path to rsstoolkit.dll] 
- Could not load file or assemply [path to rsstoolkit.dll] or one of its dependencies. This assembly was build by a runtime newer than the currently loaded runtime and cannot be loaded. 

私のRssToolkitプロジェクトのターゲットフレームワークは4.0に設定されています。これはWindows SDK for .NET 4.と一致していますか?

+0

タイトルは少し誤解を招いていました。WCFは遅い 'XmlSerializer'の問題とは関係がないため、編集しました。 –

答えて

3

Windows SDKに付属のXMLシリアライザジェネレータツールsgen.exeを使用してシリアル化アセンブリを生成できます。私は大きなクラスでそれを使用することで大幅な改善を見ました。

基本的には、ドメイン内のすべてのオブジェクトをシリアライズおよびデシリアライズするコードを生成します。 DLLを生成したら、アセンブリ参照としてプロジェクトに組み込み、今使用しているXmlSerializerの代わりにその中のクラスを使用することができます。

+0

thx。上記で更新されました。 – ElHaix

+0

4.0バージョンが見つかりました。何らかの理由でv2.0とv4.0が含まれています。 4.0 \ bin \ NETFX 4.0 Tools \ sgen.exe – ElHaix

+0

これは基本的に問題が複雑すぎることを示しています。サービスはシリアル化されたデータを返すだけで済むので、私はちょうど旧式のやり方 - HTMLストリームを読んで渡しました。情報のThx。 – ElHaix