Агент 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 и отправки запроса на включение, чтобы ваши улучшения были добавлены в исходный проект.