我可以序列化数据表或数据集以通过C#中的Web服务进行传输吗?

Log*_*j99 11 c# web-services

我正在使用Web服务来查询表中的数据.然后我必须将它发送给想要它作为DataTable的用户.我可以序列化数据吗?或者我应该将其作为A DataSet发送.我是Web Services的新手,所以我不确定最好的方法.

fre*_*gel 9

您可以将数据作为xml字符串从数据集中发送 DataSet.GetXml()

并且用户可以使用反序列化 DataSet.ReadXml()

并从数据集中获取数据表 DataSet.Tables

祝好运


Mar*_*ell 7

如果将它暴露为DataSet/ DataTable,它将自己进行自己的序列化(通过IXmlSerializable,IIRC).需要注意的是DataSet/ DataTable不作出良好的数据类型的Web服务,如果你希望服务移植到其他patforms(即Java客户端等).但是如果你想...... 你可以简单地公开它; .NET将处理翻译.

  • 确保设置TableName,否则序列化时会出错. (5认同)

Chr*_*ard 7

请参阅Richard Blewett的这篇文章,了解您可能不希望这样做的原因.

编辑: 总结以上内容:

  • 使用DataSet不可互操作.它使用的注释只有在链接的每一端使用Microsoft堆栈时才有意义.
  • DataSet 通过网络发送数据是一个非常低效的类 - 它还包含更改跟踪数据和元数据.
  • 它引入了紧密耦合 - 客户端甚至可能不需要在服务端进行的更改也必须反映在客户端.

  • 严重的是,因为4年前发布的外部网站链接停止工作了吗?找到重新定位的博客并更新链接 (2认同)

Joe*_*orn 5

当然.DataTable和DataSet都是可序列化的,它们也可以使用ReadXml()和WriteXml()函数.


Nic*_*rdi 1

您可以通过 Web 服务传输 DataTable。所以这可能是您最好的选择,因为这就是客户的要求。