1

現在、クライアント (C++) とサーバー (.Net) がソケット ベースの通信を使用してデータを送受信するソケット ベースのテクノロジに取り組んでいますが、既存のソケット サーバーを WCF に置き換えようとしています。そのような動きをする前に、それを完全に明確にしたい

1) 既存のソケットを交換することは可能ですか? はいの場合、どうすればよいですか? 2)サーバーソケットアプリケーションは定義されたIP /ポートでリッスンし、クライアントソケットアプリケーションはそのIP /ポートのみにリクエストを送信しますが、WCFの場合、完全なURIがあります。つまり、IP /ポートにはWCFサービスの名前も含まれているため、どうすればよいですかこれ。3) どのタイプのバインディング構成を使用する必要があるか、それが基本的であるか wshttp ができない場合、アプリケーションのパフォーマンスに劇的な影響を与えます。

4

2 に答える 2

1

これは、アプリケーションの詳細をすべて知らずに答えるのはかなり難しいので、私はあなたが尋ねたのとは異なる順序でこれに答えようとします。

2)WCFは複数のトランスポート構成をサポートします。これらはHTTPに限定されません。たとえば、net.tcpトランスポートはhttpをまったく使用しませんが、クライアント側で複製する必要があるいくつかの複雑な機能を実装します。たとえば、メッセージフレーミング。これにより、選択肢が標準ベースのアプローチの1つに制限されます(そのようなことを行うのが好きでない限り)。

3)はい、httpトランスポートはおそらく直接ソケット通信よりも遅くなります。これに影響を与える可能性のあるさまざまな構成オプションがあるため、WCFに必要な機能と必要なパフォーマンスを正確にプロファイリングする必要があります。

1)それで私はこれが主な答えだと思います。はい、可能ですが、クライアントとサーバーの両方で変更を加える必要があります。WCFを拡張して既存のソケットメッセージング形式をサポートすることは潜在的に可能ですが、これは困難でコストのかかる開発プロセスになる可能性があります。したがって、net.tcp、msmqなどではなく、Webサービス(別名httpバインディングの1つ)を使用してこれを実装する必要があります。

WCFは実際には非常に構成可能であり、各レイヤーにはカスタムトランスポート、メッセージング、セキュリティなどを定義する機能があることに注意してください。したがって、ドキュメントを読むことをお勧めします。

于 2013-01-14T10:52:26.537 に答える
1

ソケット プログラミングを使用するときは、非常に低いレベルで行います。ソケット アプリケーションと比較して、wcf、Web サービス、リモート処理のいずれも適切に実行できません。WCF は非常に多くの機能を提供しますが、これらの機能はすべてバインディング構成に基づいており、これらはすべてソケット アプリケーションと比較して非常に高レベルであるため、パフォーマンスに関する限り、ソケット アプリケーションは wcf と比較して適切に機能し、これが既にビルドされている場合交換する必要はありません。

于 2013-01-14T16:06:00.310 に答える