我有一个带有oneway = true,netTCPBinding的回调api。并且服务调用客户端上的回调,我观察到数据是按顺序到达的!
服务:
[OperationContract(IsOneWay = true)]
SendData(DateTime time, double[] data)
void SendData()
{
while(data = GetNextData() != null)
{
SendData(DateTime.Now, data);
}
}
客户端:[CallbackBehavior(UseSynchronizationContext = false)]
public class Data
{
public DateTime time;
public double[] data;
}
ConcurrentQueue<double[]> queue;
SendData(DateTime time, double[] data)
{
queue.Enque(new Data (time, data));
}
我在另一个线程中使用队列,我观察到的是“时间”,它告诉我当sendData(..)调用队列中的数据乱序时我的服务时间! 服务中的SendData(..)在循环和单线程中调用,这确保时间总是在增加..
1)为什么我无法按顺序传送数据,而TCP提供有序的数据包传送。是我的代码中的问题还是我需要WCF - 可靠的会话?
2)在已经提供订单交付的TCP的情况下,将订单设置为true的可靠会话设置的目的是什么。
3)有没有替代可靠的会话顺序=真的吗?