2011-08-17 57 views
0

我们有一个应用程序将多个线程查询发送到SOAP服务。我们通过增加每个请求的线程执行时间数量来增加命令数量。为了理解为什么,我们写了一个SOAP扩展 - 结果很明显,即使有5个16处理器服务器的流,序列化时间大约是请求时间的95%,10个线程没有等待查询(在1个线程中查询的时间大约是150ms)。 谁遇到过这种行为?怀疑是在网络服务中,或在具有“死”块的串行器中。
P.S.在每个线程上创建自己的Web服务实例。
P.P.S.反序列化线程的数量似乎没有影响。在多线程应用程序中使用Web服务客户端

+0

您是否在使用“添加Web参考”?不要这样做。使用“添加服务引用”来使用更现代的Web服务客户端堆栈。此外,如果您正在编写这些服务,请将它们写入WCF,除了SOAP之外,还可以使用TCP/IP上的二进制文件。 –

+0

服务已经存在,我们不能将它重写到WCF。你遇到过这个问题吗?你解决了这个问题? – Boo

+0

解决方案是使用WCF。 XML序列化器效率不高。你可以做的最好的事情是预先生成序列化类(使用sgen.exe),但这只能帮助启动。 –

回答

1

解决方案是使用WCF。

XML序列化器效率不高。你可以做的最好的事情是预先生成序列化类(使用sgen.exe),但这只能帮助启动。

DataContractSerializer更高效。它限制了XML的复杂性,例如使用元素而不是属性。其结果是快速序列化和反序列化,以及将XML作为文本或二进制输出的能力。

相关问题