我做了一个测试项目,在Silverlight中发出HTTP POST请求(使用HttpWebRequest和WebClient类)。我一直得到大约20个电话/秒的性能,我认为这很慢。我发送和接收的唯一数据是小字符串(大约20个字符)。让我感到惊讶的是WCF(SOAP over HTTP)showed a similar performance。但是,当我进行相同的测试,但确保所有程序逻辑都在主线程中运行时,性能大幅提升,最高可达150次/秒。
任何人都可以解释可能导致这种影响的原因吗?我的意思是,多线程本身不会导致这么慢。
注意:我的所有测试都使用localhost连接。
更新:经过广泛研究后,我得出结论the performance problem is inherent to Silverlight v3。
答案 0 :(得分:1)
当您在不启动单独线程的情况下执行WCF调用时,它们将在UI线程上执行,并且它们不会立即执行,而是在UI线程有足够时间执行时执行它们。
检查this blog post,它可能正是您所追求的。与你发现的相反,他发现后台线程上的WCF调用更快 - 显然是因为线程不需要做任何其他工作。