小编Phi*_*ang的帖子

决定何时使用XmlDocument vs XmlReader

我正在优化自定义对象 - > XML序列化实用程序,它已完成并正常工作,这不是问题.

它通过将文件加载到XmlDocument对象中,然后递归遍历所有子节点来工作.

我认为也许使用XmlReader而不是XmlDocument加载/解析整个事情会更快,所以我也实现了那个版本.

算法完全相同,我使用包装类来抽象处理一个XmlNode与一个的功能XmlReader.例如,GetChildren方法yield返回子项XmlNode或SubTree XmlReader.

所以我写了一个测试驱动程序来测试这两个版本,并使用一个非平凡的数据集(一个900kb的XML文件,大约有1,350个元素).

但是,使用JetBrains dotTRACE,我发现XmlReader版本实际上比XmlDocument版本慢!XmlReader当我在迭代子节点时,似乎在读取调用中涉及一些重要的处理.

所以我要说这一切:

有什么优势/劣势XmlDocumentXmlReader,和你应该使用什么情况下要么?

我的猜测是,文件大小阈值XmlReader在性能上变得更经济,而且内存密集度更低.但是,该阈值似乎超过1MB.

ReadSubTree每次都在调用处理子节点:

public override IEnumerable<IXmlSourceProvider> GetChildren ()
{
    XmlReader xr = myXmlSource.ReadSubtree ();
    // skip past the current element
    xr.Read ();

    while (xr.Read ())
    {
        if (xr.NodeType != XmlNodeType.Element) continue;
        yield return new XmlReaderXmlSourceProvider (xr);
    }
}
Run Code Online (Sandbox Code Playgroud)

该测试适用于单个级别的许多对象(即宽和浅) …

c# xmldocument xmlreader xml-serialization

61
推荐指数
2
解决办法
5万
查看次数

是否可以通过 http 将数据从客户端传输到服务器?

我想将数据从客户端(桌面或移动)传输到托管服务器。它不是大量数据,每 1/10 秒 1 个字节 - 但数据需要立即流式传输(无缓冲)并且连接需要长时间保持活动状态(例如最多 10 分钟)。

因为服务器是托管的,所以我无法使用套接字 - 只能使用 http。

我知道在服务器端,如果我连接到客户端,我可以使用持久连接来做到这一点,只需写入响应流。

但是有没有办法反过来做到这一点,其中客户端与服务器有持久连接并正在写入请求流?

澄清:我不必将此客户端-> 服务器通信作为持久 http 连接完成,我只是想知道是否有可能,这样我就可以与我计划的服务器-> 客户端持久 http 连接对称。

据我所知,听起来我应该能够单独发布 http 帖子并实现相同或相似的延迟。

c# asp.net http persistent-connection

5
推荐指数
1
解决办法
2802
查看次数