在自托管WCF和MVC中执行相同任务时的巨大性能差异

时间:2010-11-24 08:48:35

标签: wcf nettcpbinding performance

我创建了一个自定义ThreadPool,它接受来自客户端的作业,处理它并返回结果。目前,这是在MVC应用程序中运行。如果用户使用表单上载要完成的作业,则服务器将处理该作业并返回报告。处理涉及将SOAP请求发送到多个外部服务并累积响应。

最近我创建了一个基于Windows的应用程序,它可以自动执行上传任务,还可以处理作业当前状态的回调。因此,我使用netTCPBinding&amp ;;实现了一个WCF服务。回调合同&在控制台应用程序中托管它。一切运行良好,Windows应用程序正在接收回调等。但主要问题是性能。通过WCF请求处理相同的作业比通过MVC应用程序手动上载需要多4倍。

最初我怀疑它是否存在通信滞后因此我实施了一个秒表来查找每个步骤的持续时间。令人惊讶的是,延迟不是由于通信延迟造成的,而是发生的最后一个例程是对外部服务进行SOAP请求。在我看来,这与从客户端到服务器的作业传输模式无关,这也可以在自定义ThreadPool中的单独线程中运行。

我在MVC应用程序和WCF服务中使用Same API。逻辑,常规一切都是一样的。我的第二个疑问是WCF是否暂停/暂停正在运行的线程来处理新请求?

任何人都可以了解可能是什么原因吗?我可以根据需要提供更多信息。

提前致谢帮助

1 个答案:

答案 0 :(得分:0)

我感到非常沮丧,所以虽然尝试在IIS7中托管它并且它工作了!当我在IIS中托管它时,性能得到了提升。希望这可能对某人有所帮助。如果有人意识到根本原因,请发帖。