Webservices:应该避免返回或传递枚举?

时间:2014-04-01 07:11:55

标签: .net web-services enums

我有一个.net webservice,它为客户端应用程序提供数据更新服务。作为该机制的一部分,我们使用枚举来区分'类型'更新。因此webmethod返回一个类型列表,这些类型具有枚举以定义更新的内容。

我们最近添加了一个额外的更新类型'到系统。虽然这对我们的客户端应用程序的新版本(也在.net中)工作正常,但旧版本会因为新的枚举类型(序列化为字符串并传递到线路)而无法转换为枚举(如枚举值未在Reference.cs中生成的代码中指定。

我们的答案是避免在web方法的结果中包含新值(以满足客户端应用程序的旧版本)并在此使用新方法,而不是将枚举的INT值传递给客户端应用

在向后兼容性和健壮性方面,在处理Web服务时甚至传递Enum值是个好主意吗?我们只考虑了一个新的价值,但我正在考虑重构/重命名未来的枚举。

定义规则"不要通过webmethods传递枚举值。改为传递他们的INT值"似乎是一个非常宽泛的规则,所以我不确定在支持旧版本的客户端应用程序时会出现意想不到的后果。

1 个答案:

答案 0 :(得分:2)

我认为传递enum并没有错。当使用XSD将结果序列化为XML时,甚至还有一个特定的元素来定义枚举(xs:enumeration)。

我希望看到旧版客户端软件的实际问题能够更好地了解问题,但在谈论标准时,这应该可行。