【发布时间】:2026-01-12 06:05:01
【问题描述】:
我有一个简单的 Web 应用程序模块,它基本上接受来自移动客户端应用程序的在 PageLoad 上保存 zip 文件的请求。
现在,我要做的是解压缩文件并读取其中的文件并进一步处理它..包括将条目输入数据库。
更新: zip 文件及其内容的大小将相当小,因此服务器不应承受太多负载。
更新 2: 我刚刚读到了 when IIS queues requests(在全局/应用级别)。那么这是否意味着我不需要实现复杂的请求处理机制,而 IIS 可以自己处理应用程序?
更新 3: 我正在寻找卸载下载 zip 的处理,不仅是为了最大限度地减少开销(在性能方面),而且也是为了避免 @987654323 的问题@ 当文件被处理并将记录更新到同一个表中时。在多个设备请求页面和后台任务处理数据库并行更新的场景下会导致异常。
到目前为止,我已经确定了两种解决方案:
- 实现并发/消息队列
- 将文件处理代码实现到一个单独的工具中,并在服务器上安排一个作业来检查未处理的文件并按顺序处理它们。
倾向于Queuing Mechanism 我将尝试实现它,因为它似乎不太依赖于配置。 v/s 在服务器端手动配置作业/计划。
那么,你们为此推荐我什么?
此外,在请求 zip 文件并将其保存在服务器端后,客户端和服务器端的连接会在此之后释放。不想给我的 IIS 增加负担。
假设有几百个客户端同时请求该页面..
实际上我之前都没有使用过它们,所以任何示例或操作方法都会更受欢迎。
【问题讨论】:
-
如果您的服务器在处理过程中崩溃了怎么办?它应该 (i) 在重新启动时恢复处理还是 (ii) 丢失任何排队或正在进行的工作?
-
@IanMercer 那将是 (i)。保存 zip 文件后,它应该解压缩内容..开始阅读文件..使条目符合要求。到文件。 一次性 这就是我所追求的。丢失正在排队的数据/任务不是一种选择。 :|
-
没有无限数量的无限快核心,这是不可能的。如果您想接近不丢失数据的目标,您需要将请求排入持久队列(数据库或数据库支持的队列)并在单独的进程中处理。
标签: c# asp.net iis backgroundworker threadpool