Size: a a a

var chat = new Chat();

2021 September 12

VL

Vova Lantsov in var chat = new Chat();
Кстати ещё как разновидность очередей может выступать BlockingCollection

Producer/consumer
источник

VL

Vova Lantsov in var chat = new Chat();
Там под капотом потокобезопасная очередь
источник

IV

Ihor Volokhovych in var chat = new Chat();
Не лучше дл этого юзать concurrent queue?
источник

VL

Vova Lantsov in var chat = new Chat();
Concurrent queue не даёт механизма отслеживать добавился ли элемент в очередь, приходится поллингом опрашивать, плюс реализовывать свою поддержку для cancellation и таймаута

В BlockingCollection это всё из коробки, плюс он вполне рассчитан на multiple producer/multiple consumers
источник

VL

Vova Lantsov in var chat = new Chat();
Конечно, можно ещё через вебсокеты и через ftp протокол передавать файл, всё можно)
источник

VL

Vova Lantsov in var chat = new Chat();
Вопрос как тебе удобнее и лучше, так и делай
источник

VL

Vova Lantsov in var chat = new Chat();
Базы данных умеют бинарно хранить файлы и разницы в простоте ровно 0, нужно лишь понимание
источник

VL

Vova Lantsov in var chat = new Chat();
IFormFile имеет ряд преимуществ

Если ты посмотришь на этот интерфейс, кроме хранения Stream с файлом ты получаешь доступ к content type, content length, file name и ещё каким-то полям

Храня картинку в base64, ты таких данных не имеешь
источник

VL

Vova Lantsov in var chat = new Chat();
А что нужно конвертить при бинарном хранении?
источник

VL

Vova Lantsov in var chat = new Chat();
А если функционал другой? Завтра тебе сказали "нужно валидировать что нам присылают именно jpeg & png, а не всякие там gif"?
источник

VL

Vova Lantsov in var chat = new Chat();
Короче ты зря пытаешься показать преимущество base64 над бинарным хранением
Нужно исходить из задач и функциональности
источник

В

Ваня in var chat = new Chat();
где именно ?
источник

VL

Vova Lantsov in var chat = new Chat();
Та нигде, сам base64 не имеет метаданных
источник

VL

Vova Lantsov in var chat = new Chat();
Картинка может иметь, но это надо делать десериализацию и парсинг
источник

В

Ваня in var chat = new Chat();
так и я этого не понял)
источник

VC

Vlad Chabanenko in var chat = new Chat();
Ну и от себя добавлю что хранить картинки в базе иногда (у меня на опыте всегда) = размер базы до небес
источник

VC

Vlad Chabanenko in var chat = new Chat();
У кого то были кейсы когда хранить картинки в базе было ок?
источник

IV

Ihor Volokhovych in var chat = new Chat();
Проще в бакете хранить
источник

IV

Ihor Volokhovych in var chat = new Chat();
И по ссылке вытягивать
источник

VC

Vlad Chabanenko in var chat = new Chat();
Вот мы так и делаем сейчас
источник