我听到有些人说枚举是邪恶的,不应该在 Web 服务中使用,因为如果分配了某些值,或者如果枚举被标记为Flags属性。他们还表示,公开枚举的 Web 服务更难维护,但无法真正给我提供可行的论据。那么根据您的经验,在 WCF Web 服务中使用枚举的优点和缺点是什么?
人们建议在 Web 服务中避免使用枚举的原因是因为它们会产生微妙的向后兼容问题。
这同样适用于常规枚举,但在 Web 服务中,问题更加明显,特别是在 .NET 生成的代理中(见下文)。
- 如果仅输入枚举,则没有问题。
- If the enumerate can be an out parameter then if you add a new element and you return it, old clients could have problems:
- 如果客户端使用 .NET 生成的代理,它将在调用者可以处理它之前中断(在反序列化中)
- 即使代理生成的代码支持更改(例如,如果它将枚举映射到字符串),客户端中的用户代码也可能无法正确处理新的意外值(它很可能是从未执行过的路径)
通过将参数定义为字符串,您可以向 API 用户发出信号,表明该值将来可能会发生变化。即使您认为该值永远不会改变,做好准备也是一个很好的做法。
有一个好帖子作者:Dare Obasanjo 关于这个主题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)