クラスに論理的な問題がありHttpWebRequest
ます。
名前空間のHttpWebRequest
クラスを使用していますが、これを行うと:System.Net
while(true)
{
HttpWebRequest request = WebRequest.Create("http://somesite.com/") as HttpWebRequest;
HttpWebResponse responce = request.GetResponse() as HttpWebResponse;
}
1 秒間隔を超えて 1 つずつ応答が返されますが、受信データが非常に小さいため、インターネット接続はより速く動作すると思います。次に、これを試します:
while(true)
{
HttpWebRequest request = WebRequest.Create("http://google.com/") as HttpWebRequest;
HttpWebResponse response = request.BeginGetResponse(EndReceive, obj);
}
internal void EndReceive(IAsyncResult ar)
{
obj.Response = obj.Request.EndGetResponse(ar) as HttpWebResponse;
}
そして、速度が非常にわずかに増加しますが、約10〜30%ですが、非同期リクエストを使用し、1つではなく5つのリクエストをサーバーに送信します。なぜ速度が100%以上増加しなかったのですか?サーバーが1つのIPから同時に複数のリクエストを処理できない場合は問題ありません...しかし、コードで10個のコンソールアプリを実行すると:
void SendRequest()
{
HttpWebRequest request = WebRequest.Create("http://google.com/") as HttpWebRequest;
HttpWebResponse responce = request.BeginGetResponse(EndReceive, obj);
}
void EndReceive(IAsyncResult ar)
{
obj.Response = obj.Request.EndGetResponse(ar) as HttpWebResponse;
}
4~8倍くらいスピードが上がったのですが、HttpWebRequest
クラスの問題でしょうか?そして、1 つのアプリケーションで多くの非同期要求を処理できないのはなぜですか?