Перейти к содержимому
11 / 15

Как развивать схему события, не сломав потребителей?

Событие — публичный контракт: отправитель не знает, кто его читает и когда обновится, поэтому схему меняют только совместимо. Обратная совместимость означает, что новый читатель понимает старые данные (можно удалять поля и добавлять поля с умолчанием), прямая — что старый читатель понимает новые данные (можно добавлять поля и удалять необязательные). Для событий с несколькими независимыми потребителями нужны обе сразу: добавлять необязательные поля можно, переименовывать, удалять обязательные и менять тип или смысл — нельзя. Переименование делают в четыре шага: добавить новое поле, писать в оба, перевести потребителей, удалить старое. Проверку совместимости ставят в CI через реестр схем, а потребители пишутся как терпимые читатели: неизвестные поля игнорируют, а не падают.

Как развивать схему события, не сломав потребителей? | JScriptiser