2

複数のクライアント (winforms アプリ) がインターネット経由で (リモートの場所にある) サーバーに接続できるようにし、二重通信を開始して、時には大量のトラフィックを送信できるようにする必要があります。

現時点では、WCF を使用して netTcpBinding を介した二重通信を使用しており、独自の証明書を使用してトランスポート層で保護されています。これはうまくいきますが、私はいくつかのことを心配しています:

  • セットアップが面倒です。各クライアントをサーバーで識別するために証明書を作成し、クライアント マシンとサーバーに各クライアントの証明書を登録する必要があります。
  • 特定のポートで tcp を使用しているため、tcp を介した通信を開始できるように、その部分がクライアント側で開いていることに依存しています。一部のクライアントの場所はこれを好まない.
  • 理想的には配達を保証できる必要があります

別の方法として、wsDualHttpBinding を使用して、単一の SSL 証明書を使用してセキュリティを確保し、各クライアントが何らかの識別子を送信して自分自身を識別できるようにすることを考えていました。これにより、ファイアウォールの問題が解決されますか? また、tcp ではなく http で十分なパフォーマンスが得られるでしょうか? 私が知っていることから、httpを使用すると、WCFは1つではなく2つのチャネルを作成します(httpは双方向通信をサポートしていないため)-パフォーマンスに問題が発生する可能性があるようです..

私の質問は、このソリューションの方が優れているか、またはこれを簡単にしてこれらの問題を解決できる他のソリューション (NServiceBus など) があるかどうかです。

編集

それ以来、 wsDualHttpBinding がオプションではないことを知りましたThis binding requires that the client has a public URI that provides a callback endpoint for the service。これは私には不可能です。

4

1 に答える 1

6

それぞれの懸念事項を個別に説明しましょう。

  1. TransportWithMessageCredential を使用せず、ユーザー名とパスワードを使用しない理由 - つまり、クライアントでユーザー名とパスワードを管理するだけでよく、クライアント証明書の問題はなくなります。

  2. NetTcpBinding では、サーバーはインバウンド トラフィック用にポートを開く必要があります。クライアントは、クライアントがそのポートに接続できるようにするだけでよく、特定のポートでインバウンド接続を許可する必要はありません。カスタム ポートへのアウトバウンド接続を許可することに問題がありますか?

  3. NetTcpBinding は、トポロジーに SOAP 仲介者がいないことを前提として、配信を保証する Tcp を使用します。配信または処理を保証しようとしていますか?

WSDualHttpBinding は、クライアントにインバウンド接続用のポートを開くよう強制するため、ほぼ確実に受け入れられません。デュプレックスに関するブログ記事をしばらく前に書いたので、問題を明確にするのに役立つかもしれません

また、この種のシナリオ用に設計されたSignalRも参照してください。Web アプリ用に設計されていますが、.NET クライアントもあります。

于 2012-04-19T09:27:08.440 に答える