我有一个简单的 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/