Node.Js + Socket.IO vs SignalR vs C # serwer WebSocket


Obecnie mam aplikację serwera TCP napisaną w .Net, która odbiera i wysyła wiadomości do klientów. Rozglądam się za budową aplikacji internetowej, więc potrzebuję warstwy komunikacyjnej.
Zbudowałem aplikację Node.JS + Socket.IO, która łączy się z moim serwerem TCP, a następnie wysyła wiadomość do aplikacji internetowej i wszystko działa dobrze.
Właśnie przeczytałem o SignalR jako alternatywie dla trzymania go na stosie .Net.
Jednak odkryłem również, że umiem napisać serwer C # Websocket, podstawowe demo

tutaj
https://coderoad.ru/2211898/
Zakładam, że ten podstawowy serwer jest tym, czym jest sygnalizujący, ale oczywiście ma znacznie większą funkcjonalność?
To, co próbuję rozwiązać, to po prostu dodać moją bieżącą aplikację TCP do serwera Websocket lub przejść do oddzielnej trasy SignalR lub Node.js? Poza tym, jak działa aplikacja sygnalizująca, czy jest to usługa systemu Windows, aplikacja konsoli czy usługa IIS?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

SignalR jest podobny do Socket.IO, ponieważ obsługuje transport negocjacji/rezerwy. jest to framework, a nie serwer, więc musisz umieścić go na jakimś serwerze. Mamy hosty dla ASP.NET, OWIN (jak Kayak) i hostingu własnego, więc możesz łatwo uruchomić je we własnym procesie, takim jak usługa Windows.
SignalR obsługuje klientów dla przeglądarek (JS), .NET, Windows Phone 7 i Silverlight. Istnieją również dostarczeni klienci dla rzeczy takich jak iOS, Mono Touch itp.
SignalR zapewnia znacznie wyższy poziom interfejsu API niż surowe gniazda, co jest dużą zaletą, umożliwiając wykonywanie takich czynności, jak „RPC” z serwera do klientów w sposób rozgłoszeniowy (lub ukierunkowany).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Inne konsekwencje
>
Użyłem obu technologii i pracowałem po obu stronach stosów .NET/węzłów.
  • Chociaż obecnie wolę stronę węzłów, jeśli pracujesz tylko w .NET, SignalR jest oczywistym wyborem. I odwrotnie, jeśli budujesz wszystkie swoje projekty w węźle, wybrałbym socket.io lub sockjs https://github.com/sockjs... Jeśli Twój zakres jest na tyle wąski, że nie musisz się martwić o rezerwy i tym podobne, polecam sprawdzenie modułu ws https://www.npmjs.com/package/wsponieważ jest to prostsze i łatwiejsze, zależy od twoich zależności. W przeszłości socket.io stanowił problem w systemie Windows z powodu problemów z instalacją node-gyp, który nie był w stanie zainstalować natywnych zależności ( node-gyp https://github.com/nodejs/node-gypwymaga wielu kroków konfiguracyjnych, które różnią się znacznie w zależności od posiadanej wersji systemu Windows, ale są wymagane w przypadku modułów wbudowanych w języku C ++). Aktualizacja ten bit systemu Windows nie jest już tak istotny dzięki windows-build-tools https://www.npmjs.com/package/windows-build-tools .
  • Jeśli masz moduł równoważenia obciążenia i planujesz uruchomić SignalR, musisz skonfigurować SQL lub Redis jako płytę montażową, aby ominąć moduł równoważenia obciążenia. Będziesz miał podobne problemy po stronie socket.io i jest [obsługiwanych wiele metod] [1] (z których 1 jest również redis).


Aktualizacja - usunięto informacje jQuery, ponieważ nie mają już zastosowania
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zaprojektowanie skalowalnego/bezpiecznego wątkowo serwera TCP może być trudne. Z drugiej strony w Internecie są bardzo dobre zasoby do rozpoczęcia własnego. Na przykład, jeśli szukasz tylko dobrych projektów WebSocket typu open source, moja rada byłaby następująca;
Projekt alchemiczny
https://github.com/Olivine-Lab ... kets: Biblioteka Open Source C # WebSocket
Projekt Fleck
https://github.com/statianzo/Fleck: Biblioteka Open Source C # WebSocket
SignalR może być dobry, ale wymaga serwera Windows 8/IIS 8, aby zapewnić funkcjonalność protokołu WebSocket.
Jeśli chodzi o produkt komercyjny, szczególnie biorąc pod uwagę, że funkcja WebSocket nie jest dostępna we wszystkich przeglądarkach, polecam bibliotekę PokeIn WebSocket i odwróć Ajax. Od wersji 2.0 ma wbudowany serwer WebSocket. Dostępne szczegóły

tutaj
http://www.pokein.com/Help/WebSocketFeature.aspx

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się