Скажем, я создаю большой сервис 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
), но я не вижу ясно, что было бы лучше. Существует ли установленный шаблон наилучшей практики для настройки крупномасштабных служб и их подуслуг?