Что теряется, когда связи нет как объекта
Если взаимодействие — это просто вызов, то у него нет памяти. Каждый обмен начинается с нуля: заново решается, кому что можно, заново передаётся контекст, заново выясняется, работает ли эта пара участников вообще. Система не накапливает знание о собственной структуре — она каждый раз выясняет её заново.
Отношение как объект хранит это знание: что стороны согласовали, как часто им полезно общаться, что уже передано, насколько связь надёжна и стоит ли её поддерживать дальше.
Что содержит связь
- общее состояние границы — та часть данных, которую видят обе стороны;
- владение полями: кто имеет право менять какую часть общего состояния;
- чередование прав: следующую ревизию фиксирует одна сторона, и это исключает конфликт правок;
- атомарные ревизии и свидетельства — история изменений, по которой восстановимо любое состояние;
- согласованные условия протокола: частота, объём, режим обмена;
- метрики активности и синхронизации;
- силу связи и её затухание;
- состояние жизненного цикла: испытательный срок, активность, сон, отставка.
Переговоры вместо назначения
Связь возникает не приказом среды, а согласием сторон. Инициатор предлагает условия; вторая сторона принимает, отклоняет, откладывает или выдвигает встречное предложение — и тогда роли меняются местами. Так возникает чередующийся протокол переговоров с сохранённой стенограммой.
Практическая ценность стенограммы обнаруживается позже: когда нужно понять, почему два участника работают именно так, ответ находится в истории их договорённостей, а не в чьей-то памяти. Тем же механизмом идёт и пересмотр условий: перезаключение — это тот же примитив, что и заключение.
Адаптация под наблюдаемую пользу
Условия обмена не остаются вечными. Если связь приносит мало пользы, стороны снижают частоту и объём обмена; если много — усиливают. Связь, переставшая приносить пользу, сначала слабеет, потом засыпает, потом уходит в отставку.
Это выглядит биологической метафорой, но смысл сугубо инженерный: в ограниченной среде поддержание связи стоит ресурсов. Автоматическое ослабление бесполезного — способ не тратить их на структуру, которая больше ничего не даёт. Без такого механизма любая долгоживущая система обрастает связями, которые никто не решается удалить.
Испытательный срок
Новая связь не получает полных прав сразу. Она начинает с испытательного состояния: обмен идёт, но объём ограничен, а надёжность накапливается. Только после подтверждённой полезности связь становится полноценной.
Тот же принцип мы применяем к автономии агентов в прикладных системах: права расширяются по накопленной статистике, а не выдаются авансом. Разница лишь в том, что здесь он реализован на уровне среды, а не как политика конкретного проекта.
Что это даёт системе целиком
- Структура системы становится наблюдаемой: связи можно перечислить, измерить и объяснить.
- Конфликты правок исключены конструкцией, а не соглашением между разработчиками.
- Разрыв отношения — штатная операция, а не удаление кода.
- История договорённостей заменяет устное знание о том, «почему это работает так».
- Стоимость поддержания структуры видна и управляема.
Ограничение честно назвать тоже стоит: всё это оправдано там, где отношения долгие и их много. Для пары компонентов, обменивающихся сообщениями два раза в час, обычная очередь проще и дешевле.