WPF 客户端与 ASMX 服务通信时性能会受到巨大影响,为什么?
我有一个 WPF 桌面应用程序 ( .NET 4.0 ),它正在与使用 .NET 2.0 编写的现有 asmx 服务进行通信
这是我们用来访问服务的代码
Stopwatch s = new System.Diagnostics.Stopwatch();
s.Start();
APMService svc = new APMService();
UserInfoExtended[] Users = svc.FindAllUsers(LicenseKey);
s.Stop();
TimeSpan ts = s.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
MessageBox.Show("WS CALL" + " : " + elapsedTime);
return Users;
现在,当我第一次运行此代码(它连接到按钮单击)时,大约需要 19 秒。当我再次单击该按钮时,只需要不到一秒钟的时间。这是 100% 重现。令人困惑的是,我针对 Web 服务 (.NET 2.0) 编写了一个控制台客户端,每次只需要不到一秒的时间。我在这里缺少什么。
这是 WPF 的事情吗?它与 asmx 服务的(反)序列化器交互的方式。该服务位于 .NET 2.0 上的事实是否导致了问题。
欢迎任何建议
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我要做的第一件事是启动 Fiddler 来监视实际请求。这使您可以查看延迟是在实际调用中还是在代理类中。
如果是在通话中,您应该在服务中查找解释。如果没有,请尝试在 Visual Studio 中分析您的代码。它可以让您了解代码中延迟的位置。
The first thing I'd do is fire up Fiddler to monitor the actual request. This allows you to see if the delay is in the actual call or in the proxy class.
If it's in the call, you should look for an explanation within the service. If not, try profiling your code in Visual Studio. It could give you some insight as to where the delay is in code.