c# - 更适合我的任务 : background worker or thread pool?

标签 c# asp.net iis backgroundworker threadpool

我有一个简单的 Web 应用程序模块,它基本上接受来自移动客户端应用程序的将 zip 文件保存到 PageLoad 上的请求。

现在,我想做的是解压缩文件并读取其中的文件并进一步处理它......包括将条目输入到数据库中。

更新:zip 文件及其内容的大小将相当小,因此服务器不会承受太多负载。

更新 2: 我刚刚读到关于 when IIS queues requests 的内容(在全局/应用程序级别)。那么这是否意味着我不需要实现复杂的请求处理机制,IIS 可以自行处理应用程序?

更新 3: 我正在寻找卸载下载 zip 的处理,不仅是为了最小化开销(在性能方面),也是为了避免 table-locking 当处理文件并将记录更新到同一个表中时。在多设备请求页面的场景下,后台任务处理数据库并行更新会引发异常。

到目前为止,我已经将注意力集中在两个解决方案上:

  • 实现并发/消息队列
  • 将文件处理代码实现到一个单独的工具中,并在服务器上安排一个作业来检查未处理的文件并连续处理它们。

倾向于队列机制 我将尝试实现它,因为它似乎不太依赖配置。 v/s 在服务器端手动配置作业/计划。

那么,你们有什么推荐我的呢?

此外,在服务器端请求并保存 zip 文件后,客户端和服务器端连接将在完成后释放。不想给我的 IIS 增加负担。

想象一下有几百个客户端同时请求该页面..

实际上我之前都没有使用过它们,所以任何示例或操作方法都会受到更多的赞赏。

最佳答案

我推荐 TPL 和 Rx Extensions:您将解压缩的文件列表设为一个可观察的集合,并为每个项目异步启动一个新任务。

关于c# - 更适合我的任务 : background worker or thread pool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681974/

相关文章:

c# - 如何获取访问我的网页的客户端的 IP 地址,我的网页或 WebApp 托管在某个远程服务器上

c# - 枚举的扩展方法,而不是枚举的实例

c# - 将 Javascript 值传递给 C# 代码隐藏

wcf - NET TCP/HTTP WCF 托管在 IIS 中

c# - 如何调试 PerfMon.dll 中的 0xc0000409 错误?/组装绑定(bind)

asp.net - 模拟不起作用 - 网络共享

c# - HTTP Post 请求返回 400 C#

c# - 拆分大小小于 1MB 的字符串

asp.net - 当数据库模式更改时如何获得编译时错误?

c# - 无法在Chrome中使用接受范围:字节复制Ogg音频