缓存 – 缓存DataContractSerializer实例是一个好主意吗?
我正在编写一个
Windows服务应用程序,需要在执行期间反复序列化和反序列化XML文档.因为我需要序列化和反序列化在编译期间未知的泛型类型(我不知道我需要序列化/反序列化需要多少类型)我想知道保留缓存是否是个好主意我实例化的DataContractSerializer对象用于序列化和反序列化对象.
我问这个问题是因为我知道缓存XmlSerializer类实例是一个好主意,因为它们在内存下创建动态程序集,并且在内存中动态创建的程序集不会被垃圾回收. 我读到DataContractSerializer依赖于轻量级代码生成,但我并不常常了解它的细节.这就是为什么我问这个问题,我需要了解如果我根据需要实例化DataContractSerializer实例,它会导致我像XmlSerializer那样导致内存泄漏? 我选择使用DataContractSerializer而不是XmlSerializer来序列化内部属性. 解决方法
使用XmlSerializer,它实际上取决于您是使用简单构造函数(新的XmlSerializer(typeToHandle)),还是更复杂的构造函数,它们允许您在运行时指定所有属性等.如果你只使用简单的构造函数,它会重新使用背景程序集,所以没有重复的惩罚. 我希望(但尚未测试)DataContractSerializer的工作方式类似;但是简单地缓存它肯定没什么坏处,可能是在一个静态的只读字段中 请注意,DataContractSerializer会限制您可以使用的xml布局…只要您对它有好处;-p (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows Server 2012:安装IIS、FTP服务
- 在Microsoft Orleans中检查GUID是否存在颗粒
- error: Microsoft Visual C++ 14.0 is required.
- windows-8 – 在Visual Studio 2012中发布MVC项目
- wix – 一个MSI中的两个PathEdit对话框(错误2343
- 如何使我的.net,WPF,WinForms等应用程序在ARM驱动
- Windows授权经理(AzMan)是否已经过时?在新的ASP
- exchange-2007 – Microsoft Exchange 2007和Win
- windows-server-2008-r2 – Windows Server 2008
- windows – mstsc.exe的热键是什么?