Migration Guide - robinrodricks/FluentStorage GitHub Wiki

Migrating from FluentStorage v7 to v8+

Exclusively async API

All methods are async by now. The old goal of supporting sync and async makes no sense since all cloud transfer APIs are async and the handful of edge cases like local memory storage and local disk storage do not matter. So we droped "Async" in all API names.

New factory API

One factory class per provider is the new standard:

  • AwsS3Storage
  • AwsSqsStorage
  • BackblazeB2Storage
  • CloudflareR2Storage
  • DigitalOceanSpacesStorage
  • HetznerStorage
  • MinlOStorage
  • VultrStorage
  • WasabiStorage
  • AzureBlobStore
  • AzureDataLakeStore
  • AzureFilesStore
  • AzureKeyVaultStorage
  • AzureQueueStorage
  • AzureServiceBus
  • GoogleCloudStorage
  • FtpStorage
  • SftpStorage

Extension methods are no longer required as a means for users to call functions within the factory classes. Henceforth, users can directly access to the factory classes:

  • StorageFactory.Blobs.AwsS3 -> AwsS3Storage.FromCredentials
  • StorageFactory.Blobs.CloudflareR2 -> CloudflareR2Storage.FromCredentials

Type changes

Collections returned by APIs will always be List instead of IReadOnlyCollection.

Renamed API

The entire FluentStorage API surface was redesigned from scratch to keep it meaningful, simple and consistent.

Improved code organization

  • All projects have been organized into folders.
  • Exceptions moved into the FluentStorage.Exceptions NS
  • Enums moved into the FluentStorage.Enums NS

Deleted libraries

The following libraries have been deprecated and deleted from our codebase, reducing the maintenance effort and helping us focus on the important parts of our offering.

Package Reason
FluentStorage.Databricks We will no longer maintain this package because DBFS is not a mainstream storage backend for a storage abstraction library.
FluentStorage.Azure.EventHub Due to low community usage, we will no longer maintain this library.
FluentStorage.Azure.DataLake We are no longer maintaining this package as it only caters to DataLake Gen 1, which has been superseded by DataLake Gen2. Gen1 is considered a legacy service and is no longer the direction Microsoft recommends for new development.
FluentStorage.Azure.ServiceFabric We will no longer maintain this package because ServiceFabric is not a first-class object storage or messaging service, which is outside our current scope, and it also has extremely low community usage.

Migrating from Storage.NET

Packaging changes

Change your NuGet packages and your imports using this mapping:

Old name New name
Storage.Net FluentStorage
Storage.Net.Amazon.Aws FluentStorage.AWS
Storage.Net.Gcp.CloudStorage FluentStorage.GCP
Storage.Net.Databricks No longer supported
Storage.Net.Ftp FluentStorage.FTP
Storage.Net.Microsoft.Azure.Storage.Blobs FluentStorage.Azure.Blobs
Storage.Net.Microsoft.Azure.Storage.Files FluentStorage.Azure.Files
Storage.Net.Microsoft.Azure.EventHub No longer supported
Storage.Net.Microsoft.Azure.ServiceBus FluentStorage.Azure.ServiceBus
Storage.Net.Microsoft.Azure.KeyVault FluentStorage.Azure.KeyVault
Storage.Net.Microsoft.Azure.ServiceFabric No longer supported
Storage.Net.Microsoft.Azure.Queues FluentStorage.Azure.Queues
Storage.Net.Microsoft.Azure.DataLake.Storage.Gen1 No longer supported
⚠️ **GitHub.com Fallback** ⚠️