c# - LINQ to XML 用作简单的数据抽象层?

标签 c# linq-to-xml

理解问题的背景

我目前正在使用 C# 4.0 设计一个简单、轻量级(特定于应用程序)的基于消息的 API。大多数消息将离开 .NET/Silverlight 堆栈,因此它们被序列化为 XML 流。一些消息也发送/接收到本地组件,因此没有序列化的理由。

目前,有一个为该 API 设计的简单数据抽象层,其中包含消息的内容。该数据抽象层应该仅用于该目的。

现在面临的挑战是,尤其是在应用程序初始化期间,有一些非常大的消息被其他系统接收,因此 xml 流相当重量级(数千个 xml 元素)。这意味着会生成该数据抽象层对象的数千个实例,处理消息,然后删除整个数据实例。

问题

我的问题是:linq-to-xml 在内存消耗/性能方面是否非常好,因此不需要单独的数据抽象层? 我的理解是,如果内容被写入流,linq-to-xml 只会呈现内容。

感谢您提供反馈。

最佳答案

LINQ to XML 确实以惰性方式解析您的文档,但它确实将完整的对象图构建到内存中,并在内存中创建了大量对象。它有一个很棒的 AP​​I,但肯定不是轻量级的。请测量性能以查看 LINQ to XML 套件的性能是否满足您的应用程序性能要求。

关于c# - LINQ to XML 用作简单的数据抽象层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711325/

相关文章:

c# - 仅使用 LinqToXml 读取内部列表

c# - 编写 xml 文档时去除自闭标签中的空格

c# - 如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)

c# - Ironpython:IEnumerator

c# - 在将 XElement 添加到匿名对象之前,如何检查该 XElement 是否不为 null?

使用具有属性的重复元素名称的 C# LINQ to XML 查询

c# - 如何使用 SQL CE 4.0 创建内存数据库?

c# - "Thickness"的 TypeConverter 不支持从字符串转换

C#:为自定义异常重写 ToString() 方法

c# - LINQ 读取 XML