Какой язык программирования я должен использовать для написания Instant Messenger?
Вот цели:
- должен уметь работать со многими, многими пользователями (по крайней мере, для подтверждения концепции)
- должен основываться на json или, возможно, двоичных данных. Я думаю, что JSON легче реализовать и расширить. Я не хочу использовать XML из-за накладных расходов. Я знаю, что это не так много данных, но это должно быть как можно быстрее, особенно в медленных сетях (например, мобильных).
- пользователи должны иметь возможность войти в систему на нескольких устройствах одновременно
- история должна быть сохранена на сервере, чтобы ее можно было просматривать на всех устройствах
- сервер должен поддерживать множество незанятых клиентов
- передача файлов (не совсем уверен, как реализовать, может быть, другой сетевой сокет, чтобы он не блокировал сообщения чата на стороне клиента)
- MySQL auth
(Нет, XMPP не вариант).
Я веб-разработчик с хорошим опытом в PHP, но это не вариант для этого проекта. У меня также есть опыт работы с Javascript (в основном для веб-сайтов), но мне было бы легко работать с node.js, и у меня мало опыта работы с C # .Net, а также я мог бы писать на C # .Mono. Сервер, который я хочу написать, должен работать в Linux. У меня нет опыта работы с Java, но если бы это был лучший способ, которым я мог бы это изучить.
Я много читал о node.js и о том, что он имеет четный ввод-вывод, действительно хорош для сетевых приложений и веб-серверов. Но как насчет мессенджеров? Основная часть заключается в том, чтобы сохранять сообщения и передавать их другим участникам комнаты, так что это «сеть».
Я также подумал о C #, который предлагает асинхронные сокеты, которые работают с пулом потоков afaik вместо очереди событий.
Я не уверен, какой из них наиболее эффективен в отношении IM-сервера.
Было бы неплохо, если бы кто-нибудь дал мне подсказку. Я знаю, что C ++, вероятно, будет лучшим способом, но мне как-то не очень нравится этот язык, и его трудно выучить.