Покотиленко Костик пишет:
Всё написано правильно, только в случае с текстовым протоколом, клиенты будут продолжать и дальше работать, в случае с бинарным - надо всех и сразу обновить, что зачастую невозможно.И ещё раз попрошу прояснить ускользающую от меня связь между тукстовостью/бинарностью протокола или формата и степенью ожидаемости данных, хранимых в этом формате или получаемых по этому протоколу.Постараюсь на пальцах. Грубо говоря, если в тебе надо что-то добавить в бинарном протоколе, с чётко определённым форматом, ты не сможешь это сделать не скорректировав его клиентов и серверов, а точнее либу, которую они используют, так, чтобы ничего не сломалось. Поэтому, к вопросу придётся подойти системно. В случае с текстовым протоколом, где всё не так чётко определено, ты обломаешься и вставишь новое поле куда-нибудь, где оно не сильно помешает, назавёшь его новой фишкой и никому не скажешь. Тут баланс такой - либо делаешь всё как надо, либо потом разгребаешь глюки и усложняешь парсеры.В этих словах сама суть. Или ты переходишь шагами и знаешь на каком что, или ты съезжаешь и тебе не к чему привязаться и получается бардак. Обратную совместимость соблюдать конечно надо, тогда переход будет безболезненный. Пример сервер уже умеет новую вервию протокола с расширенным набором команд, а клиент нет, в протоколе должна быть возможность это выяснить и сервер может общаться с клиентом на старой версии. Также и клиент должен общаться с сервером набором комонд, которые тот поддерживает. Со временем сильно старые версии можно запрещать.
Я конечно тоже идеалист, но это уже перебор, пора спускаться с небес.В программировании фактов неопределённости очень велик. Если все пользователи вашей программы находятся в одном здании и по команде админа обновляют софт преданно глядя вам в глаза, дружно высунув языки и кивая головами - то Вам шикарно повезло, в реальном мире всё как раз наоборот, это я как админ со стажем Вам заявляю. Добро пожаловать в реальный мир, UNIX - это система для реального мира.