Узел.Js + Socket.IO vs SignalR vs C# WebSocket Server


в настоящее время у меня есть приложение TCP server, написанное на .Net, которое получает и отправляет сообщения клиентам. Я смотрю на создание веб-приложения, поэтому нужен уровень связи.

Я построил узел.JS + Socket.IO приложение, которое подключается к моему TCP-серверу, а затем отправляет сообщение в веб-приложение, и все работает нормально.

Я только что прочитал о SignalR в качестве альтернативы, чтобы сохранить его в стеке .Net.

однако я также обнаружил, что Я мог бы написать сервер c# Websocket, базовую демонстрацию здесь

Я предполагаю, что этот базовый сервер-это то, что SignalR, но, очевидно, с гораздо большей функциональностью в нем?

то, что я пытаюсь решить, это просто добавить мое текущее приложение TCP с сервером Websocket или я иду вниз отдельный SignalR или узел.маршрут на JS? Из интереса как работает приложение SignalR, это как служба Windows, консольное приложение или служба IIS?

3 64

3 ответа:

помощью SignalR-это как гнездо.Ио в том, что он поддерживает транспортной переговоров/возврат. Это фреймворк, а не сервер, поэтому вам нужно разместить его на каком-то сервере. У нас есть хозяева для ASP.NET, OWIN (например, Kayak) и self-host, поэтому вы можете легко запустить его в своем собственном процессе, например, в службе Windows.

SignalR поддерживает клиенты для браузеров (JS), .NET, Windows Phone 7 и Silverlight. Есть также клиенты для таких вещей, как iOS, Mono Touch, так далее.

SignalR даст вам гораздо более высокий уровень API, чем raw sockets, что является его большим преимуществом, позволяя вам делать такие вещи, как "RPC" от сервера к клиентам в широковещательном (или целевом) режиме.

другие последствия

я использовал обе технологии и работаю с обеих сторон стеков .NET / node.

  1. хотя я предпочитаю сторону узла в эти дни, если вы работаете только в .NET, SignalR является очевидным выбором. И наоборот, если вы строите все свои проекты в узле, я бы пошел socket.io или sockjs. Если ваша область достаточно узка, чтобы вам не нужно было беспокоиться о резервах и тому подобных вещах, я бы рекомендовал проверить ws модуль, так как его проще и легче на ваших зависимостях. В прошлом, socket.io была боль в Windows из-за проблем с установкой узла-gyp не удалось установить собственные зависимости (node-gyp требуется много шагов настройки, которые сильно различаются в зависимости от того, какая версия Windows у вас есть, но требуется для встроенных модулей C++). обновление этот бит Windows уже не так актуален благодаря windows-build-tools.
  2. если у вас есть балансировщик нагрузки и вы планируете запустить SignalR, вам нужно будет настроить SQL или Redis в качестве объединительной платы, чтобы обойти балансировщик нагрузки. У вас будут похожие проблемы, чтобы иметь дело с на socket.io сторона и есть [несколько поддерживаемых методов] [1] (1 из которых также redis).

обновление-удалена информация jquery, так как она больше не применяется

разработка масштабируемого / потокобезопасного TCP-сервера может оказаться непростой задачей. С другой стороны, есть очень хорошие ресурсы в интернете, чтобы начать свой собственный. Например, если вы просто ищете некоторые хорошие проекты с открытым исходным кодом WebSocket, мой совет будет ;

Проект Алхимия : С Открытым Исходным Кодом На C# С WebSocket Библиотека

Fleck Project : С Открытым Исходным Кодом На C# С WebSocket Библиотека

SignalR может быть хорошим, но он нуждается Windows Server 8 / IIS 8 для обеспечения функции WebSocket.

на стороне коммерческого продукта, особенно учитывая, что функция websocket доступна не во всех браузерах, я рекомендую PokeIn WebSocket и reverse Ajax Library. Начиная с версии 2.0 он имеет встроенный сервер WebSocket. Подробная информация доступна от здесь