1

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

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

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

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

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

在此先感谢您的帮助

4

1 回答 1

0

我非常沮丧,所以尽管尝试在 IIS7 中托管它并且它成功了!!!当我在 IIS 中托管它时,性能有所提高。希望这可能对某人有所帮助。如果有人意识到根本原因,请发布。

于 2010-11-26T12:08:30.947 回答