我在网络项目中使用Web服务 我写了一个返回IEnumerable的Web服务:
[WebMethod]
public IEnumerable<Something> GetSomething() {
IEnumerable<Something> result = ....
....
return result;
}
现在,result
可以是任何实现IEnumerable的东西,因此可以将非常复杂的对象发送给客户端。
你怎么看?是否更好地返回特定类型然后返回抽象类型(因为不知道返回类型)?
例如,我可以为IEnumerable创建一个DTO类,它包含简单的arrey或类似的东西
这个问题的最佳做法是什么?
的更新:
我使用的是SeriptService和JSon,而不是SOAP Xml。到目前为止,我能够返回IEnumerable - 可能因为底层可枚举是序列化项目。你觉得怎么样?
答案 0 :(得分:0)
一般来说,这可能没问题,因为您指定了对象的具体类型,即在您的情况下Something
。
DTO的使用通常仅用于
答案 1 :(得分:0)
IEnumerable
。
它只是一个可以查询以获取项目列表的值。
这里需要注意的是,如果你使用yield return来创建枚举,那么生成枚举的方法代码将在序列化程序开始从枚举中获取对象并开始解码它们时执行。因此,即使您在使用yield return模式生成可枚举的方法内部进行数据库调用,该数据库调用也将在Web方法中的return语句之后发生,即当序列化程序开始使用可枚举时。