TcpClient - чем я могу его заменить? - PullRequest
0 голосов
/ 16 июня 2011

У нас есть клиент-серверное приложение, где все клиенты также общаются друг с другом через TCP (TcpClient + TcpListener на каждом клиенте)

Итак, когда клиент A что-то делает - он отправляет сообщение клиентам B, C и D, а затем ожидает ответа. Это становится медленным для многих клиентов (например, 20 сейчас)

Есть ли какой-нибудь лучший способ транслировать пакет всем одновременно? Я знаю имена хостов каждого и т. Д.

Мне просто нужно отправить сообщение и узнать, успешно ли оно его получило.

Какие у меня варианты?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Я предлагаю полностью отключить стратегию и использовать некоторую шину сообщений, которая делает это надежным и настроенным способом.Я доволен ActiveMQ , что даже если он реализован на Java, очень легко работает на C # .Если вы хотите что-то чистое .NET, взгляните на NServiceBus или Сервисная шина Rhino .Я знаю, что вы, вероятно, чувствуете, что задача по отправке сообщений между клиентами проста, и вы можете сделать это самостоятельно, если вы хотите работать надёжно на производстве, лучше, если вы используете чужие усилия и расслабляетесь.Будет очень сложно попытаться устранить ошибки связи, когда приложение будет запущено на сайте клиента.Проигнорируйте это, если вы пишете шину сообщений конкурента, конечно :) Все эти решения позволяют вам выполнить работу, просто прочитав документацию.Сделайте некоторое тестовое приложение «in vitro» перед тем, как заменить производственный код, чтобы получить необходимую уверенность, а затем замените жесткий TcpClient.Я совершенно уверен, что вы можете найти точку усечения, чтобы изолировать только дейтаграммы сообщений, на которых размещается новая стратегия.

0 голосов
/ 16 июня 2011

Вы можете использовать протокол многоадресной рассылки, когда вам нужно отправить только один пакет вашей группе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...