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

时间:2011-01-17 08:45:30

标签: c# linq-to-xml

理解问题的背景

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

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

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

问题

我的问题是:linq-to-xml在内存消耗/性能方面是否相当不错,所以不需要单独的数据抽象层? 我的理解是,如果将内容写入流中,则linq-to-xml仅呈现内容。

感谢您提供反馈。

1 个答案:

答案 0 :(得分:1)

LINQ to XML确实以一种懒惰的方式解析你的文档,但它确实构建了一个完整的对象图形到内存中,并在内存中创建了很多对象。它有一个很好的API,但肯定不轻量级。请测量性能以确定LINQ to XML的性能是否符合您的应用程序性能要求。