【发布时间】:2013-07-07 07:48:56
【问题描述】:
我有一个 WCF 服务,它返回一个包含 3 个数据表的数据集。前 2 个 DataTable 包含一些关于将要处理的数据的元数据,第 3 个 DataTable 包含要处理的主要数据。
在 99% 的客户端中,当从 web 服务调用中检索 DataSet 时,所有内容的顺序与发送 DataSet 之前服务器端的顺序完全相同。但是,在一些客户中,我注意到一些 DataTables 的行是乱序的。有谁知道为什么会发生这种情况?
另外,我确实知道每个人都说不要在 WCF 上使用 DataSets / DataTables 的原因,但对于这个项目来说,这是正确的方法,所以请不要链接到可怕的标题文章说 DataSets over WCF 是魔鬼.
为了解决这个问题,我想我可以在发送数据集之前将其转换为字节数组,然后再将其转换回另一端的数据集,或者我可以在使用之前在客户端对数据表进行排序,但我仍然想知道为什么会发生这种情况;特别是因为我无法在生产之外复制它。
【问题讨论】:
-
一种可能性是发送的消息被乱序接收。如果您的客户端与您的服务通信的框架可以支持它,您可以引入可靠消息传递以确保从客户端接收消息的顺序与发送的顺序相同。 msdn.microsoft.com/en-us/library/aa480191.aspx
-
@GeorgeJohnston - 感谢您的回复;我也有同样的想法,但无法证明这一点,因为我无法重现它并且没有记录 SOAP 消息。我很欣赏这个链接。由于这不是公共 Web 服务,而且我一直都知道客户端将是一个 .NET C# 应用程序,因此我认为 Reliable Messaging 将是一个不错的选择。
标签: c# wcf web-services dataset