2014-02-19 2 views
0

Мне нужно разработать серверное приложение, использующее TCP-сокеты для игры. Я занимался некоторыми исследованиями, чтобы узнать, какая технология лучше всего соответствует моим потребностям, а также с помощью SO.C# Sockets vs NodeJS Socket.IO

В настоящее время у меня есть два варианта для себя. Это либо создание серверного приложения в C# с SocketAsyncEventArgs, либо с помощью NodeJS и Socket.IO.

Мой выбор будет для NodeJS, потому что я хотел бы думать, что они уже сделали всю тяжелую работу и много оптимизировали свою библиотеку сокетов. Так что все, что мне нужно сделать, это просто использовать его и, возможно, немного подстроить.

Но мой главный вопрос: будет ли NodeJS быть достаточно хорошим?

Сервер должен быть высокопроизводительным сокетным приложением. Я знаю, что могу получить хорошие результаты, когда я использую C#. Но действительно ли существует огромная разница между классом Socket Socket или NodeJs Socket.IO? Должен ли я ожидать меньше от NodeJS?

Я не смог найти информацию о Winsock vs NodeJS/Socket.IO. Поэтому я надеюсь, что у кого-нибудь есть какие-то знания об этих двух. И что я мог ожидать от этих двух, когда вы их сравниваете.


Дополнительная информация о том, что сервер будет делать.

Сервер будет в основном передавать данные от одного клиента другому. Дело в том, что один клиент отправит около 30 в 40 небольших пакетов (~ 300 байт) на сервер в секунду. Сервер будет отправлять каждый запрос ровно одному другому клиенту. Но в то же время другой клиент будет отправлять тот же объем данных в секунду назад.

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

ответ

0

Но мой главный вопрос: будет ли NodeJS достаточно хорошим?

Позвольте мне еще раз фраза:

Но мой главный вопрос в том, какая из технологий-X и технологии-Y быстрее?

На что есть только один ответ: прототип в обоих вариантах и ​​контрольном.

Вы не даете никакой информации о характере сервера, поэтому я предлагаю, чтобы выбор библиотеки сокетов был очень плохой основой для выбора вашего основного стека реализации. Если не очень странно, вы либо будете ограничены ЦП (многие бизнес-логики/вычисления для выполнения), либо IO ограничены в сетевом или локальном хранилище (перемещение большого количества информации) с более вероятным, если у вас нет очень толстых труб.

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

+0

Я добавил дополнительную информацию о том, что сервер будет делать с моим сообщением. Мы также планируем сделать свой собственный тест. Я просто надеюсь, что там уже есть какая-то информация, потому что всегда приятно видеть, что другие пытались и какие результаты они получили от нее. – Vivendi

+0

Я подозреваю, что любой подход будет достаточно быстрым, если он написан правильно (т. Е. Все async). В конце и .NET, и Node скомпилированы JIT, мусор собран с асинхронными API. – Richard