2011-11-11 5 views
8

J'ai un site Web complexe existant construit en utilisant ASP.NET MVC, y compris un backend de base de données, une couche de données, ainsi que la couche Web UI. Reconstruire ce site dans une autre langue n'est pas une option réalisable. Il y a des éléments de l'interface utilisateur sur certaines vues (côté client) qui bénéficieraient de l'interactivité en direct, impliquant à la fois pousser et tirer, donc plutôt que d'implémenter un serveur d'interrogation longue durée ou websocket personnalisé dans asp.net, je cherche exploiter node.js pour Windows et Socket.io.Communication entre Node.Js et l'application ASP.NET MVC

Mon problème est que j'ai besoin d'une communication bidirectionnelle entre les deux applications. Chaque utilisateur ne doit pouvoir recevoir des données qu'une fois qu'il a été autorisé sur le site Web ASP.NET. J'ai donc besoin d'une communication pour cela. Deuxièmement, une fois que certains événements se produisent sur le site Web ASP.NET, je veux immédiatement transmettre ces données au serveur Node, afin qu'elles soient diffusées à des utilisateurs ou à des groupes d'utilisateurs spécifiques. Troisièmement, j'aimerais que toutes les données envoyées au serveur node.js soient transmises au site Web ASP.NET pour traitement, car c'est là que se trouve toute notre logique métier. La seule raison d'ajouter Node.js est d'avoir la possibilité de pousser directement les données vers le client, je ne veux pas y intégrer de logique métier (ou le moins possible).

Je voudrais savoir quelle est la méthode de communication bidirectionnelle la plus rapide entre Node.Js et ASP.NET. La seule bonne option dont je suis conscient est de créer un écouteur spécial sur un port spécifique sur le serveur node.js et de me connecter, mais je me demandais s'il y avait une méthode plus élégante ou plus efficace? Je sais aussi que vous pourriez utiliser une base de données entre les deux mais sûrement cela devrait être interrogé et serait moins efficace? Les deux serveurs seront exécutés sur le même serveur sous un projet Visual Studio.

Un grand merci pour toute aide que vous pouvez fournir.

+0

Pour les nouveaux venus à cette question, il existe une bibliothèque appelée [EdgeJS] (http://tjanczuk.github.io/edge/#/) qui est une alternative aux solutions proposées. La meilleure chose est que cela va dans les deux sens - vous pouvez avoir. NET ou Node comme processus de contrôle. –

Répondre

3

Je ne suis pas un expert ASP.NET, mais je pense que il y a plusieurs façons dont vous pouvez y parvenir:

1) Comme vous l'avez dit, vous pouvez faire écouter nœud sur un port spécifique pour les données et puis réagissez en fonction des données reçues (TCP)
2) Vous pouvez envoyer des requêtes POST à ​​Node.js (HTTP) et également envoyer une clé auth dans le processus pour être extra-sécurisé. Comme sur 1) Node réagirait aux données que vous envoyez.
3) Utilisez quelque chose comme Redis pour pub-sub, envoyez des messages depuis ASP.NET (pub) et récupérez-les dans la partie Node.js (sub). Cela est encore mieux si vous voulez à l'échelle de votre application sur plusieurs machines, etc.

2

La seule bonne option que je suis au courant de ce jour est de créer un spécial écoute sur un port spécifique sur le serveur Node.js et se connecter à cela, mais je me demandais s'il y a une méthode plus élégante ou plus efficace?

Vous pouvez essayer de regarder redis pub/sub modèle où l'application ASP.NET MVC et Node.js communiqueraient par des canaux séparés afin d'obtenir une communication en duplex. Ou vous pouvez également essayer d'utiliser CouchDB change nofitications. Je sais aussi que vous pourriez utiliser une base de données entre mais aurait besoin d'être interrogé et serait moins efficace?

Les anciennes techniques ne nécessitent pas d'interroger les modifications, mais elles vous avertissent lorsque les modifications se produisent ou qu'un message de canal arrive.

Questions connexes