C# 在我的asp.net mvc网站上拥有用户管理的图库的最佳方式是什么

C# 在我的asp.net mvc网站上拥有用户管理的图库的最佳方式是什么,c#,asp.net-mvc,image,C#,Asp.net Mvc,Image,我有一个网站,其中一个页面是一组静态图片。用户希望能够上传自己的图片,并将其显示出来,而不是静态列表。我看到这样的代码解释了一个错误。我正在试图弄清楚是否应该将图片存储在web服务器文件系统、SQL server数据库或其他地方 这里有关于最佳实践的建议吗?在文件系统中存储更容易实现,您可以利用目录结构。但是,如果您需要的不仅仅是简单的Hirrachy结构(例如标记),那么很可能需要一个数据库来进行索引(可以是SQL server或XML数据库) 第二个问题来了。如果需要索引,元数据存储在DB中

我有一个网站,其中一个页面是一组静态图片。用户希望能够上传自己的图片,并将其显示出来,而不是静态列表。我看到这样的代码解释了一个错误。我正在试图弄清楚是否应该将图片存储在web服务器文件系统、SQL server数据库或其他地方


这里有关于最佳实践的建议吗?

在文件系统中存储更容易实现,您可以利用目录结构。但是,如果您需要的不仅仅是简单的Hirrachy结构(例如标记),那么很可能需要一个数据库来进行索引(可以是SQL server或XML数据库)

第二个问题来了。如果需要索引,元数据存储在DB中,那么实际的二进制图像数据呢?将二进制文件放入SQL很容易维护,但您需要从web服务器实现自定义缓存策略(将图像数据转储到web服务器本地磁盘驱动器),以避免web/db之间的过多通信

另一方面,您只需将密钥保存在db中,并将映像保存在本地磁盘(web服务器)中,这很容易实现,但可能会出现两个问题:

  • 更难扩展。假设您需要多个web服务器,那么像这样同步内容可能会有问题

  • 文件系统索引。如果将文件存储在本地,则所有文件都可能位于一个文件夹中。对于任何文件系统,一个位置存储的文件越多,意味着它查找或从中获取内容的速度越慢。一个图像库可以扩展到成千上万个文件,这可能会导致问题。(当然,您可以采用一些策略来分离存储,但这会增加复杂性)


  • 在链接的示例中,您建议程序员使用xml文件。 此解决方案适用于低带宽站点和少量图像。 但是如果两个用户同时上传一个文件会怎么样呢?第二个用户可能会收到错误,因为xml文件已经在使用中

    我建议您将图片存储在文件系统中,并将图片元数据(描述、标记、地理标记…)存储在数据库中

    避免将二进制数据存储在数据库中。你会得到一个非常低效的db性能和非常大的尺寸