Каков наилучший способ создания отдельного API (ограниченный контекст) для хранения и извлечения файлов, включая изображения? - PullRequest
2 голосов
/ 29 сентября 2019

Я занимаюсь разработкой проекта, в котором есть много файлов для хранения.Я создал отдельный API для файловых ресурсов, отправляя информацию в этот BC через NServiceBus механизм обмена сообщениями.

После проверки изображения (внутри объекта) я отправляю некоторую информацию, такую ​​как Base64String, fileName, уникальный идентификатор файла, а также собираю имя root для API файловой службы.Я просто сохраняю путь к изображению в совокупности, например:

"/Product/C54AABD2-1D03-4C01-976D-6478D3963AF0.jpg"

, а затем передаю файл как base64 в API файловой службы:

public void SetImage(string base64Image, string imageId,string extension)
{
    if (!IsBase64(base64Image))
    {
        throw new ImageBase64FormatException();
    }

    this.ImageId = imageId;
    this.ImagePath = $"/{nameof(Product)}/{imageId}.{extension}";

     AddDomainEvent(new ProductImageChangedEvent(this.Id.Id,this.ImageId,base64Image,$"{imageId}.png",nameof(Product)));
}

Это мой сценарий:

В File Service Solution есть консольный проект с именем «BusDispathcer», который должен работать как служба Windows для обработки вызванных событий.В этом всегда работающем приложении Windows я бы определил физический путь, в котором будет расположен основной API файловой службы (c:\wwwroot\...) для хранения файла в указанной папке (имя сущности) и, наконец, в пользовательском интерфейсе (который является угловым) должен добавить адрес файласервисный API (например: files.myDomain.com и основной API будет в productManagment.mydomain.com) перед каждым путем к файлу (например: /Product/C54AABD2-1D03-4C01-976D-6478D3963AF0.jpg).

Например:

<img src="files.myDomain.com/Product/C54AABD2-1D03-4C01-976D-6478D3963AF0.jpg"/>

Этот метод является правильным / неправильным или вы предлагаете лучший подход?

...