CAR*_*OTH 6 caching windows-services xml-serialization datacontractserializer
我正在编写一个Windows服务应用程序,需要在执行期间反复序列化和反序列化XML文档.因为我需要序列化和反序列化在编译期间未知的泛型类型(我不知道我需要序列化/反序列化需要多少类型)我想知道保留缓存是否是个好主意我实例化的DataContractSerializer对象用于序列化和反序列化对象.
我问这个问题是因为我知道缓存XmlSerializer类实例是一个好主意,因为它们在内存下创建动态程序集,并且在内存中动态创建的程序集不会被垃圾回收.
我读到DataContractSerializer依赖于轻量级代码生成,但我并不常常了解它的细节.这就是为什么我问这个问题,我需要了解如果我根据需要实例化DataContractSerializer实例,它会导致我像XmlSerializer那样导致内存泄漏?
我选择使用DataContractSerializer而不是XmlSerializer来序列化内部属性.
...缓存 XmlSerializer 类实例是一个好主意,因为它们在底层内存中创建动态程序集...
对于XmlSerializer,它实际上取决于您是否使用简单的构造函数(new XmlSerializer(typeToHandle)),还是使用允许您在运行时指定所有属性等的更复杂的构造函数。如果您只使用简单的构造函数,它会重新使用后台程序集,因此不会有重复惩罚。
我希望(但尚未测试)DataContractSerializer能够类似地工作;但简单地缓存它当然没有什么坏处,也许在静态只读字段中
请注意,这DataContractSerializer会限制您可用的 xml 布局...只要您同意即可 ;-p
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |