gpt4 book ai didi

c# - ASP.NET 线程 : should I use the pool for DB and Emails actions?

转载 作者:太空宇宙 更新时间:2023-11-03 22:24:40 25 4
gpt4 key购买 nike

考虑到可扩展性和性能,我正在寻找使用线程的最佳方式。

在我的站点中,我有两个需要线程的场景:

  1. UI 触发器:例如用户点击一个按钮,服务器应该从数据库中读取数据并发送一些电子邮件。这些操作需要时间,我不希望用户请求被延迟。这种情况经常发生。

  2. 后台服务:当应用程序启动时,它会触发一个线程,该线程每 10 分钟运行一次,从数据库中读取数据并发送电子邮件。

我找到的解决方案:

一个。使用线程池 - BeginInvoke:这就是我今天在这两种情况下所使用的。它工作正常,但它使用为页面提供服务的相同线程,所以我认为我可能会遇到可伸缩性问题,这会成为问题吗?

B.没有使用池——ThreadStart:我知道启动一个新线程比使用线程池需要更多的资源。这种方法是否更适合我的场景?重用打开的线程的最佳方式是什么?

C.自定义线程池:因为我的场景经常出现,也许最好的方法是启动一个新的线程池?

谢谢。

最佳答案

我个人会把它放到不同的服务中。将您的 UI 操作写入到数据库,并有一个单独的服务,该服务可以轮询数据库或对触发器使用react,并在此时发送电子邮件。

通过将其分离到不同的服务中,您无需担心 AppDomain 回收等问题 - 如果需要,您可以将其放在完全不同的服务器上。我认为它会给你一个更灵活的解决方案。

关于c# - ASP.NET 线程 : should I use the pool for DB and Emails actions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com