Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将低级web服务引用调用传输替换为自定义调用传输_.net_Web Services_Sockets_Nonblocking - Fatal编程技术网

.net 将低级web服务引用调用传输替换为自定义调用传输

.net 将低级web服务引用调用传输替换为自定义调用传输,.net,web-services,sockets,nonblocking,.net,Web Services,Sockets,Nonblocking,我不确定这个标题听起来是否正确,所以我会在这里给出更多的解释。 我将从头开始:) 我正在使用c#和.net进行开发 我有一个应用程序,它向一些soap web服务发出请求,对于每个用户请求,它会生成3到10个web服务请求,它们都应该运行异步以在一次内完成,所以我使用web服务生成引用的异步方法,然后等待回调结果。但它似乎为我进行的每个异步调用启动了一个线程(或从池中获取),因此,如果我有10个客户机,我就要产生30到100个线程,甚至对我的16核服务器来说,这听起来也很糟糕:)所以我想用我自己

我不确定这个标题听起来是否正确,所以我会在这里给出更多的解释。 我将从头开始:)

我正在使用c#和.net进行开发

我有一个应用程序,它向一些soap web服务发出请求,对于每个用户请求,它会生成3到10个web服务请求,它们都应该运行异步以在一次内完成,所以我使用web服务生成引用的异步方法,然后等待回调结果。但它似乎为我进行的每个异步调用启动了一个线程(或从池中获取),因此,如果我有10个客户机,我就要产生30到100个线程,甚至对我的16核服务器来说,这听起来也很糟糕:)所以我想用我自己的低层传输实现来取代它,它使用非阻塞套接字,并且可以在一个线程中处理至少50个并行运行的套接字,而不会有太多开销。但我真的不知道该把我最好的放在哪里

我分析了
System.Web.Services.Protocols.SoapHttpClientProtocol
类,发现它有一些我实际上可以使用的GetWebRequest方法。如果我能以某种方式中断它创建的对象,并从那里获得一个包含所有头和正文的http请求,然后用我自己的套接字发送它就好了


你有什么想法吗?或者我可以使用框架中内置的一些东西?

您是否考虑过使用.NET WCF而不是.NET 2.0 Web服务?与.NET 2.0 web服务相比,.NET WCF在传输选项方面具有更大的灵活性。它有一个逐步学习的曲线,但它很值得。有关MSN通道9中的传输选项的详细信息,您可以找到一些好的。

您使用的是什么版本的.NET?EHM,您能提供更多的细节或给出一些链接,以便我能考虑吗?它可以对套接字执行非阻塞操作并发出http请求?