跳至页脚内容
Iron Academy Logo
C# 数据库集成

C# 中的 Azure 存储介绍

Tim Corey
1h 05m 37s

Azure Storage 是 Microsoft Azure 提供的一项基本服务,与 .NET 技术相结合后,它将成为在云中存储和检索文件的强大工具。 在他的深入教程"Intro to Azure Storage in C#"中,Tim Corey 引导观众完成配置 Azure Storage 帐户、设置 Azure Blob Storage 以及将其集成到 C# ASP.NET Core MVC 项目中的具体步骤。

在本文中,我们将紧跟 Tim 的视频,探讨过程的每一个阶段,讨论实际 Azure 开发中使用的关键概念和术语。

Azure 存储定价和规划

Tim 首先解释了在 C# 应用程序中使用 Azure Storage 的经济效益。 无论您是使用 blob 容器存储文本文件、图像还是二进制数据,成本都是最低的。 他介绍了 Azure 定价计算器,可根据所选功能(如性能层级、冗余设置和数据操作)估算费用。

Tim 在 Azure 门户的通用 v2 下选择了块 Blob 存储,并为频繁访问的文件配置了热访问层。 他确保存储账户使用本地冗余存储 (LRS),在保证安全的同时最大限度地降低成本。

Tim 解释说:"对于一个存储 1 GB 数据和几千次操作的演示应用程序来说,每月的成本仅为 13 美分。

创建 Azure 存储帐户

在 Azure 门户中,Tim 演示了如何创建新的资源组和相应的 Azure 存储帐户。 命名规范非常严格--存储账户名称必须唯一、小写且不包含破折号。

在设置过程中,他禁用了 Geo-redundant 存储以节省成本,这对于开发原型或本地环境的开发人员来说是一个至关重要的提示。 他还启用了容器级别的匿名访问,但仅用于演示目的--警告实际生产环境需要安全访问。

Intro Azure Storage Csharp 1 related to 创建 Azure 存储帐户

Tim 还介绍了访问密钥、连接字符串和存储账户名称,这些都是 C# 项目连接 Azure 资源时必不可少的内容。

了解 Azure Blob 存储

Tim 重点介绍了如何使用 blob 容器来组织 Azure 存储账户中的数据。 他避免通过门户手动创建新容器,而是计划使用 Azure SDK for .NET 在代码中生成容器。

他解释说,安全访问密钥和连接字符串(可在账户安全设置下查看)将在应用程序中用于验证存储客户端库。

启动 ASP.NET Core 项目

Tim 使用 Visual Studio 创建了一个 .NET 9 MVC 网络应用程序。 虽然可以使用 Razor Pages 或 Blazor Server 等任何 UI 类型,但他还是选择 MVC 进行演示。

19:35 时,在 secrets.json 中,他安全地存储了敏感凭据:

  • 连接字符串

  • 存储账户密钥

  • 容器名称

  • 存储账户名称

Intro Azure Storage Csharp 2 related to 启动 ASP.NET Core 项目

Tim 解释说,appsettings.json 不应包含秘密,因为它会提交到源代码库中。 译文中应避免使用 "用户机密",而应使用 "用户机密 "将机密存储在本地,尤其是在开发过程中。

安装所需的 NuGet 软件包

为了与 Azure Blob Storage 交互,Tim 安装了 Azure.Storage.Blobs NuGet 包。 他对微软如何利用 Azure SDK 将功能模块化,从而实现更小、更易维护的应用程序表示赞赏。

Intro Azure Storage Csharp 3 related to 安装所需的 NuGet 软件包

Tim指出:"现在你可以通过NuGet获得你所需要的东西,比如Azure Blob客户端库,而不是将所有东西都捆绑到框架中。

Azure 存储的配置选项模式

接下来,Tim 创建了一个 POCO 类(BlobStorageOptions)来匹配配置中的键。他使用选项模式将配置绑定到强类型对象中,从而实现集中化和可测试的配置。

这种设置可以使 .NET 应用程序轻松地在不同环境中一致地使用 Azure 配置。

实现 Blob 存储服务逻辑

Tim 添加了一个名为 DataAccess 的新文件夹,并实现了一个名为 BlobStorage.cs 的类。 在内部,他使用 IOptions注入配置,并将其存储在一个私有实例中。

他构建了两种主要的异步方法:

上传文件逻辑

UploadFileAsync 方法:

  • 从 MVC 前端接收 IFormFile。

  • 使用连接字符串和容器名称从 Azure Storage SDK 创建 BlobContainerClient。

  • 检查现有容器,如果不存在,则创建新容器。

  • 将访问策略设置为 "无",确保容器不会被公众访问。

  • 使用 BlobClient 对象从流上传文件。

Tim 使用 using 语句和 await 调用安全地处理文件流,防止内存泄漏。

下载文件逻辑

在 DownloadFileAsync 中,Tim:

  • 接受字符串文件名或完整 blob URI。

  • 使用 URI 和安全凭证构建新的 BlobClient。

  • 使用 DownloadStreamingAsync 下载文件。

  • 在 FileContentResult 中封装流,以便从浏览器下载。

这将确保文件的安全性,并且只能通过应用程序访问,而不能直接通过 URL 猜测。

使用依赖注入注册 Blob 存储

Tim 为他的类定义了一个接口 (IBlobStorage),并在 .NET DI 容器中将其注册为一个单例。 由于该类是无状态的,只使用配置值,因此最好使用 Singleton。

与 MVC 应用程序集成

修改主控制器以使用 IBlobStorage。 翻译内容包括

  • 一个 UploadFile POST 方法,用于验证输入并调用 UploadFileAsync。

  • GetFile POST 方法会检查 URL,然后调用 DownloadFileAsync。

每种方法都与存储客户端交互,以安全地处理 blob 文件,无论是上传还是下载。

文件操作的 Razor 视图用户界面

在 Index.cshtml 中,Tim 设置了:

  • 使用 input type="file" 和 Bootstrap 风格设计上传文件的表单。

  • 使用 URI 下载文件的第二种形式。

  • 对丢失文件或无效 URI 等边缘情况进行错误消息处理。

  • 显示部分,显示成功上传后生成的 blob URI (https)。

Tim 还使用 List来处理错误,以便在用户界面上清晰地显示错误,让用户随时了解文件选择缺失等问题。

测试和验证文件安全性

Tim 上传了一个文本文件,并尝试在浏览器中直接访问 URI--不出所料,由于 "无 "访问策略,访问失败。

临时更改 Azure 门户的访问级别后,就可以通过直接链接下载文件了。 但他很快将其还原为私人语言,强调 Azure 如何提供细粒度的安全控制。

Tim 的最终建议

最后,Tim 提醒开发人员,即使投资很少,Microsoft Azure 也能提供很多价值。 这些工具包括

  • NuGet 软件包

  • Azure SDK

  • Visual Studio

  • Azure 门户网站

  • 安全连接字符串和密钥

您可以使用 C# 快速构建生产就绪的存储解决方案。 无论您是在开发大型系统还是小型测试项目,Azure Blob Storage 都是一个可扩展且经济高效的选择。

Tim强调说:"在云中使用什么,就要为什么付费,所以只需要你所需要的。

摘要

从创建存储账户和配置 blob 容器,到在 MVC 应用程序中安全地处理上传和下载,Tim Corey 提供的详细说明涵盖了使用 .NET 的 Azure Storage 的整个生命周期。

有了本指南和 Tim 的视频,您就可以放心地开始使用 Azure Blob Storage,同时保持控制、降低成本并遵守云开发的最佳实践。

请查看他的完整视频,进一步了解其清晰度,并查看他的 YouTube 频道,了解有关 Azure 存储 (C#) 的更多精辟内容。

Hero Worlddot related to C# 中的 Azure 存储介绍
Hero Affiliate related to C# 中的 Azure 存储介绍

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我