Решение .NET Core 3.0 - разделение или слияние - PullRequest
0 голосов
/ 10 ноября 2019

Я разрабатываю приложение .NET Core 3, которое содержит:

  • REST API
  • Frontend (проект Vue)
  • Некоторое планирование задачи услуги по обработке. У каждого есть собственный маленький HTTP API для мониторинга

Каждый будет запускаться в отдельном контейнере Docker.

  1. Первый подход (который был в предыдущей версии) - один проект для API, другойдля процессора задач, третий для планировщика задач и т. д.
    • Пример структуры проекта:
App.sln
  -App.Internal.csproj
  -App.Host.Api.csproj //executable for API
  -App.Host.TaskProcessor.csproj //executable for task processor
  -App.Host.TaskScheduler.csproj //executable for task scheduler
  -App.Host.AnotherUsefulService.csproj //executable for other useful service
Второй подход - универсальный хост (IHostBuilder), аргумент командной строки (например, '--mode = api', '--mode = taskproc', '--mode = taskplan' и т. Д. Каждый контейнер докерабудет построен с соответствующим аргументом.
  • Пример структуры проекта:
App.sln
  -App.Internal.csproj
  -App.Host.csproj //here goes executable, which chooses running services by args
  -App.Internal.ApiService.csproj //has ApiService:IHostedService class
  -App.Internal.TaskProcessorService.csproj //TaskProcessorService:IHostedService
  -App.Internal.TaskSchedulerService.csproj //TaskShedulerService:IHostedService
  -App.Internal.AnotherUsefulService.csproj //OtherService:IHostedService
Третий подход - как и второй, но использовать другие классы автозагрузки вместо IHostedService

Я думаю о втором, потому что он более универсальный и многократно используемый, но производительности нет илидругие известные проблемы?

...