为什么从网页上调用Web服务会变慢?

时间:2008-10-14 16:44:29

标签: asp.net web-services

我们有一个DLL用作我们网站前端和后端售票系统之间的中间层。插入票务系统的方法有点难以解释,但简短的版本是它很慢。我得到的最佳案例是提交时间为9秒。

真正的问题是,我只能通过Windows应用程序而不是通过ASP.NET网站获得该时间。我已经设置了一个Windows测试应用程序和一个用于测试的网页,即使代码在它们之间被复制,网页也会在17-20秒内提交,而Windows应用程序则需要8-11秒。 / p>

可能导致什么?

编辑:回答几个答案......

对Web服务的调用占用了大部分时间,但我无法控制这个由Web票务系统供应商提供的Web服务。我需要找出为什么Web服务在被称为不同类型的应用程序时花费不同的时间。两种情况下的代码完全相同,并且它运行循环然后报告记录的时间。

代码是:

for (int i = 0; i < numIterations; i++)
        {
            startTimes[i] = DateTime.Now;

            try
            {
                cvNum = Clearview.Submit(req, DateTime.Now, DateTime.Now, false);
            }
            catch (Exception ex)
            {
                exceptionCount++;
                lblResult.Text += @"<br />Exception Caught: " + ex.Message + @"<br />";                    
            }

            endTimes[i] = DateTime.Now;
    }

在这两种情况下,它都是相同的循环,我正在标记调用库之前和之后的时间,它会进行进一步处理,然后调用Web服务。但那个处理应该是不一致的呢?我在调试期间进行了跟踪,没有看到任何延迟进入实际的Web服务调用...

再次编辑:与Ants合作,在这两种情况下,99.4%的时间仅在网络服务电话上发送。似乎没有区别......除了超时时网页的播放时间比Windows应用程序要长。

3 个答案:

答案 0 :(得分:2)

Web服务相对于Web服务器的位置可能存在问题。此外,Web UI中的页面结构和其他处理可能会影响应用程序处理所需的时间。

如上所述,双面记录项目是一个好主意,如果这不能满足您的需求,您可以尝试使用性能分析器,例如Red Gate的Ants Profiler,它可以帮助识别行,方法或类那是大部分时间都在使用。

答案 1 :(得分:1)

使用日志在两侧涂抹您的应用程序 - 这将显示时间的去向。如果这没有用,请使用Wireshark跟踪网络活动。

答案 2 :(得分:1)

你是否在同一台机器上运行?您呼叫的中间层是否位于远程计算机上?您提到的持续时间模糊地感觉就像DNS超时问题,当打开连接时会导致第一个(向下/错误解决)DNS响应超时的惩罚。你确定在两次调用中将DLL指向中间层的配置文件/ var是否相同?

我接下来建议使用Wireshark查看发生了什么。您至少可以确信后端处理时间(应该是,反正)是相同的......