Если вы отправляете много данных, и если данные не критичны, то UDP - лучший вариант. Однако это может привести к потере пакетов (вы можете потерять один из ваших наборов данных по сети). Это часто хорошо, если ваши данные делают что-то вроде обновления диаграммы в реальном времени, поскольку пропущенное значение не имеет значения.
Если, однако, пропущенные данные имеют решающее значение, то TCP / IP будет вашим лучшим вариантом для отправки данных по сети. Учитывая высокую скорость передачи данных, вам лучше всего создать свой собственный двоичный формат, определенный пользователем, и просто отправлять / получать необработанные байты. Использование Xml будет намного, намного болтливее (что означает больше накладных расходов). Даже BinaryFormatter добавит некоторые издержки, так как сериализация имеет тенденцию добавлять немного больше, чем абсолютно необходимо.