• Stars
    star
    175
  • Rank 210,408 (Top 5 %)
  • Language
    C#
  • License
    MIT License
  • Created over 1 year ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A polycloud .NET cloud storage abstraction layer. Provides Blob storage (AWS S3, GCP, FTP, SFTP, Azure Blob/File/Event Hub/Data Lake) and Messaging (AWS SQS, Azure Queue/ServiceBus). Supports .NET 5+ and .NET Standard 2.0+. Pure C#.

FluentStorage

Version Downloads GitHub contributors Codacy Badge License

One Interface To Rule Them All

FluentStorage, originally known as Storage.NET, is a field-tested polycloud .NET cloud storage library that helps you interface with multiple cloud providers from a single unified interface.

It provides a generic interface for Blob storage across all cloud storage providers (AWS S3, GCP, FTP, SFTP, Azure Blob/File/Event Hub/Data Lake) and cloud messaging providers (AWS SQS, Azure Queue/ServiceBus).

It is written entirely in C#. Supports .NET 5+ and .NET Standard 2.0+. External dependencies are only added by FluentStorage sub-packages.

FluentStorage is released under the permissive MIT License, so it can be used in both proprietary and free/open source applications.

Features

  • Unified API to interface with all major cloud providers for Blobs and Messaging.

  • Provides a generic interface regardless on which storage provider you are using.

  • Provides both synchronous and asynchronous alternatives of all methods and implements it to the best effort possible.

  • Supports providers: AWS S3, AWS SQS, GCP Storage, FTP, FTPS, SFTP, Azure Blob & File Storage, Azure Queue Storage, Azure Service Bus, Azure Event Hub, Azure Data Lake Store, Azure Key Vault.

  • Supports providers using out-of-the-box Nuget packages, with hassle-free configuration and zero learning path.

  • Implements in-memory and on-disk versions of all the abstractions, therefore you can develop fast on a local machine or use vendor-free serverless implementations for parts of your application.

  • Implements data transformation sinks for encryption and compression.

  • Attempts to enforce idential behavior on all implementations of storage interfaces to the smallest details possible, and contains many test specifications which will help you to add another provider.

Architecture

Without FluentStorage

Today, most cloud applications and services are developed against vendor-specific APIs like Amazon S3 API or Azure Blob API for cloud storage capabilities.

Using multiple vendor-specific APIs can increase your vendor lock-in, and makes your application more complex and harder to maintain. And sometimes these APIs may not offer all the functionality you need for your application. Polycloud also becomes very hard to implement.

Arch

With FluentStorage

What if we had a single, consistent API to deal with all types of cloud storage? That would solve these issues and bring more flexibility in switching cloud providers or cloud services.

Thus was born the idea for FluentStorage.

You can use a single, consistent API to interact with multiple cloud providers, where each provider is supported through its own special Nuget package.

Arch

Benefits

  1. Easy to write code that is not tied to a specific cloud provider.

  2. Easily switch between different providers without having to rewrite any part of their application or service.

  3. Easily migrate to using a new storage technology for some part of your cloud application (S3 buckets, Azure Blobs, FTP, etc.)

  4. Natively implement polycloud (support for multiple public clouds)

Packages

Stable binaries are released on NuGet, and contain everything you need to use Cloud Storage in your .NET app.

Package Latest Version Downloads Documentation
FluentStorage Version Downloads Standard
FluentStorage.AWS Version Downloads S3, SQS
FluentStorage.GCP Version Downloads GCP
FluentStorage.Databricks Version Downloads Databricks
FluentStorage.FTP Version Downloads FTP
FluentStorage.SFTP Version Downloads SFTP
FluentStorage.Azure.Blobs Version Downloads Blob
FluentStorage.Azure.Files Version Downloads File
FluentStorage.Azure.EventHub Version Downloads EventHub
FluentStorage.Azure.ServiceBus Version Downloads ServiceBus
FluentStorage.Azure.KeyVault Version Downloads KeyVault
FluentStorage.Azure.ServiceFabric Version Downloads ServiceFabric
FluentStorage.Azure.Queues Version Downloads Queue
FluentStorage.Azure.DataLake Version Downloads DataLake

Platform Support

FluentStorage works on .NET and .NET Standard/.NET Core.

Platform Binaries Folder
.NET 5.0 net50
.NET 6.0 net60
.NET Standard 2.0 netstandard2.0
.NET Standard 2.1 netstandard2.1

FluentStorage is also supported on these platforms: (via .NET Standard)

  • Mono 4.6
  • Xamarin.iOS 10.0
  • Xamarin.Android 10.0
  • Universal Windows Platform 10.0

Binaries for all platforms are built from a single Visual Studio Project. You will need the latest Visual Studio to build or contribute to FluentStorage.

Documentation

Check the Wiki.

What's New

In 2023 we added:

  • SFTP provider SSH.NET added
  • FTP provider FluentFTP updated to v44
  • AWS Nuget bumped to latest versions
  • Wiki created for documentation
  • Platform support updated to netstandard2.0,netstandard2.1,net50,net60

Supported Cloud Services

Slide

Contributors

Special thanks to these awesome people who helped create FluentStorage! Shoutout to Ivan Gavryliuk for the original project Storage.Net.

More Repositories

1

FluentFTP

An FTP and FTPS client for .NET & .NET Standard, optimized for speed. Provides extensive FTP commands, File uploads/downloads, SSL/TLS connections, Automatic directory listing parsing, File hashing/checksums, File permissions/CHMOD, FTP proxies, FXP support, UTF-8 support, Async/await support, Powershell support and more. Written entirely in C#.
C#
2,896
star
2

awesome-actionscript3

A curated list of awesome libraries and components for ActionScript 3 and Adobe AIR.
220
star
3

vue3-touch-events

Simple touch events support for vue.js 3
JavaScript
205
star
4

ScintillaNET.Demo

C# app demonstrating the powerful Scintilla text editor component
C#
142
star
5

FluentListView

FluentListView is a C# wrapper around a .NET ListView, supporting model-bound lists, in-place item editing, drag and drop, icons, themes, trees & data grids, and much more. This is a fork of ObjectListView with a focus on performance.
C#
48
star
6

EasyExplorer

An easy Windows Explorer component for .NET apps.
C#
21
star
7

as3mysql

An AS3 driver for the MySQL open source database.
ActionScript
14
star
8

AxiisCharts

Data visualization framework for ActionScript 3.
ActionScript
9
star
9

Zen3D

High-performance 3D engine for Adobe Flash & AIR (GPU based)
ActionScript
6
star
10

AirXMail

Complete email library for AS3 supporting SMTP, POP3 and IMAP4.
ActionScript
5
star
11

Sandy3D

Sandy is a Flash 3D engine developed by Thomas Pfeiffer
ActionScript
4
star
12

FlameFTP

The first UI-driven FTP client for .NET.
C#
3
star
13

FluentFTP.GnuTLS

Premiere .NET wrapper for GnuTLS along with integration into FluentFTP
C#
3
star
14

FluentFTP-LibFileZilla

C++
3
star
15

InspiritImage

Actionscript 3.0 library for FFT, SURF, edge detection, fluid solver, etc
C
2
star
16

Sandy3D-Haxe

Sandy is a Flash 3D engine developed by Thomas Pfeiffer
Haxe
1
star
17

FluentTLS

A direct port of GnuTLS to pure C# .NET, bringing world-class TLS 1.3 support to the .NET and .NET standard ecosystem.
1
star