Comunicazione tra Node.Js e ASP.NET MVC Application

Ho un sito Web complesso esistente creato utilizzando ASP.NET MVC, incluso un back-end del database, un livello dati e il livello dell’interfaccia utente Web. Ribuild questo sito Web in un’altra lingua non è un’opzione fattibile.

Ci sono alcuni elementi dell’interfaccia utente su alcune viste (lato client) che trarrebbero beneficio dall’interattività dal vivo, coinvolgendo sia push che pull, quindi piuttosto che implementare un qualche tipo di server di polling o websocket personalizzato in asp.net, sto cercando di sfruttare il nodo. js per Windows e Socket.io.

Il mio problema è che ho bisogno di una comunicazione bidirezionale tra entrambe le applicazioni. Ogni utente dovrebbe essere in grado di ricevere dati solo dopo essere stati autorizzati sul sito Web ASP.NET, quindi per prima cosa ho bisogno di comunicare. In secondo luogo, una volta determinati eventi si verificano sul sito Web ASP.NET, desidero trasferire immediatamente questi dati sul server Node, per essere trasmessi a specifici utenti o gruppi di utenti. In terzo luogo, vorrei che tutti i dati inviati al server node.js vengano inviati al sito Web ASP.NET per l’elaborazione, poiché è qui che si trova tutta la nostra logica aziendale. L’unica ragione per aggiungere Node.js è avere la possibilità di inviare dati direttamente al client, non voglio creare alcuna logica di business (o il meno ansible).

Mi piacerebbe sapere qual è il metodo più veloce di comunicazione push bidirezionale tra Node.Js e ASP.NET. L’unica buona opzione di cui sono a conoscenza fino ad ora è creare un listener speciale su una porta specifica sul server node.js e connettermi, ma mi chiedevo se c’è un metodo più elegante o più efficiente? So anche che potresti usare un database tra di loro ma sicuramente questo dovrebbe essere interrogato e sarebbe meno efficiente? Entrambi i server saranno in esecuzione sullo stesso server in un progetto di Visual Studio.

Molte grazie per qualsiasi aiuto tu possa fornire.

    Non sono un esperto di ASP.NET, ma penso che ci siano molti modi per ottenerlo:

    1) Come hai detto, puoi fare in modo che Node ascolti su una porta specifica per i dati e poi reagisca in base ai dati ricevuti (TCP)
    2) È ansible effettuare richieste POST a Node.js (HTTP) e anche inviare una chiave di autenticazione nel processo per essere più sicuro. Come su 1) Nodo reactjsbbe ai dati inviati.
    3) Utilizzare qualcosa come Redis per pub-sub, inviare messaggi da ASP.NET (pub) e scaricarli nella parte Node.js (sub). Questo è ancora meglio se vuoi scalare la tua app su più macchine, ecc.

    L’unica buona opzione di cui sono a conoscenza fino ad ora è creare un listener speciale su una porta specifica sul server node.js e connettermi, ma mi chiedevo se c’è un metodo più elegante o più efficiente?

    Si può provare a guardare il pub / sotto- modello redis dove l’applicazione ASP.NET MVC e node.js dovrebbero comunicare attraverso canali separati per ottenere comunicazioni full-duplex. Oppure puoi anche provare ad usare CouchDB change nofitications .

    So anche che potresti usare un database tra di loro ma sicuramente questo dovrebbe essere interrogato e sarebbe meno efficiente?

    Le tecniche precedenti non richiedono il polling per le modifiche, ma invece ti notificheranno quando le modifiche si verificano o il messaggio del canale arriva.