WPF 客户端与 ASMX 服务通信时性能会受到巨大影响,为什么?

发布于 2024-11-26 07:16:14 字数 795 浏览 2 评论 0 原文

我有一个 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 上的事实是否导致了问题。
欢迎任何建议 谢谢

I have a WPF desktop application ( .NET 4.0 ) that is talking to an existing asmx service that was written using .NET 2.0
Here is the code we are using to access the service

 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;

Ok now when I run this code for the first time ( its hooked up to a button click ) it takes about 19 seconds. When I click the button again it takes less than one second. This is 100% repro. What makes this baffling is I wrote a console client against the webservice ( .NET 2.0 ) and it takes less than one second every time. what am I missing here.
Is this a WPF thing? the way it interacts with the (de)serializer for the asmx service . Is the fact that the service is on .NET 2.0 causing an issue.
Any suggestions welcome
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木有鱼丸 2024-12-03 07:16:14

我要做的第一件事是启动 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文