Re: IM cервер. Как увеличить кол-во одновременным соединений
От:
Аноним
Дата:
10.02.06 08:10
Оценка:
Здравствуйте, p_s_g, Вы писали:
__>Есть самописный сервер обмена текстовыми сообщениями (типа ICQ, но намного проще). Реализован на сокетах по синхронной схеме с пулом потоков. Написан на C# под .Net Framework 1.1. __>Интересует следующие вещи (если у кого-то есть подобный практический опыт): __>Сможет ли сервер, написанный на .Net с такой схемой работы, выдержать 5000-10000 одновременных соединений (конечно, при условии, что он написан "прямыми" руками)? __>Какая схема позволяет получить наиболее производительное решение (синхронная с пулом потоков, асинхронная или ваш вариант — в тех статьях, которые мне попались, мнения расходятся)? __>Даст ли переход от .Net к, например, C++ выигрыш по производительности (сервер должен крутиться под Windows)? __>В общем, что лучше всего использовать для написания сервера, который сможет нормально работать под Windows при 5000-10000 одновременных соединений? __>Нужно либо обоснованное мнение, либо отсыл к грамотным статьям на эту тему.
1) Самая производительная и легко масштабируемая архитектура сервера для Windows это использование IO Completion Port. Твои 5-10К клиентов — легко и непринужденно. Аргументы см. в МСДН где рассказывается про это самое — различные типы серверов и их преимущества/недостатки.
2) C++ однозначно лучше .Net по производительности и гибкости написания, хотя, тут уже вопрос вкусов, стандартизации платформы и много других факторов. Чисто формально — "точка" толще чем чистый код, потому и медленнее.