Ticomix.Attachments.Storage.AzureBlob 2026.9.24.1

Ticomix.Attachments.Storage.AzureBlob

Purpose Statement

A .NET library that provides Azure Blob Storage implementation for the Ticomix attachments system, enabling secure and scalable cloud storage for application file attachments.

Technical Context

  • Implements the IAttachments<TKey> interface from the Ticomix.Attachments.Common library
  • Built on Azure.Storage.Blobs SDK version 12.21.2
  • Supports .NET 8.0 and .NET 10.0 frameworks.
  • Uses generics to support multiple key types for attachment identification

Key Capabilities

  • Blob Container Management: Automatically creates and manages Azure Blob Storage containers with customizable access policies
  • Hierarchical File Organization: Supports directory-like organization through virtual folder paths within blob storage
  • Streaming Content Delivery: Provides optimized streaming download capabilities for efficient file retrieval
  • Attachment Lifecycle Management: Implements complete attachment operations including upload, download, copy, and deletion

Integration Points

  • Seamlessly integrates with the Ticomix attachments ecosystem via the standard IAttachments<TKey> interface
  • Compatible with Entity Framework Core for database storage of attachment metadata
  • Works alongside other storage providers in the Ticomix.Attachments namespace

Use Case Scenarios

  • Enterprise applications requiring secure cloud storage for user-uploaded files
  • Systems needing scalable attachment storage with metadata tracking
  • Applications migrating from on-premises storage to cloud-based solutions
  • Multi-tenant applications requiring isolation of attachment data

Database Models Used

  • Attachment: Represents attachment metadata including file name, directory path, and other attributes stored in a database context that implements IAttachmentsDbContext<TKey>

Classes and Functions

AzureBlobAttachments

Main implementation class that provides Azure Blob Storage functionality for the attachment system.

Key Functions:

  • UploadAsync: Uploads a file stream to Azure Blob Storage
  • DownloadStreamingAsync: Downloads file content as a stream
  • DeleteAsync: Removes an attachment from blob storage
  • CopyAsync: Creates a copy of an existing attachment
  • GetContainerAsync: Retrieves or creates a blob container
  • GetBlobClient: Gets a reference to a specific blob
  • DownloadBlob: Retrieves blob content and metadata

AzureBlobLegacy provider (read-by-BlobId)

AzureBlobAttachments<TKey> resolves a blob by Directory+FileName. Applications that previously stored a GUID blob name in Attachment.BlobId (and never set AttachmentLocation) need AzureBlobLegacyAttachments<TKey> to read those blobs.

  • AttachmentLocation = "AzureBlobLegacy".
  • DownloadStreamingAsync/DeleteAsync resolve the blob via GetBlobName(attachment) (defaults to attachment.BlobId).
  • CanHandle claims "AzureBlobLegacy" rows and null-location rows that have a BlobId.
  • Read-only: UploadAsync/CopyAsync throw NotSupportedException — write new attachments through AzureBlobAttachments<TKey>.

Register it alongside the canonical provider (see the Common package README).

IAttachmentBlobStore (path-addressed blobs)

AzureBlobAttachments also implements IAttachmentBlobStore for low-level, row-less blob access (path download/upload/exists, bulk prefix delete) -- used by image thumbnail caches and container maintenance. The FileSystem provider deliberately does NOT implement it: the only consumers are Azure-blob-backed thumbnail caches; the FileSystem provider is the local-dev/ offline staging backend and maintains no such cache.

No packages depend on Ticomix.Attachments.Storage.AzureBlob.

.NET 10.0

.NET 8.0

Version Downloads Last updated
2026.10.19.1 22 10/19/2026
2026.10.16.1 4 10/16/2026
2026.10.9.1 12 10/9/2026
2026.10.8.1 45 10/8/2026
2026.9.30.1 28 9/30/2026
2026.9.24.1 3 9/24/2026
2026.9.23.1 3 9/23/2026
2026.9.17.1 6 9/17/2026
2026.9.16.3 4 9/16/2026
2026.9.16.2 4 9/16/2026
2026.9.16.1 4 9/16/2026
2026.9.11.1 6 9/11/2026
2026.9.1.1 6 9/1/2026
2026.7.21.1 152 7/21/2026
2026.6.16.1 40 6/16/2026
2026.6.15.2 13 6/15/2026
2026.6.15.1 13 6/15/2026
2026.6.12.2 10 6/12/2026
2026.6.12.1 223 6/12/2026
2026.6.9.1 10 6/9/2026
2026.5.29.3 17 5/30/2026
2026.5.8.4 22 5/8/2026
2026.4.15.1 9 4/15/2026
2026.4.13.2 9 4/13/2026
2026.4.2.2 97 4/2/2026
2026.2.3.1 217 2/3/2026
2026.1.20.1 77 1/20/2026
2026.1.19.1 23 1/19/2026
2026.1.5.1 10 1/5/2026
2025.12.19.3 23 12/19/2025
2025.12.12.1 11 12/12/2025
2025.12.11.2 13 12/11/2025
2025.12.11.1 10 12/11/2025
2025.12.10.2 10 12/10/2025
2025.12.10.1 10 12/10/2025
2025.12.9.3 10 12/9/2025
2025.12.9.2 12 12/9/2025
2025.12.8.2 12 12/8/2025
2025.12.7.1 10 12/7/2025
2025.12.5.2 12 12/5/2025
2025.12.5.1 8 12/5/2025
2025.11.18.2 9 11/18/2025
2025.11.18.1 12 11/18/2025
2025.10.31.1 23 10/31/2025
2025.10.29.1 38 10/29/2025
2025.10.23.2 14 10/23/2025
2025.10.23.1 13 10/23/2025
2025.10.22.1 13 10/22/2025
2025.10.15.1 175 10/15/2025
2025.10.9.1 26 10/10/2025
2025.10.3.2 32 10/3/2025
2025.10.3.1 14 10/3/2025
2025.10.1.4 34 10/1/2025
2025.10.1.3 13 10/1/2025
2025.10.1.2 14 10/1/2025
2025.9.24.1 42 9/24/2025
2025.9.2.3 79 9/2/2025
2025.7.25.1 106 7/25/2025
2025.7.16.1 56 7/16/2025
2025.7.15.1 29 7/15/2025
2025.7.11.2 34 7/11/2025
2025.6.4.1 89 6/4/2025
2025.5.22.1 38 5/22/2025
2025.5.1.1 87 5/1/2025
2025.4.18.12 45 4/18/2025
2025.4.10.1 42 4/10/2025
2025.3.28.1 42 3/28/2025
2025.3.25.2 33 3/25/2025
2025.3.20.1 27 3/20/2025
2025.3.19.5 28 3/19/2025
2025.3.19.3 21 3/19/2025
2025.3.18.5 25 3/18/2025
2025.3.18.4 20 3/18/2025
2025.3.18.3 18 3/18/2025
2025.3.18.2 17 3/18/2025
2025.3.12.1 26 3/12/2025
2025.3.7.1 35 3/7/2025
2025.2.14.2 70 2/14/2025
2025.1.30.1 15 1/30/2025
2025.1.29.2 18 1/29/2025
2025.1.29.1 18 1/29/2025
2025.1.28.2 18 1/28/2025
2025.1.28.1 54 1/28/2025
2025.1.27.4 22 1/27/2025
2025.1.27.3 25 1/27/2025
2025.1.27.2 20 1/27/2025
2025.1.27.1 19 1/27/2025
2025.1.6.1 19 1/6/2025
2024.12.31.2 53 12/31/2024
2024.12.31.1 19 12/31/2024
2024.12.30.1 22 12/30/2024
2024.12.20.2 31 12/20/2024
2024.12.17.18 32 12/17/2024
2024.12.17.2 24 12/17/2024
2024.12.11.3 36 12/11/2024
2024.12.10.1 26 12/10/2024
2024.12.5.3 29 12/5/2024
2024.12.5.2 22 12/5/2024
2024.12.4.10 19 12/4/2024
2024.12.4.9 20 12/4/2024
2024.11.15.4 57 11/16/2024
2024.11.15.1 21 11/15/2024
2024.11.6.3 41 11/6/2024
2024.11.6.1 24 11/6/2024
2024.11.5.6 24 11/5/2024
2024.11.5.4 23 11/5/2024
2024.10.28.3 40 10/28/2024
2024.10.28.2 21 10/28/2024
2024.10.28.1 23 10/28/2024
2024.10.24.1 25 10/24/2024
2024.10.23.1 27 10/23/2024
2024.10.17.2 30 10/17/2024
2024.10.8.1 33 10/8/2024
2024.8.20.1 76 8/20/2024
2024.8.6.1 49 8/6/2024
2024.7.17.1 63 7/17/2024
2024.7.15.1 27 7/15/2024
2024.7.9.4 32 7/9/2024
2024.7.9.3 23 7/9/2024
2024.7.9.2 25 7/9/2024
2024.7.2.1 34 7/2/2024
2024.7.1.4 30 7/1/2024
2024.6.14.1 36 6/14/2024
2024.6.12.2 50 6/12/2024
2024.6.10.1 26 6/10/2024
2024.5.31.2 38 5/31/2024
2024.5.22.2 41 5/22/2024
2024.4.25.1 50 4/25/2024
2024.4.17.1 33 4/17/2024
2024.4.12.3 25 4/12/2024
2024.4.9.1 38 4/9/2024