PDA

Просмотр полной версии : Выбор сетевого фреймворка


darcaster
28.05.2025, 21:25
Всем привет, комрады! Вопрос назрел: Какой из сетевых фреймворков выбрать для эмуля сервера MMO ? Нужно:

1. Кроссплатформенность (Windows, Linux, NetBSD)

2. Способность держать большой онлайн, и решение проблемы 10 000.

3. Желательно по стилю ближе C++ 03, это raw pointers и никаких auto в коде.

Из того, что имеем: это POCO, ACE, Asio.

Asio совсем мимо пункта 3, но если есть огромные преимущества, то можно проглотить.

ACE использует Мангос и ТуртлВов; на Asio живёт TrinityCore. Собственно вопросы,

- может ли кто-то что-то рассказать про POCO именно в ключе вопроса ММО фришардов;

- есть ли пример сервера с живым онлайном в 5к на базе Asio;

- примеры проблем с этими фреймворка и, если у кого-то были, или причины и опыт миграции с одного на другой.

- возможно, есть ещё достойные и проверенные решения, которые я не упомянул

//Start

Projack
28.05.2025, 22:13
Всем привет, комрады! Вопрос назрел: Какой из сетевых фреймворков выбрать для эмуля сервера MMO ? Нужно:
1. Кроссплатформенность (Windows, Linux, NetBSD)
2. Способность держать большой онлайн, и решение проблемы 10 000.
3. Желательно по стилю ближе C++ 03, это raw pointers и никаких auto в коде.
Из того, что имеем: это POCO, ACE, Asio.

Asio совсем мимо пункта 3, но если есть огромные преимущества, то можно проглотить.

ACE использует Мангос и ТуртлВов; на Asio живёт TrinityCore. Собственно вопросы,
- может ли кто-то что-то рассказать про POCO именно в ключе вопроса ММО фришардов;
- есть ли пример сервера с живым онлайном в 5к на базе Asio;
- примеры проблем с этими фреймворка и, если у кого-то были, или причины и опыт миграции с одного на другой.
- возможно, есть ещё достойные и проверенные решения, которые я не упомянул
//Start


Когда я последний раз смотрел POCO оно не умело в epoll, а тебе он по хорошему нужен, чтобы хендлить большое количество коннектов. Если они допилили, то можно посмотреть. Но кажется если ACE используется в 2-х проектах, а буст не подходит, то стоит в его сторону смотреть как минимум из-за того, что есть рабочий пример, а сетевой стек всегда можно заменить

Тут кажется мало тех кто имплементил/юзал разные сетевые стеки в c/cpp. Если бы не ограничение по версии языка - я бы брал asio, но его надо уметь готовить. А так, обычно не так много и требуется, можно и свой написать или какой легковестный мультиплексирующий системные вызовы в гитхабе найти

verbrannt
29.05.2025, 00:46
Только Asio. Достаточной быстрый и простой асинхронный фреймворк для тех, кто не хочет заморачиваться и писать свои обертки над epoll/kqueue/winsock. Практически ничего лишнего, никаких HTTP, криптографии, работы с форматами и прочего хлама.

Компилятор от C++11. Если требование C++03 это вкусовщина а не доступный компилятор, то можно написать достаточно простые обертки.

darcaster
29.05.2025, 02:38
Только Asio. Достаточной быстрый и простой асинхронный фреймворк для тех, кто не хочет заморачиваться и писать свои обертки над epoll/kqueue/winsock. Практически ничего лишнего, никаких HTTP, криптографии, работы с форматами и прочего хлама.
Компилятор от C++11. Если требование C++03 это вкусовщина а не доступный компилятор, то можно написать достаточно простые обертки.


Ну вот тут есть пара моментов:

1. Не всегда криптография и http это мусор (хотя их всегда можно докинуть, и да, POCO в этом плане выглядит как too much)

2. Есть ли примеры живого использования того же TrinityCore на проде ?

3. Насколько ASIO будет быстрее (из-за обилия smart pointers и т.д. будет профитнее, скажем стандартной сетки от .net core и C#) ?

Projack
29.05.2025, 16:58
Насколько ASIO будет быстрее (из-за обилия smart pointers и т.д. будет профитнее, скажем стандартной сетки от .net core и C#) ?


Умные указатели дают минимальный оверхед, болезненный только если счётчик ссылок в shared_ptr. unique_ptr не стоит ничего( ну мож оптимизации компилятор какие пропустит). буфер асио позволяет с минимумом копирований с данными работать, но для 10к онлайна пофиг. asio будет быстрым настолько насколько возможно для обертки

serhio
06.09.2025, 21:19
Однозначно ASIO. POCO это прям java-style + там нет тех возможностей, которые даст asio, а есть те, которые ну прям не особо нужны такой штуке как сервер ММО. Про ACE буквально только что узнал, но что-то он 11 лет кажется не развивается уже никуда.

darcaster
06.09.2025, 22:21
Почти весь WOW держится или на boost.asio, или на ACE