【问题标题】:Is System.Threading.Thread usage suggested for a Web Application method with .Net Framework 4.0 and WCF Services ?是否建议将 System.Threading.Thread 用于具有 .Net Framework 4.0 和 WCF 服务的 Web 应用程序方法?
【发布时间】:2017-09-21 06:00:21
【问题描述】:

在我们的 Web 应用程序中,我们使用带有 WCF 服务的 .Net Framework 4.0。 我们有一个带有一些数据库操作的 WCF 服务,之后 它生成一个报告(报告生成需要时间)。 在这里,用户不需要等到报告生成,因此我们认为 实现线程(使用 System.Threading.Thread 类并在新的 数据库操作结束后立即从主线程线程)。 建议继续使用普通线程还是我们有更好的方法?

(注意:- 我们使用 .Net Framework 4.0 与 WCF 服务和 WCF 服务设置设置为 InstanceContextMode = PerCall 和 ConcurrencyMode 设置为 Single)

请指教。

【问题讨论】:

  • 如果同步调用需要这么长时间,你无论如何都必须支持它。不要使用后台线程,因为它违背了设计。

标签: .net wcf-data-services


【解决方案1】:

我建议使用 WCF 中可用的回调,这将有所帮助,因为如果您在配置中为 WCF 设置正确的模式,线程已经存在。 Push Data to the Client using WCF CallBack Service

除此之外,我建议不要使用 system.Threading,我建议使用 aync/await 和 Task 并行库作为 .net framewrok 4.0 的 nuget pkg。 https://www.nuget.org/packages/Microsoft.Bcl.Async/

如果你只想使用普通的 TPL,不要使用 nuget pkg 作为它在 4.0 框架中的可用,nuget 用于使用 async/await。

【讨论】:

  • 我们使用 MS VS 2010。所以我们不能像 nuget.org/packages/Microsoft.Bcl.Async 中提到的那样接近。此外,我们不需要回调服务,因为我们的业务场景不需要回调客户端。
  • @Narayanan - 但是您可以使用 .net framewrok 4.0 中提供的 TPL ..它比线程更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 2017-09-21
相关资源
最近更新 更多