1

所以我正在努力加快我们的应用程序启动时间——而且我已经确定了一个需要解决的主要瓶颈。我们的每个 web 服务客户端类都需要永远和一天的时间来实例化。一些调查显示这完全是由于运行 GenerateXMLMappings 的 SoapHttpClientProtocol。我开始搜索这方面的信息,发现这个 SO post Slow SoapHttpClientProtocol constructor

我已经准备好吹响号角了,因为我的问题反映了信中所说的内容。我经历了第一篇文章中列出的每个步骤,使用 sgen 预生成序列化程序 dll,然后从代码中删除各种标签并将其构建到我在应用程序中作为普通参考引用的普通 dll(相反到网络参考)。然而,毕竟这一切,我在分析应用程序时没有看到任何区别。作为 SoapHttpClientProtocol 构造函数的一部分,GenerateXMLMappings 仍然花费了大量时间。

我已经验证它实际上是在使用我的自定义 web 服务客户端 dll。我还验证了它至少在寻找 XmlSerializers dll(如果我不包含该文件,我可以看到一个 filenotfound 被吐出)。

有没有人有关于 SoapHttpClientProtocol 构造函数如何决定它需要做什么的详细信息?这是一个非常令人沮丧的问题,因为整个过程似乎是黑盒的,没有好的方法可以看到内部实际发生的事情。

在此先感谢您的帮助-我对此完全靠墙。

4

1 回答 1

0

我经常打这个。我很乐意猜测,但猜测通常是错误的。

为了找出真正的问题,我只是在 IDE 下运行应用程序,并在它运行缓慢时暂停它几次,看看它在做什么。就是这个技术

好的,这是我见过的猜测,但对你来说可能是错误的。

  1. 在加载期间从资源中获取字符串。
  2. 构建数据结构时通知变得疯狂。
  3. 初始化第 3 方网格/控件,即使是空数据。
  4. 解析/编写 XML 比您想象的要多。
  5. 压缩/解压缩比您想象的更多。
于 2010-08-25T19:57:04.070 回答