WCF:如果TCP保证有序传递,为什么启用可靠的会话顺序为真

时间:2015-07-05 09:16:16

标签: wcf nettcpbinding net-tcp

我有一个带有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)有没有替代可靠的会话顺序=真的吗?

0 个答案:

没有答案