2

我很确定你可以,但除了回答标题中的问题之外,你能否解释一下这样做的利弊、注意事项(如果有的话)?我知道你不能从 WebMethod 中返回 List、Set、Collection、Map 或任何接口(这很愚蠢,IMO,但我不知道我应该保留判断的设计原因是什么)。

感谢您的任何建议。

-- LES

4

2 回答 2

3

你可以返回数组,我发现它们很有用。

集合成为问题的主要原因是某些语言(例如 C)不理解集合的概念,因此,为了保持可移植性,您需要确保传递可以用大多数语言表示的结构。

此外,我从不喜欢传递集合,因为来自 web 服务的内容应该是相当静态的。如果要添加,则将数组转换为集合,然后将数组传回 Web 服务以进行更改。

于 2009-09-30T16:43:21.713 回答
1

詹姆斯是正确的,你可以返回数组。您还可以返回集合类型。wsdl 将类型定义为列表。但是,大多数客户端会将类型转换为数组(至少这是我发现 C# 对 JAX-WS 服务所做的)。

我使用第 3 方(Apache Axis2)来生成 Web 服务,我遇到了一个奇怪的问题,即 wsdl 没有被正确读取,并且消费者无法正确反序列化数组。有必要创建一个装饰器对象,它只包含数组对象并从 web 方法返回。

我认为这只是 Axis2 不能很好地与 .NET Web 服务交互器配合使用,但需要注意一些事情。

于 2009-09-30T16:52:28.537 回答