使用 WCF 和 Data Contract Serializer 时需要生成 XmlSerializers 程序集
Posted
技术标签:
【中文标题】使用 WCF 和 Data Contract Serializer 时需要生成 XmlSerializers 程序集【英文标题】:Need for generating XmlSerializers assemblies when using WCF and Data Contract Serializer 【发布时间】:2015-04-18 06:52:16 【问题描述】:This article 描述了如何通过使用svcutil.exe
(或sgen.exe
)为程序集预生成序列化代码来缩短WCF 客户端应用程序的启动时间。但是,它只提到使用XmlSerializer
提高序列化/反序列化的性能。
WCF 的默认序列化程序是DataContractSerializer
,我的问题是:对于只与 WCF 服务通信的 WCF 客户端,生成 *.XmlSerializers.dll 程序集有什么好处吗?我能找到的关于这个特定问题的唯一信息来源是 MSDN 上的this thread。给出的答案可能暗示生成XmlSerializers
只影响XmlSerializer
的序列化,但并没有说清楚。
【问题讨论】:
【参考方案1】:来自Using the XmlSerializer class MSDN article,“安全注意事项”部分:
使用 XmlSerializer 时存在的另一个威胁与对系统临时文件夹的写入权限有关。 XmlSerializer 序列化引擎在此文件夹中创建和使用临时序列化程序集。
这在与DataContractSerializer
的合同中有所提及,因此在使用DataContractSerializer
时生成*.XmlSerializers.dll
似乎没有任何价值。
【讨论】:
虽然你可能是对的,但文章并没有明确说明默认 DataContractSerializer 不使用序列化程序集。 是的。最简单的假设是它没有,这个假设得到了我进行的实验的支持。 DataContractSerializer 是否使用任何临时程序集进行序列化/反序列化,如 XMLSerializer,您是否阅读过任何相关信息?以上是关于使用 WCF 和 Data Contract Serializer 时需要生成 XmlSerializers 程序集的主要内容,如果未能解决你的问题,请参考以下文章