我听说有些人说枚举是邪恶的,不应该在Web服务中使用,因为如果分配了一些值,或者枚举标记了Flags属性,服务器和客户端之间可能会出现不匹配.他们还说,暴露枚举的网络服务难以维护,但实际上并没有给我可行的论据.那么根据您的经验,在WCF Web服务中使用枚举的优缺点是什么?
MMi*_*ind 41
人们建议在Web服务中避免使用枚举的原因是因为它们会产生微妙的向后兼容问题.
这同样适用于常规枚举,但在Web服务中,问题在.NET生成的代理中尤为明显(见下文).
通过将参数定义为字符串,您可以向API用户表明该值可能在将来发生变化.即使你认为价值永远不会改变,也是一个好的做法.
khe*_*bie 17
我在WCF中使用了枚举,也在互操作性场景中使用了枚举.如果您控制服务的两面,则更容易使用.如果您只控制服务的一方,则需要注意您提到的问题.
枚举比字符串变量要好得多,或者你可以选择使用什么.使用字符串而不是枚举是SOA中称为"松散的Goosey"的反模式.
Gre*_*ech 10
WSDL和XSD通过xsd:enumeration
schema元素完全支持枚举.它为单值和标志样式枚举提供支持,其中flags枚举中的多个值由空格分隔.
因此,对于任何符合标准的平台使用枚举应该没有问题.