Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
Asp.net 为什么Web服务调用比Web POST请求慢_Asp.net_Web Services_Iis_Web Applications - Fatal编程技术网

Asp.net 为什么Web服务调用比Web POST请求慢

Asp.net 为什么Web服务调用比Web POST请求慢,asp.net,web-services,iis,web-applications,Asp.net,Web Services,Iis,Web Applications,我在IIS中托管了一个.NET web服务。在过去几年中,客户端一直在使用web服务,当客户端连接速度较慢时(例如GPRS),有时会发生超时事件。另一方面,客户端有时必须将一些数据发布到另一个网页(ASP.NET web应用程序的一部分),并且POST请求中的数据大小通常大于web服务调用中的实际有效负载。然而,POST请求比web服务调用快得多 为了进一步证明这一点,我使用一种方法创建了一个测试web服务,并使用完全相同的操作创建了另一个单独的web页面,即接收100K并发送回100K(随机字

我在IIS中托管了一个.NET web服务。在过去几年中,客户端一直在使用web服务,当客户端连接速度较慢时(例如GPRS),有时会发生超时事件。另一方面,客户端有时必须将一些数据发布到另一个网页(ASP.NET web应用程序的一部分),并且POST请求中的数据大小通常大于web服务调用中的实际有效负载。然而,POST请求比web服务调用快得多


为了进一步证明这一点,我使用一种方法创建了一个测试web服务,并使用完全相同的操作创建了另一个单独的web页面,即接收100K并发送回100K(随机字节),我使用一个测试客户端调用web服务方法,并向web页面发送帖子,并使用相同的客户端返回响应。从web服务接收回复和从web post请求接收回复的差异很大,即大约1200毫秒。为什么会这样?web服务上是否有任何这样的配置会产生如此大的差异?是SOAP调用堆栈吗?序列化/去序列化

许多因素可能是造成这种情况的原因

我首先想到的是SOAP可以被看作是一个冗长的协议。也就是说,XML负载中有很多数据是双向的。XML本身是冗长的,而且它并不是世界上处理速度最快的东西。当然,您可以使用优化的库来处理它的数据,但它将被解析为对象树,然后您可以遍历节点以深入到所需的数据。除非您使用的是XPath,否则它也会做同样糟糕的事情

这都是假设你实际上在使用SOAP。并且您的Web服务配置正确。并且在连接到Web服务时不会发生数据包丢失。而且你的防火墙不会产生问题。而且没有加密/解密开销


根据我自己的经验,一件经常导致服务器端显著减速的事情是一个或多个抛出的异常。尝试跟踪。

好的,SOAP/XML可能是一个因素,我们正在讨论更多的数据传输和解析开销,但我仍然认为它不应该有这么大的影响。。我的测试应用程序中至少不存在其他2个因素,即加密和异常(应用程序级别)。。不过我还是要试试费德勒。。还不确定哪些配置选项可能导致此问题。。。谢谢,你的包多大?而且,我发现了这份文件,它相当古老,但从研究角度来看可能会帮助您: