У меня небольшая дилемма. Рассмотрим следующую систему:
И следующий API:
IModule GetModule(string moduleName);
void SetModule(string moduleName);
Где каждый модуль содержит набор параметров.
Типичным рабочим процессом будет следующий:
- Получить модуль (т. Е. Локальная копия на стороне клиента)
- Изменить параметр (ы)интерес от этого модуля
- Установите обновленный модуль (т.е. вызовите SetModule для обновления действительной системы через службу / прокси)
Теперь проблема, с которой я сталкиваюсь в этом рабочем процессечто, хотя Client1 изменяет параметры, второй клиент может что-то делать, основываясь на неверном предположении о внутреннем состоянии системы.
Поэтому в эту реализацию необходимо будет добавить обмен сообщениями, чтобы сохранить синхронизацию клиента, но до этого кое-что, что действительно может помочь, - это избавиться от метода SetModule () и иметь параметры для автоматического получения. обновляется, когда их значение изменяется на стороне клиента.
Проблема заключается в том, что на стороне клиента у нас фактически есть копия объекта, а не фактический системный объект, поэтому возможно даже сделать что-то вроде:
moduleA = GetModule(string moduleName);
moduleA.enable = true; -> But when doing this, the setter for this parameter is called to directly update the param value from within the system instead of the local copy.