我们有一些Proyect在ASP.NET Core 8:Web MVC应用程序和Web API中一起使用,可将端点提供到移动应用程序。
IT是一个多租户系统,租户(客户)可以存储徽标,照片,PDF文档以及几乎所有这些都可以在公共网页或移动应用程序中显示,而其他人则可以向每个客户端私有化。那一刻,我们在Web应用程序的wwwroot中都有所有图像,从而使该URL发送到移动应用程序,以便它也可以显示这些图像。
有些客户有几乎5GB的照片和其他数据。数据库存储不是一个选项,因此我们正在考虑将这些文件放在外部存储中。我们正在阅读有关Amazon S3存储桶或其他公司存储桶的信息,它不一定是亚马逊,但我们担心这会如何影响性能和成本。 将文件放在存储桶中是一个很好的实践吗? 当该图像在存储桶中时,如何在网页中显示一个简单的图像,例如徽标?临时URL? 在我的服务器中读取文件并发布该文件?
COSTST ...想象每个客户5GB,拥有200多个客户...
最好将文件放在我们的服务器中,但是在另一个磁盘中,甚至仅获取另一台服务器?但是,我们如何避免人们获得某些私人图像呢?
thanks.
首先,两者都独自托管文件,例如“在我们的服务器中拥有文件,但在另一盘磁盘/获取另一台用于文件的服务器中,以及使用云服务(例如AWS/Azure)托管文件是不错的选择。这取决于您的预算以及您想为文件管理系统付出多少努力。服务器中的主机文件之间的差异与IaaS和PaaS/SaaS之间的差异相似,您可以要求AI在其上为您提供详细的解释。
我认为应该首先考虑预算,我将以Azure为例。在您的情况下,您需要存储和加载的文件是徽标/照片/pdf文档,因此我们需要选择的服务是azure是azure blobstoreaper
,它与您的需求完全匹配。您可以使用定价计算器
计算您需要支付多少服务。如果您希望将文件托管在自己的服务器中,那么我们需要考虑在这些文件上有高频写/更新操作还是只是加载和显示。就像您知道IO密集型模型对cpu
的需求很高。您需要确保服务器可以符合提前的要求,并计算服务器需要多少支付。下一个我们需要考虑的是,我们需要为文件管理支付多少努力,正如您提到的那样,“避免人们获得某些私人图像”。我认为它会介绍您在项目中设置的身份验证和授权。假设您的所有文件都是通过受控端点提供的,那么我们只需要在端点上执行身份验证即可。如果我们不想使用此计划,那么我们将面临一个问题,即在使用登录并获取图像URL时,他们可以直接访问URL而无需在网络时间内登录。在这种情况下,它很复杂,并且取决于您的结构来设计限制。例如,如果您使用了IIS + Windows身份验证,则IIS可以帮助您强制执行用户提前验证,然后访问IIS的文件主机。但是,如果我们使用诸如Azure Blob存储之类的云服务,那么我们也可以通过控制器端点来提供文件,如果我们也希望直接访问文件,但可以使用限制,我们可以使用Shared访问Signatures(SAS)(SAS)代币或使用Azure AD ADENTICATION。 任何人,没有最佳计划,只有合适的计划。我们还需要调整应用程序开发后的结构。使用云服务可以减少您的努力,并自己托管可能会减少付款。