Это плохо вообще.
По хорошему дети не должны знать ни о протоколе ни о том, что есть какой-то сервер которому можно что-то послать.
За всем следит единый (хотя не обязательно единый) ServerManager который может подключать разные парсеры преобразовывающие внутренние объекты в нужный протокол и обратно.
Часто одни и те же данные могут отправляться-приниматься по разному..
например у юзера закрыты дефолтные порты, пробуем установить связь по другому порту, если нет пробуем http - connect если и он не проходие - создаём http-polling соединение..
Классам предметной области об этом знать не надо.
Пришло сообщение с сервера. Менеджер его принял - подключенные парсеры его обраьботали преобразовали в нужный вид - далее предали главному контроллеру приложения.
Контроллер уже решает что с ним делать, но он работает не с каким то xml, а с уже сериализованными данными.
То же самое и обратно. Модуль послал сообщение, контроллер его обработал передал сервер-менеджеру, менеджер через парсер десериализовал и отправил по нужному протоколу на сервер.
Всё.
Если вы работаете в режиме RPC - то тут ситуайия немного сложнее и нужно вводить идентификаторы запросов, организовавать очереди и т.п. Но всё равно модуль будет отправлять типизированный в AS класс запроса в котором может быть ссылка кна колбэк, в этот колбэк и прийдёт уже стипизированный ответ.
Вот немножко про
сокеты.