我正在使用Web服务来查询表中的数据.然后我必须将它发送给想要它作为DataTable的用户.我可以序列化数据吗?或者我应该将其作为A DataSet发送.我是Web Services的新手,所以我不确定最好的方法.
您可以将数据作为xml字符串从数据集中发送 DataSet.GetXml()
并且用户可以使用反序列化 DataSet.ReadXml()
并从数据集中获取数据表 DataSet.Tables
祝好运
如果将它暴露为DataSet
/ DataTable
,它将自己进行自己的序列化(通过IXmlSerializable
,IIRC).需要注意的是DataSet
/ DataTable
不作出良好的数据类型的Web服务,如果你希望服务移植到其他patforms(即Java客户端等).但是如果你想...... 你可以简单地公开它; .NET将处理翻译.
请参阅Richard Blewett的这篇文章,了解您可能不希望这样做的原因.
编辑: 总结以上内容:
使用DataSet
不可互操作.它使用的注释只有在链接的每一端使用Microsoft堆栈时才有意义.
DataSet
通过网络发送数据是一个非常低效的类 - 它还包含更改跟踪数据和元数据.
它引入了紧密耦合 - 客户端甚至可能不需要在服务端进行的更改也必须反映在客户端.
当然.DataTable和DataSet都是可序列化的,它们也可以使用ReadXml()和WriteXml()函数.