0

タイトルが実際に正しいかどうかわからないので、ここでさらに説明します。私は最初から始めます:)

私は開発に c# と .net を使用しています。

SOAP Web サービスにリクエストを行うアプリケーションがあり、ユーザー リクエストごとに Web サービスに対して 3 ~ 10 のリクエストが生成されます。それらはすべて非同期で実行して一度に完了する必要があるため、Web サービスの Async メソッドを使用します。参照を生成し、コールバックで結果を待ちます。しかし、私が行うすべての非同期呼び出しに対してスレッドを開始する (またはプールから取得する) ように見えるので、10 個のクライアントがある場合、30 から 100 のスレッドを生成する必要があり、16 コアのサーバーでもひどいように聞こえます :)低レベルのトランスポート実装を、ノンブロッキング ソケットを使用し、1 つのスレッドで並列に実行される少なくとも 50 個のソケットをあまりオーバーヘッドなく処理できる独自のものに置き換えたいと考えました。しかし、私は実際にオーバーライドをどこに置くのが最善かわかりません。

クラスを分析System.Web.Services.Protocols.SoapHttpClientProtocolしたところ、実際に使用できる GetWebRequest メソッドがあることがわかりました。オブジェクトが作成するオブジェクトを何らかの方法で中断し、そこからすべてのヘッダーと本文を含む http 要求を取得し、それを自分のソケットで送信できれば..

どのアプローチを使用するかについてのアイデアはありますか? それとも、私が使用できるフレームワークに組み込まれているものがありますか?

4

1 に答える 1

0

.NET 2.0 Web サービスの代わりに .NET WCF を使用することを検討しましたか? 転送オプションに関しては、.NET 2.0 Web サービスよりも .NET WCF の方がはるかに柔軟性があります。段階的な学習曲線がありますが、それだけの価値があります。トランスポート オプションの詳細については、WCF トランスポート オプションを確認してください。MSN チャネル 9 には、優れたチュートリアル ビデオがいくつかあります。

于 2010-03-14T09:08:01.150 に答える