【问题标题】:XmlSerializer.Serialize takes a long time... why?XmlSerializer.Serialize 需要很长时间......为什么?
【发布时间】:2012-01-14 14:22:56
【问题描述】:

鉴于 RssXmlHelper.cs 中 RssToolkit 的以下代码:

    /// <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 服务中调用 serializer.Serialize() 时,会花费大量时间。

我有这个坐在我从我的项目中调用的 WCF 服务中。我踏入其中,果然,这就是问题所在。

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

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

-- 更新--

好的,所以我安装了适用于 Windows 7 和 .NET Framework 4 的 Microsoft Windows SDK,运行 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,与适用于 .Net 4 的 Windows SDK 匹配。这不正确吗?

【问题讨论】:

  • 标题有点误导:WCF与XmlSerializer慢的问题无关,所以我编辑了。

标签: .net c#-4.0 xmlserializer sgen


【解决方案1】:

您可以使用sgen.exe(Windows SDK 附带的 XML 序列化程序生成器工具)生成序列化程序集。通过在大型课程中使用它,我看到了显着的改进。

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

【讨论】:

  • 找到4.0版本。出于某种原因,包含了 v2.0 和 v4.0。 4.0 in bin\NETFX 4.0 Tools\sgen.exe
  • 原来这基本上使问题过于复杂。由于服务只需要返回序列化的数据,我只是用老式的方式来做——读取 HTML 流并将其传递。谢谢你的信息。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 2011-12-29
  • 1970-01-01
  • 2022-11-11
相关资源
最近更新 更多