2

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) 信頼できるセッション順序 = true に代わるものはありますか?

4

0 に答える 0