@AspMaster

Как правильно написать файловый сервис на asp.net core web api?

Стоит задача написать микросервис, который принимает файлы любого размера, сохраняет их на жестком диске, а после возвращает ссылку на этот файл. Столкнулся с двумя проблемами :
1) asp не даёт загрузить файл больше 2048 кб. Пытался отключить это ограничения разными способами из гугла (и атрибутом отключающим лимит размера файла, и в стартап настройкой максимального объема)
2) безопасность. Как обезопасить сервис от злоумышленников
3) производительность. Читал , что при загрузке больших файлов одновременно, может крашнуться сервис

Как можно обойти эти проблемы ?
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
1) Можно использовать БД для всего. Там и файл, и ссылка на него.
+ все в одном месте.
+ легко бекапить.
+ транзация на всю операцию целиком.
- база будет очень большой.

2) Можно использовать БД только для хранения ссылок на файл.
+ БД маленькая.
+ хранилище отдельно.
- бекап БД и хранилища файлов осуществляется раздельно.
- нет транзакций, файл может быть записан, а ссылки не будет, и на оборот.

БД - SQL или NoSQL.
Т.к. связей нет, то лучше NoSQL.

Безопасность - Авторизация, токены или куки. Ничего другого.
Тут либо сервис во внутренней сети, и ничего не нужно. Или сервис доступен снаружи, и нужна авторизация.
Можно погуглить как работает Azure Blob storage, идеи взять от туда.

Проблема с размером решается, больше гуглить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Не в курсе про asp, поэтому отвечу на последние вопросы
2. решают доступом по токену. типовые решения для этого - отдельный identity server, jwt токены, Oauth2/OpenId. Можно поизголяться с другими
3. не писать велосипед, а использовать готовое хранилище s3-совместимое, горизонтально масштабируемое. Кстати "любой размер" это дикость и на этом уже можно сказать "невозможно"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы