Nœud.Js + Socket.IO vs SignalR vs C # WebSocket Server

j'ai actuellement une application de Serveur TCP écrite en .Net qui reçoit et soumet des messages aux clients. Je suis à la recherche de construire une application web ont donc besoin de la couche de communication.

j'ai construit un noeud.Js + Socket.Io app qui se connecte à mon serveur TCP et puis pousse la communication à l'application web et tout fonctionne très bien.

je viens de lire à propos de SignalR comme une alternative pour le garder dans la pile .Net.

cependant, j'ai aussi trouvé que je pouvais écrire un serveur Websocket C#, une démo de base ici

je suppose que ce serveur de base est ce que SignalR est mais évidemment avec beaucoup plus de fonctionnalités?

ce que j'essaie de décider c'est si je dois juste ajouter mon application TCP actuelle avec un serveur Websocket ou si je dois passer par un autre SignalR ou noeud.js route? Sans intérêt comment fonctionne une application SignalR, est-il comme un Service Windows, application console ou service IIS?

64
demandé sur Community 2012-03-02 21:24:40

3 réponses

SignalR est comme Socket.IO dans la mesure où il soutient la négociation/le repli des transports. C'est un cadre et non un serveur, vous devez l'héberger sur un serveur quelconque. Nous avons des hôtes pour ASP.NET, OWIN (par exemple Kayak) et SELF-host, de sorte que vous pouvez l'exécuter dans votre propre processus facilement, par exemple un service Windows.

SignalR a pris en charge des clients pour les navigateurs (js), .NET, Windows Phone 7 et Silverlight. Il y a aussi des clients contributifs pour des choses comme iOS, Mono Touch, etc.

SignalR vous donnera une API de niveau beaucoup plus élevé que les sockets bruts, ce qui est son grand avantage, vous permettant de faire des choses comme "RPC" du serveur aux clients de manière diffusée (ou ciblée).

71
répondu Damian Edwards 2012-03-05 20:39:13

autres implications

j'ai utilisé les deux technologies et j'ai travaillé sur les deux côtés des piles .NET / node.

  1. bien que je préfère le côté du noeud ces jours-ci, si vous ne travaillez qu'avec .NET, SignalR est le choix évident. À l'inverse, si vous construisez tous vos projets dans node, j'opterai pour socket.io or sockjs . Si votre champ d'action est assez étroit pour que vous n'ayez pas à vous soucier des retombées et de ce genre de choses, je nous vous recommandons de vérifier WS module depuis son plus simple et plus léger sur vos dépendances. Dans le passé, socket.io a été une douleur sur Windows en raison de problèmes d'installation avec node-gyp ne parvenant pas à installer des dépendances natives ( node-gyp nécessite de nombreuses étapes de configuration qui varient énormément en fonction de la version de Windows que vous avez mais est nécessaire pour C++ modules construits natifs). UPDATE ce bit Windows N'est pas tellement pertinent plus maintenant grâce à windows-build-outils .
  2. si vous avez un équilibreur de charge et que vous prévoyez d'exécuter SignalR, vous allez avoir besoin de configurer SQL ou Redis comme un plan arrière pour contourner l'équilibreur de charge. Vous aurez des problèmes similaires à traiter sur la socket.io side et il y a[multiple supported methods] [1] (dont 1 est redis également).

mise à Jour - retrait d'info jquery puisqu'il n'est plus applicable

17
répondu cchamberlain 2018-01-03 06:32:17

le développement d'un serveur TCP évolutif / sécurisé n'est peut-être pas une tâche facile. D'un autre côté, il y a de très belles ressources sur internet afin de lancer les vôtres. Par exemple, si vous êtes à la recherche de projets WebSocket open source, mon conseil serait:

L'Alchimie Du Projet : L'Open Source C# WebSocket Bibliothèque

Fleck Project : Open Source C # WebSocket Library

SignalR pourrait être agréable, mais il a besoin de Windows Server 8 / IIS 8 afin de fournir la fonctionnalité WebSocket.

du côté des produits commerciaux, en particulier compte tenu de la fonctionnalité websocket n'est pas disponible sur tous les navigateurs, je recommande PokeIn WebSocket et bibliothèque Ajax inverse. À partir de la version 2.0, Il a intégré WebSocket server. Détails disponibles à partir de ici

15
répondu Zuuum 2012-03-05 17:55:19