Лучшие практики для управления конфигурацией больших приложений - PullRequest
0 голосов
/ 07 мая 2019

Скажем, я создаю большой сервис MyService, который содержит множество SubServices, которые могут выполнять операции в многопоточном контексте. Разработан в C ++ примерно так:

class MyService : public MyServiceInterface{
public:
    // Some public methods.
private:
    // Some private methods.

    // Some sub services. Assume that these are dependency injected.
    std::shared_ptr<SubServiceA> a;
    std::shared_ptr<SubServiceB> b;
    std::shared_ptr<SubServiceC> c;

MyService настраивается через определяемый пользователем файл, который мы разбираем в структуре данных MyServiceConfig. Эта конфигурация не только для чтения, приложение может редактировать ее в процессе работы. Предположим, что у нас есть все примитивы параллелизма для управления любым доступом.

У меня такой вопрос: если все мои SubServices требуют не обязательно эксклюзивных частей этой конфигурации, является ли хорошей практикой передача std::shared_ptr<MyServiceConfig> любому SubService? Мне кажется странным выставлять всю конфигурацию каждой системе, если это не требуется. Есть несколько решений для этого (прохождение отдельных частей, если подмножество требуемой конфигурации мало, поддержание внутренних структур в MyServiceConfig, которые выполняют логическое разделение для известных SubServices), но я не вижу ясно, что было бы лучше. Существует ли установленный шаблон наилучшей практики для настройки крупномасштабных служб и их подуслуг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...