Все зависит от ваших существующих навыков программирования.Я бы не стал начинать с более низких уровней, таких как класс Socket
(или TcpClient
/ UdpClient
), не имея хотя бы базовых знаний об асинхронном программировании.
Многие люди, начинающие с программирования сокетовзапускает отдельный поток для чтения, так как метод Read блокируется.Это очень неэффективный способ решения проблемы, особенно на серверах.BeingRead / EndRead - это путь.
Далее разрабатывается протокол передачи, поскольку TCP не гарантирует, что полное сообщение будет доставлено за один раз.Это только гарантирует, что ваши сообщения поступят в правильном порядке.
Следующая важная вещь в программировании сокетов - как обрабатывать входящие данные.Ошибка новичка состоит в том, чтобы начать добавлять строки, которые привели бы к большому использованию памяти в серверных приложениях.Используйте byte[]
буферы и пул буферов (шаблон flyweight) для управления входящими данными (это должно быть легко, если вы создали хорошо разработанный протокол).
Как видите, он «довольно большойзадача взять на себя без предварительного опыта.WCF - намного лучший вариант, поскольку он обрабатывает большинство этих вещей для вас.