Агент Backblaze (клиент) для .NET Core — это реализация API облачного хранилища Backblaze B2. Облачное хранилище Backblaze B2 представляет собой самое дешевое облачное хранилище, доступное в Интернете. Облачное хранилище Backblaze B2 стоит четверть цены других поставщиков хранилищ. Попробуйте: первые 10 ГБ памяти бесплатны.
Полная поддержка Backblaze B2 Cloud Storage API v2, включая файлы, учетные записи, ключи и сегменты.
Создан для .NET Standard 2.0, что означает, что агент Backblaze будет работать в системах Windows, Mac и Linux.
Легко интегрируется с .NET Core Dependency Injection и HttpClientFactory для реализации устойчивых запросов.
Простой кеш ответов в памяти с использованием MemoryCache.
Поддержка больших файлов с низким выделением памяти и статусом IProgress.
Встроенная поддержка модели программирования на основе задач (async/await).
Чтобы получить запросы на функции и отчеты об ошибках, откройте проблему на GitHub.
Чтобы установить Backblaze.Agent, выполните следующую команду:
> dotnet добавить пакет Backblaze.Agent
Работа продолжается! Хотя мы призываем пользователей поиграть с образцами и тестовыми программами, этот проект еще не достиг стабильного состояния.
Для настройки агента Backblaze вам понадобятся key_id и application_key . Вы можете получить их на портале облачного хранилища Backblaze B2. См. пример проекта для примера использования этих пакетов.
public void ConfigurationServices(IServiceCollection Services){services.AddBackblazeAgent(options =>{options.KeyId = "[key_id]";options.ApplicationKey = "[application_key]";});}
Чтобы получить список сегментов backblaze, просто внедрите IStorageClient
в свой класс и вызовите асинхронный клиент.
публичный класс IndexModel: PageModel { частный только для чтения IStorageClient _storage; общедоступная IndexModel (хранилище IStorageClient) { _storage = хранилище; } [Биндпроперти] public IEnumerable Buckets {get; частный набор; } общедоступная асинхронная задача <IActionResult> OnGetAsync() {Buckets = await _storage.Buckets.GetAsync();if (Buckets == null){ return NotFound();}return Page(); }}
Установите следующие пакеты:
> dotnet добавить пакет Backblaze.Client> dotnet добавить пакет Microsoft.Extensions.Caching.Memory> dotnet добавить пакет Microsoft.Extensions.Logging.Debug
Пример кода:
класс Программа { частный статический клиент IStorageClient; статическая асинхронная задача Main(string[] args) {try {варианты вар = новый ClientOptions (); var loggerFactory = LoggerFactory.Create(builder => {builder .AddFilter("Bytewizer.Backblaze", LogLevel.Trace).AddDebug(); }); вар кэш = новый MemoryCache (новый MemoryCacheOptions()); Клиент = новый BackblazeClient (опции, loggerFactory, кеш); await Client.ConnectAsync("[key_id]", "[application_key]"); вар ведра = ждут Client.Buckets.GetAsync(); foreach (var Bucket in Bucket)Console.WriteLine($"Имя сегмента: {bucket.BucketName} - Тип: {bucket.BucketType}"); }catch (исключение ex){ Console.Error.WriteLine(ex.Message);} }}
Установите следующий пакет:
> dotnet добавить пакет Backblaze.Client
Пример кода:
класс Программа { частный статический клиент IStorageClient; static void Main(string[] args) {try {Клиент = новый BackblazeClient(); Client.Connect("[key_id]", "[application_key]"); var Buckets = Client.Buckets.GetAsync().GetAwaiter().GetResult(); foreach (ведро var в сегментах)Console.WriteLine($"Имя сегмента: {bucket.BucketName} - Тип: {bucket.BucketType}");}catch (Exception ex){ Console.Error.WriteLine(ex.Message); } }}
Загрузить файловый поток
foreach (var filePath в Directory.GetFiles(@"c:mydirectory")){ используя (var поток = File.OpenRead(filePath)) {var results = await Client.UploadAsync("[BucketId]", new FileInfo(filePath).Name, поток); }}
Загрузить файловый поток
var files = new string[] { @"c:mydirectoryfile1.txt", "file2.bat" };foreach (var fileName в файлах){ используя (varstream = File.Create(fileName)) { var results = await Client.DownloadAsync("[BucketName]", fileName,stream); }}
Установите пакеты Microsoft.Extensions.Logging:
> dotnet добавить пакет Microsoft.Extensions.Logging.Debug
Трассировку к окну отладки можно включить с помощью следующего кода:
Services.AddLogging(builder =>{builder.AddDebug();builder.AddFilter("Bytewizer.Backblaze", LogLevel.Trace);});
Services.AddBackblazeAgent(options =>{ options.KeyId = "[key_id]"; options.ApplicationKey = "[application_key]";});
В следующей таблице описаны доступные параметры агента:
Название опции | По умолчанию | Описание |
---|---|---|
идентификатор ключа | --- | Обязательно — идентификатор ключа, используемый для аутентификации. |
Ключ приложения | --- | Обязательно — секретная часть ключа, используемая для аутентификации. |
ОбработчикВремя жизни | 600 | Время в секундах, в течение которого экземпляр обработчика сообщений может быть повторно использован. |
Тайм-аут | 600 | Время ожидания в секундах до истечения времени ожидания клиентского запроса. |
Повторный счет | 5 | Сколько раз клиент будет повторять неудачные запросы до истечения времени ожидания. |
ЗапросМаксПараллель | 10 | Максимальное количество установленных параллельных соединений запроса. |
СкачатьMaxParallel | 5 | Установлено максимальное количество параллельных подключений для загрузки. |
СкачатьCutoffSize | 100 МБ | Загрузите размер обрезки для переключения на фрагментированные части в байтах. |
СкачатьPartSize | 100 МБ | Загрузите размер фрагментированных частей в байтах. |
ЗагрузитьМаксПараллельно | 3 | Установлено максимальное количество параллельных подключений для загрузки. |
ЗагрузитьCutoffSize | 100 МБ | Загрузите размер обрезки для переключения на фрагментированные части в байтах. |
ЗагрузитьPartSize | 100 МБ | Загрузите размер фрагментированных частей в байтах. |
AutoSetPartSize | ЛОЖЬ | Используйте рекомендуемый размер детали, возвращаемый службой Backblaze. |
Контрольная суммаОтключена | ЛОЖЬ | Это предназначено только для тестирования и не рекомендуется для производственных сред. |
Тестовый режим | --- | Это предназначено только для тестирования и не рекомендуется для производственных сред. |
Services.AddBackblazeAgent(options =>{ // Это предназначено только для тестирования и не рекомендуется для производственных сред. options.TestMode = "fail_some_uploads"; });
Доступны следующие параметры тестового режима, позволяющие убедиться, что ваш код правильно обрабатывает ошибки.
Параметр Строка | Описание |
---|---|
неудачный_some_uploads | Случайные загрузки не выполняются или отклоняются службой. |
expire_some_account_authorization_tokens | Срок действия токенов авторизации случайного аккаунта истекает. |
Force_cap_exceeded | Условия превышения лимита являются вынужденными. |
Для настройки файла settings.json Backblaze Test Agent вам понадобятся key_id и application_key .
Все исходные коды, документация, инструкции и продукты этого проекта предоставляются «как есть» без каких-либо гарантий. Никакая ответственность не принимается за любой ущерб, потерю данных или расходы, понесенные в результате их использования.
master — это ветка, содержащая последнюю версию — никакие дополнения не должны вноситься непосредственно в эту ветку.
разработка — это ветка разработки, вклад в которую участники должны предлагать в виде запросов на включение. Эта ветка разработки будет периодически объединяться с основной веткой и публиковаться в галерее NuGet.
Вклад в этот проект всегда приветствуется. Пожалуйста, рассмотрите возможность разветвления этого проекта на GitHub и отправки запроса на включение, чтобы ваши улучшения были добавлены в исходный проект.