думал использовать протокол http и передавать файлы в форме, но у меня сложная структура и форма не поддерживает её, пример:
public class Example
{
public string SomeInfo { get; set; }
public int SomeInfo { get; set; }
public IFormFile File { get; set; }
public ICollection<InnerExample> ExampleList { get; set; }
}
public class InnerExample
{
public string SomeInfo { get; set; }
public IFormFile? File { get; set; }
}
Вся проблема во вложенных файлах в ExampleList. Дело в том, что форма не поддерживает такую сложную структуру и я не могу передать туда массив с текстом и файлом.
Сейчас я думаю использовать протокол ASMQ (rabbitmq) и осуществлять передачу через него, уже тестовый код написал, работает, но мне не очень нравится этот подход.
Может быть посоветуете что-нибудь?
как всегда, начинаем с ответа самому себе на вопросы: а что если файл будет несколько гигов? а что если их будет несколько? приходит понимание, что лучше разделить ответ и контент файлов (тогда ответ сообщает урлы, а далее уже принимающая сторона сама сходит и скачает что надо) если же "размер файлов всегда будет маленький", то можно подумать на тему а зачем вообще файл - может, какой-то JSON в ответе как payload отдавать?
protobuf-net?
Нет, файл не всегда будет маленький. Думаю, максимально большой размер будет 100 мб, поэтому в JSON я и не хочу передавать. Мне нужно с одного сервиса отправить данные (с файлами) на другой и сохранить их там. Я думал делать это в несколько запросов, точнее в N. Сначала сохранить текст, а потом по файлику докидывать по айдишникам, но таких запросов может быть много. т.к. файл в массив может быть не один.
по одному запросы слать - можно словить большой latency (гуглим проблему N+1), поэтому batch-подход лучше (когда передаётся коллекция, а не одиночный элемент)
Ну и я про это же, поэтому я стремлюсь к одному запросу.
Обсуждают сегодня