.Net, TCP против UDP, асинхронная отправка нескольких сообщений / клиентов - PullRequest
0 голосов
/ 19 апреля 2019

Я работаю с .Net Я ищу создание службы и смотрю между TCP или UDP.Сервис должен поддерживать несколько клиентов, поэтому я делаю его асинхронным с .Net SocketAsyncEventArgs, поскольку, как я видел, он имеет лучшую производительность и меньшее потребление памяти.Я знаю, что TCP медленнее, чем UPD, но мне хотелось бы узнать ваше мнение о том, что будет работать быстрее между этими двумя сценариями

1) Используя TCP и SocketAsyncEventArgs, каждый клиент будет подключаться, и как только служба в основном принимает подключениеУ каждого клиента есть конечная точка для начала отправки и получения, поэтому при открытом соединении можно принять несколько сообщений (принято).В основном каждый клиент имеет свое собственное соединение и может иметь двустороннюю связь

2) Каждый клиент будет отправлять дейтаграмму UDP на одну и ту же конечную точку сервера UDP, поэтому в основном у меня есть одна конечная точка для всех клиентов, чтобы отправлять все сообщения, а затем обрабатыватьих и отправить дейтаграммы каждому индивидуально.

Возможно, у меня неправильное представление о TCP / UPD, но в основном вопрос заключается в том, что, если у меня открытое TCP-соединение для каждого клиента, это медленнее, чем отправка сообщений UDP и обратно, когда все клиенты совместно используют один и тот же начальный UDPконечная точка.

1 Ответ

0 голосов
/ 19 апреля 2019

Ваше первое внимание не должно быть производительность.TCP - это надежный протокол, а UDP - нет.Если вы реализуете UDP, то вам нужно будет внедрить дополнительную логику, чтобы сообщения достигли места назначения.

UDP имеет смысл в нескольких ограниченных сценариях: (1) когда вы хотите транслировать сообщения (TCP не способен кшироковещательная рассылка) или (2) когда вам действительно все равно, попадают ли 100% сообщений в пункт назначения.

...