我创建了一个自定义线程池,它接受来自客户端的作业、处理它并返回结果。目前这是在 MVC 应用程序中运行的。如果用户使用表单上传要完成的作业,服务器将对其进行处理并返回报告。处理涉及向多个外部服务发送 SOAP 请求并累积响应。
最近我创建了一个基于 Windows 的应用程序,它可以自动执行上传任务,还可以处理作业当前状态的回调。因此,我使用 netTCPBinding 和回调合同实现了 WCF 服务并将其托管在控制台应用程序中。一切运行良好,Windows 应用程序正在接收回调等。但主要问题是性能。通过 WCF 请求处理相同作业的时间是通过 MVC 应用程序手动上传的 4 倍。
最初我怀疑它是通信滞后,因此我实现了一个秒表来查找每个步骤的持续时间。令人惊讶的是,延迟不是由于通信延迟,它是最后一个向外部服务发出 SOAP 请求的例程。在我看来,这与从客户端到服务器的作业传输模式无关,并且它也在自定义线程池中的单独线程中运行。
我在 MVC 应用程序和 WCF 服务中使用相同的 API。逻辑,日常一切都是一样的。我的第二个疑问是 WCF 是否会暂停/暂停正在运行的线程来处理新请求?
任何人都可以洞察可能是什么原因吗?我可以根据需要提供更多信息。
在此先感谢您的帮助