首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

.NET 使用 Azure Blob 儲存服務完整指南:SDK 安裝、程式碼範例與管理工具

     編輯:程式設計綜合問答

在 .NET 應用中整合 Azure Blob Storage,官方提供成熟的 Azure.Storage.Blobs SDK (v12+),支援 .NET Core / .NET 5+ / .NET Framework 4.6.2+。以下是從環境準備到生產部署的完整路徑。

1. 環境準備

  • Azure 訂用帳戶:建立儲存體帳戶 (Storage Account) → 取得連接字串 (DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net)。
  • Visual Studio 2022 / VS Code:安裝 .NET SDK 8.0+。
  • 安裝 NuGet 套件:
    dotnet add package Azure.Storage.Blobs
    dotnet add package Azure.Identity (支援 Managed Identity / DefaultAzureCredential)

2. 核心程式碼範例

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Identity;

public class BlobService
{
    private readonly BlobContainerClient _container;

    public BlobService(string connectionString, string containerName)
    {
        _container = new BlobContainerClient(connectionString, containerName);
        _container.CreateIfNotExists(PublicAccessType.None); // 私有容器
    }

    // 上傳 (支援大檔案分塊)
    public async Task UploadAsync(string blobName, Stream content, CancellationToken ct = default)
    {
        var blob = _container.GetBlobClient(blobName);
        await blob.UploadAsync(content, new BlobHttpHeaders { ContentType = "application/octet-stream" }, cancellationToken: ct);
    }

    // 下載至 Stream
    public async Task DownloadAsync(string blobName, Stream destination, CancellationToken ct = default)
    {
        var blob = _container.GetBlobClient(blobName);
        await blob.DownloadToAsync(destination, ct);
    }

    // 列舉
    public async IAsyncEnumerable ListAsync(string prefix = null)
    {
        await foreach (var item in _container.GetBlobsAsync(prefix: prefix))
            yield return item;
    }

    // 產生 SAS URL (限時下載)
    public string GenerateSasUrl(string blobName, TimeSpan expiry)
    {
        var blob = _container.GetBlobClient(blobName);
        var sasBuilder = new BlobSasBuilder
        {
            BlobContainerName = _container.Name,
            BlobName = blobName,
            Resource = "b",
            ExpiresOn = DateTimeOffset.UtcNow.Add(expiry)
        };
        sasBuilder.SetPermissions(BlobSasPermissions.Read);
        return blob.GenerateSasUri(sasBuilder).ToString();
    }
}

3. 大檔案上傳最佳實踐

  • 使用 BlobClient.UploadAsync 內建分塊 (預設 4 MB/塊,可透過 BlobClientOptions.TransferOptions 調整)。
  • 啟用 TransferValidationOptions 自動 MD5/CRC64 校驗。
  • 進度回報:new Progress<long>(bytes => Console.WriteLine($"Uploaded {bytes}"))。

4. 管理與除錯工具

工具用途連結
Azure Storage Explorer跨平台 GUI:上傳/下載、設定 CORS/生命週期/靜態網站、產生 SAS、查看計量官網下載
AzCopy v10命令列高效批量複製/同步/刪除,支援 SAS/OAuth,適合 CI/CD 與資料遷移文件
Azure Portal容器/Blob 層級存取原則、生命週期管理規則、診斷記錄、沉浸式瀏覽portal.azure.com
Visual Studio Cloud ExplorerIDE 內直接瀏覽 Blob、開啟/下載、設定中繼資料VS 安裝 Azure workload 即得

5. 安全與成本優化清單

  1. 最小權限:生產環境使用 DefaultAzureCredential (Managed Identity) 免存連接字串;SAS 權限限縮至單一 Blob/容器、Read/Write/Delete 最小集、過期時間 ≤ 1 小時。
  2. 生命週期管理:規則自動將冷資料分層至 Cool/Cold/Archive 層,或過期刪除,降低 70%+ 成本。
  3. 靜態網站託管:前端 SPA 直接部署至 $web 容器,啟用 CDN (Azure Front Door / CDN) 加速,免維護 Web Server。
  4. 不可變儲存 / 法律保留:合規場景 (WORM) 防止竄改/刪除,滿足金融/醫療法規。

6. 官方學習資源

掌握上述 SDK 用法、工具鏈與治理策略,即可在 .NET 專案中高效、安全地運用 Azure Blob Storage,支援從 KB 級日志到 PB 級資料湖的各類儲存場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved