В большинстве решений, которые я видел, используется собственный протокол обмена сообщениями.
.Net сокеты также были использованы.
Я знаю, что в компактном фреймворке 3.5 есть WCF, но есть ограничения, и было немало отзывов о том, что это ненадежно.
Самая большая проблема с большинством механизмов - управление версиями сериализации.
Смотрите здесь для CF 3,5