2011-12-07 162 views
1

鉴于从RssToolkit下面的代码在RssXmlHelper.cs:XmlSerializer.Serialize需要很长时间...为什么?

/// <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(); 
     } 
    } 

当serializer.Serialize()被调用我的WCF服务,它需要一大堆的时间。

我有这个坐在我从我的项目调用的WCF服务。我进入它,果然,这是问题点。

然后我在我的解决方案中引用该项目,并没有问题。

在WCF服务中使用它时,我应该做些什么不同吗?

- 更新 -

好了,所以我安装微软的Windows SDK的Windows 7和.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

您可以使用sgen.exe(Windows SDK附带的XML序列化器生成器工具)生成序列化程序集。我在大型课堂上使用它已经看到了极大的改进。

它基本上会生成知道如何序列化和反序列化你的域中的每一个对象的代码。生成DLL后,可以将其作为程序集引用包含在项目中,然后使用其中的类而不是您现在使用的XmlSerializer

+0

thx。以上更新。 – ElHaix

+0

找到4.0版本。由于某些原因,v2.0和v4.0都包含在内。 4.0 in bin \ NETFX 4.0 Tools \ sgen.exe – ElHaix

+0

原来,这基本上是过分复杂的问题。由于该服务只需要返回序列化的数据,我只是以旧式的方式完成它 - 读取HTML流并将其传递。 Thx的信息。 – ElHaix

相关问题