3

WCF サービスで最大のスループット パフォーマンスを得る必要があります。私のテストの 1 つで、以下のサービスは、NetTcpBinding を使用して 1 分間に 50k のデータ項目しか取得できませんでした。NetMsmqBinding のような切断されたバインディングは、このパフォーマンスを改善しますか?

サービスとクライアントは WCF を使用し、同じマシンで実行されます。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Storage : IStorage
{
    protected List<int> _data = new List<int>();

    public void Insert(int[] data)
    {
        lock (_data)
        {
            _data.AddRange(data);
        }
    }

    public int[] Get()
    {
        lock (_data)
        {
            return _data.ToArray();
        }
    }
}

上記のコードは、実際のコードを簡略化したものです。

4

4 に答える 4

4

孤立した単一の呼び出し、または数千の呼び出しのフラッドの場合は高速ですか?

NetMsmq は MSMQ メッセージ キューイングを使用します。メッセージを MSMQ によって処理されるキューに入れると、サービスは最終的にそのキューからメッセージを取得して処理します。すぐにフィードバックを受け取ることはできません。メッセージは一方向のみです。

一方、NetTcp は http に似ていますが、より高速です。サービスにリクエストを送信すると、(すべてがうまくいけば) すぐにレスポンスが返されます。メッセージのキューイング自体は関係ありません。メッセージはリクエスト/リプライです。

したがって、2 つのバインディングを実際に比較することはできないと思います。それらはまったく異なる目的を果たします。

  • たとえば、郵便番号を調べてその場所の経度/緯度を取得したい場合は、間違いなく要求/応答メカニズムが必要です --> netTcp を使用します

  • たとえば、ドキュメントの印刷、データベースの再編成、またはそのような性質のリクエストを預けたい場合-最終的には処理する必要があるが、すぐに応答が返ってくることを期待していない場合(ただし、後で確認できるかどうかを確認できます)メッセージが適切に処理されている場合)、メッセージ キューイング システムを使用する

物事が少し明確になることを願っています-これら2つは実際には同じ一連の操作を対象としているとは思わないため、これら2つから直接選択する必要はほとんどないでしょう:)

于 2009-12-02T17:18:50.880 に答える
4

Msmq は、TcpBinding よりも遅くなる可能性があります。

同じマシンで実行している場合は、利用可能な最速のバインドである NetNamedPipeBinding (IPC) を使用する必要があります。

また、データのシリアライズ方法も確認する必要があります。プロトコル バッファーのシリアル化は、既定の WCF バイナリ シリアル化よりもはるかに高速 (かつスリム) です (ただし、少し調整が必要です)。

于 2009-12-02T17:09:38.747 に答える
3

サービスとクライアントが同じマシンで実行されている場合、名前付きパイプなどの IPC メカニズムを優先して、ネットワークを完全に回避します。ネットワーク トラフィックによって大量のオーバーヘッドが発生しますが、これは IPC メカニズムを使用することで回避できます。

于 2009-12-02T17:07:32.153 に答える
2

輸送が取引率を低下させていると信じる理由がありますか?プロファイリングはあなたに何を伝えましたか?現在、このサービスはシングルスレッドに設定されており、「Get」を複数回呼び出して相互にロックアウトしています。

このサービスはどのように呼び出され/使用されますか?マルチスレッドにするのに役立ちますか?Getへの複数の呼び出しを同時に発生させながら「追加」をブロックできるReaderWriterLockのようなより洗練されたロックを使用するのはどうですか?

編集:これは単純化された状況であることを私は知っていますが、実際のサービスは同じ考慮事項から利益を得るでしょうか?

于 2009-12-02T17:12:33.067 に答える