Я понимаю из того, что вы написали, что общение строго по пунктам, со значительной продолжительностью («аренда»). Если это правда, это означает, что вы ничего не получите в модели публикации-подписки. Если это не так, то да, вы должны (могли) изменить модель сети, чтобы соответствовать коммуникациям, и ваша идея звучит здраво.
Относительно вашего второго вопроса, поскольку TCP-сокеты и keep-alive - это всего лишь концепция, нет никакой (или очень небольшой) внутренней стоимости наличия такого контракта keep-alive. На практике YMMV, поскольку разные реализации сокетов требуют разных ресурсов, и могут потребоваться другие действия, чтобы сохранить канал открытым. Однако существует много реализаций, которые требуют очень мало ресурсов для открытых сокетов (например, select () - введите).
Служба обнаружения (публикация / подписка на службы) наиболее целесообразна, если существует много разработчиков одного и того же типа службы, и вы не можете (или не хотите) прогнозировать статически, где они появятся.
Короче говоря, я бы сказал, что вам следует менять дизайн только в том случае, если ваш тип связи плохо соответствует текущей архитектуре. Ваша идея, безусловно, звучит очень осуществимо, но для оценки результата потребуется больше информации о шаблонах коммуникации.