我正在建立一个ASP.Net网站,该网站接受PDF作为输入并处理它们。我正在生成一个具有特定名称的中间文件。但我想知道多个用户是否同时使用同一个站点,那么服务器将如何处理这个问题。
我该如何处理呢?多线程会做这个工作吗?我生成的中间文件的文件名怎么样?我怎样才能确保它们不会互相覆盖。如何实现绩效?
很抱歉,如果这个问题对你来说太基础了。
答案 0 :(得分:0)
我不是.NET,但它听起来像是一个普通的问题,所以这是我的两分钱。
就像你说的那样,多线程(通常不同的请求在不同的线程中运行)会处理大多数类型的问题,因为每个方法调用都涉及在单独的上下文中运行的新对象。
但也有例外情况: - 单个(全局)对象,其任何操作都有副作用 - 其他资源(文件等),这正是你的情况。
所以在文件的情况下,我会考虑这些(相互排斥的)替代方案:
(1)永远不要将上传的文件写入磁盘,而是将其保存到内存中并在那里处理(如字节数组)。在这种情况下,您将利用每个请求的线程保护。如果您的文件非常大,则无法应用此文件。
(2)选择非常随机化的名称(如UUID)将它们写入临时位置,这样如果两个用户同时上传,它们的名称就不会发生冲突。
我尽可能选择(1)。
最佳