Вопрос

Я работаю над программой обмена мгновенными сообщениями на C# (только для обучения).
Просто хочу знать, правильный мой путь или нет.
Я создал класс Client, который содержит функции NetworkStream и Read/Write.
Сервер создает новый поток для каждого клиента, поток прослушивает любые новые сообщения.

Есть ли лучший способ?

Это было полезно?

Решение

Вам не обязательно создавать поток для каждого клиента.Я бы изучил шаблон проектирования Observer, поскольку он решает проблему публикации-подписки, что является хорошим способом рассмотрения приложения для обмена мгновенными сообщениями, особенно если вы хотите, чтобы несколько слушателей одного собеседника.Вот хорошее место для начала: http://www.blackwasp.co.uk/Observer.aspx.По этой ссылке обсуждается шаблон Observer и упоминается обмен мгновенными сообщениями: http://www.oodesign.com/observer-pattern.html.

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

Звучит как забавный проект.

Другие советы

Попробуйте WCF. Здесь хороший образец.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top