理解问题的背景
我目前正在使用 C# 4.0 设计一个简单、轻量级(特定于应用程序)的基于消息的 API。大多数消息将离开 .NET/Silverlight 堆栈,因此它们被序列化为 XML 流。一些消息也发送/接收到本地组件,因此没有序列化的理由。
目前,有一个为该 API 设计的简单数据抽象层,其中包含消息的内容。该数据抽象层应该仅用于该目的。
现在面临的挑战是,尤其是在应用程序初始化期间,有一些非常大的消息被其他系统接收,因此 xml 流相当重量级(数千个 xml 元素)。这意味着会生成该数据抽象层对象的数千个实例,处理消息,然后删除整个数据实例。
问题
我的问题是:linq-to-xml 在内存消耗/性能方面是否非常好,因此不需要单独的数据抽象层? 我的理解是,如果内容被写入流,linq-to-xml 只会呈现内容。
感谢您提供反馈。
最佳答案
LINQ to XML 确实以惰性方式解析您的文档,但它确实将完整的对象图构建到内存中,并在内存中创建了大量对象。它有一个很棒的 API,但肯定不是轻量级的。请测量性能以查看 LINQ to XML 套件的性能是否满足您的应用程序性能要求。
关于c# - LINQ to XML 用作简单的数据抽象层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711325/