2009-06-10 19 views
1

Windowsサービスとして実行される単純なソケットサーバーの開発について、少し研究しています。私はこれをC#で書くつもりですが、.Netソケットはslllooooowwwwwであることを認識しました。 .Net Networkingクラスを使った最初のロールアウトはうまくいくでしょうが、誰かが高性能な(そしてうまくいけば無料の)ソケットライブラリを持っているのではないかと思います。私はおそらく何かC++で書かれたものを考えています.netでcomオブジェクトとして使うことができます。ソケットの推奨事項

これまでindyソケットを使っていましたが、プロジェクトで現在進行中のアクティブな開発がないようです。私はいくつかのグーグルをして、いくつかのライブラリを見つけましたが、実際に成功したソケットライブラリを実際に使った人からフィードバックを得たいと考えていました。

助けてください。ありがとう。

+1

私は間違っている可能性がありますが、.NETソケットとP/Invokeを通じてC++ COMソケットライブラリを使用するとパフォーマンスが低下すると思われます。 – Nate

答えて

2

私はあなたの最初の仮定を再訪するでしょう - 私は正確ではないと思います。

私の経験では、.NETのフレームワークソケットライブラリの使用によるオーバーヘッドは高くありません。私が見た非常に遅いソケットコードの主な原因は、人々が非C#コードをC#に直接移植しようとするとき、特に同期C++ソケットコードを移植しようとするときです。 .NETのBCLのソケットは、すべて非同期で使用するように設計されています。それらを強制的に同期モデルに入れようとすると、非常に遅いコードを引き起こすかなりのブロッキングが追加されてしまいます。

ソケットクラスを設計した方法で試してみてください。あなたはパフォーマンスと使いやすさにとても満足していると思います。

+0

答えをありがとう。 .Netソケットでの私の最初の経験は、バージョン1.0に戻っていたので、私が実際に何をしていたのか分からなかった。私は組み込みのクラスに試してみましょう。 – infocyde

+1

何をしているかによって、.NETのソケットとネットワークを処理するための素敵なクラスがたくさんあります。特に、WCFを見てみましょう。これは、プロジェクトに応じて、あなたの人生をはるかに容易にすることができます。 .NETのソケット(特にポスト2.0)はとても良いです。 –

2

あなたが必要とする前に最適化しているようなサウンドです。私は先に進んで.NETでビルドし、潜在的には遅いとなるようなことをしようとする前に、パフォーマンスの問題があるかどうかを確認します。 COMには多くのオーバーヘッドがあります。

+0

良い点。私は.netのクラスを与え、試してみて、どれくらい私を得るのか見てみましょう。 – infocyde

関連する問題