我们有一个应用程序将多个线程查询发送到SOAP服务。我们通过增加扫描每个请求的线程执行时间增加一个订单。为了理解原因,我们编写了一个SOAP扩展 - 结果很明显,即使有5个16处理器服务器流,序列化时间大约是请求时间的95%,10个线程没有等待查询(1个线程中的查询时间约为150ms)。
谁遇到过这样的行为?怀疑在网络服务中,或在具有“死”块的序列化器内。
附:在每个线程上创建自己的Web服务实例。
P.P.S.反序列化线程数似乎没有影响。
答案 0 :(得分:1)
解决方案是使用WCF。
XML Serializer效率不高。您可以做的最好的事情是预生成序列化类(使用sgen.exe),但这只会帮助启动。
DataContractSerializer效率更高。例如,它使用元素而不是属性来限制XML的复杂性。结果是快速序列化和反序列化,以及以文本或二进制形式输出XML的能力。