c# - 在 ASP.NET Web api 中处理文件的良好做法?

标签 c# asp.net file azure asp.net-web-api

我是新来处理文件的,所以我已经阅读了一些内容,尽管我觉得我仍然不确定如何使用 asp.net web api 处理它们。 我想要的是能够通过我的网络 API 访问图像。到目前为止,我读到的内容是,许多人更喜欢保存文件,然后调用其 URI,而不是将图像保存到数据库,而只保存 URI。所以我然后在 Web api 上创建了一个 imageController 来完成此操作(至少使用 localhost 工作)。现在有些人争论我应该使用 blob 存储(因为我使用 Azure)。

我的问题是:在我的项目中保存图像文件的文件夹是错误的还是不好的做法?否则保存图像的更好方法是什么?

最佳答案

你的问题实际上是两个问题:

1。数据库与文件系统

这取决于两个主要因素:安全性和性能。

如果您的图像敏感,并且在应用程序“外部”访问它们(例如通过热链接)的风险是 Not Acceptable ,则您必须使用数据库,并通过 ASP.NET 请求提供图像 - 您可以通过任何方式进行身份验证想。然而,这比第二个选项要消耗更多的资源(见下文)。

如果不考虑安全性,您肯定会选择文件系统存储。在传统托管上,您可以将它们保存在磁盘上的“任何位置”,并且 IIS(网络服务器)会将它们提供给用户(通过直接 URL,绕过 ASP.NET 应用程序)。出于多种原因(请求线程池、内存压力、平均请求持续时间、IIS 上的缓存...),仅此一项就比 DB+ASP.NET 解决方案带来了巨大的性能改进。

2。 Webrole 上的本地目录与 Blob 存储

但是,在 Azure 中,您可以,并且必须更进一步 - 使用独立于您的 Web 角色的专用 Blob 存储,因此即使 Webrole 上的 IIS 也不会为它们提供服务,而是 Blob 存储上的专用服务器(这不会根本不需要你担心——它就是有效的)。您的 Web 角色不应永久存储任何内容 - 它可能会失败、被 Azure 结构破坏并随时替换为新的角色。所有永久内容都必须存储到 Azure Blob 存储中。

关于c# - 在 ASP.NET Web api 中处理文件的良好做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113491/

相关文章:

java - 不常见泛型类型的接口(interface)列表

c# - 从 javascript 调用 c# 函数不起作用

c++更改不同文件中的全局变量值

c# - 业务层设计

python - 如何加载一个大文件并将其切成较小的文件?

python - 如何使用 Python 打印包含特定单词的文件的行数?

c# - WPF重用XAML资源

c# - 日期时间日/月 (02/12)

c# - 使用 jQuery 调用 ASP.Net 页面方法

asp.net - 使用Asp.net注入(inject)javascript