Глава 10: Управление версиями
10.1 Формат номера версии
DTP использует семантическое версионирование с номером мажорной версии и номером минорной версии:
{ major: number, minor: number }
Заголовок каждого LogicalFrame включает поле номера версии протокола, идентифицирующее версию протокола, используемую данным фреймом.
10.2 Правила совместимости версий
DTP_Engine поддерживает одновременную обработку форматов LogicalFrame как текущей версии, так и предыдущей мажорной версии.
| Версия полученного фрейма | Обработка |
|---|---|
| Текущая версия | Нормальная обработка |
| Предыдущая мажорная версия | Совместимая обработка (обратная совместимость) |
| Более высокая версия | Отправка уведомления о несовместимости версий |
| Более низкая версия (за пределами диапазона совместимости) | Отправка уведомления о несовместимости версий |
10.3 Обработка несовместимости версий
Когда получатель получает LogicalFrame, номер версии протокола в заголовке которого выше поддерживаемой версии:
- Не обрабатывать фрейм
- Отправить отправителю уведомление о несовместимости версий (VERSION_INCOMPATIBLE, 7001)
- Включить в уведомление наивысшую поддерживаемую версию получателя
При получении уведомления о несовместимости версий отправитель может:
- Понизить версию до поддерживаемой получателем и повторно отправить
- Или уведомить приложение верхнего уровня о несоответствии версий
10.4 Стратегия эволюции протокола
Управление версиями DTP обеспечивает обратную совместимость по мере развития протокола:
- Обновление минорной версии: добавляет новые поля или функции без нарушения разбора существующих форматов фреймов
- Обновление мажорной версии: может изменять формат фрейма, но сохраняет совместимость с предыдущей мажорной версией
Это означает, что терминальные устройства и Fay не обязаны обновляться одновременно — пока разница версий находится в пределах одной мажорной версии, обе стороны могут нормально взаимодействовать.
