Kommunikation zwischen Node.Js und der ASP.NET MVC-Anwendung

8

Ich habe eine bestehende komplexe Website, die mit ASP.NET MVC erstellt wurde, einschließlich eines Datenbank-Backends, einer Datenschicht sowie der Web-UI-Ebene. Der Wiederaufbau dieser Website in einer anderen Sprache ist keine praktikable Option.

Es gibt einige UI-Elemente in einigen Ansichten (clientseitig), die von Live-Interaktivität profitieren würden, die sowohl Push- als auch Pull-Vorgänge beinhalten, also statt einer Art benutzerdefinierter Long-Polling- oder Websocket-Server in asp.net Nutzen Sie node.js für Windows und Socket.io.

Mein Problem ist, dass ich eine wechselseitige Kommunikation zwischen beiden Anwendungen brauche. Jeder Benutzer sollte nur dann Daten empfangen können, wenn er auf der ASP.NET-Website autorisiert wurde. Dazu benötige ich zuerst eine entsprechende Kommunikation. Zweitens, wenn bestimmte Ereignisse auf der ASP.NET-Website auftreten, möchte ich diese Daten sofort an den Node-Server senden, um sie an bestimmte Benutzer oder Benutzergruppen zu senden. Drittens möchte ich, dass alle an den node.js-Server gesendeten Daten zur Verarbeitung an die ASP.NET-Website gesendet werden, da hier unsere gesamte Geschäftslogik liegt. Der einzige Grund für das Hinzufügen von Node.js ist die Möglichkeit, Daten direkt zum Client zu übertragen, ich möchte keine Geschäftslogik darin (oder so wenig wie möglich) einbauen.

Ich würde gerne wissen, was die schnellste Methode der Zwei-Wege-Push-Kommunikation zwischen Node.Js und ASP.NET ist. Die einzige gute Option, die mir bisher bekannt ist, ist, einen speziellen Listener an einem bestimmten Port auf dem node.js-Server zu erstellen und mich damit zu verbinden, aber ich frage mich, ob es eine elegantere oder effizientere Methode gibt? Ich weiß auch, dass Sie eine Datenbank dazwischen verwenden könnten, aber das müsste sicher abgefragt werden und wäre weniger effizient? Beide Server werden auf demselben Server unter einem Visual Studio-Projekt ausgeführt.

Vielen Dank für Ihre Hilfe.

    
Oriental 11.11.2011, 07:44
quelle

2 Antworten

3

Ich bin kein ASP.NET-Experte, aber ich denke, gibt es mehrere Möglichkeiten, dies zu erreichen:

1) Wie Sie gesagt haben, können Sie Node auf einen bestimmten Port für Daten hören lassen und dann basierend auf den empfangenen Daten (TCP) reagieren 2) Sie können POST-Anfragen an Node.js (HTTP) senden und auch einen Auth-Schlüssel senden, um besonders sicher zu sein. Wie bei 1) würde Knoten auf die Daten reagieren, die Sie senden.
3) Verwenden Sie so etwas wie Redis für pub-sub, senden Sie Nachrichten von ASP.NET (pub) und holen Sie sie auf dem Node.js-Teil (sub) . Dies ist noch besser, wenn Sie Ihre App auf mehrere Computer skalieren möchten.

    
alessioalex 11.11.2011, 08:59
quelle
2
  

Die einzige gute Option, die mir bisher bekannt ist, ist die Erstellung eines Specials   Listener auf einem bestimmten Port auf dem Server node.js und verbinden Sie sich damit,   aber ich frage mich, ob es eine elegantere oder effizientere gibt   Methode?

Sie können versuchen, sich das redis pub / sub -Modell anzuschauen, in dem die ASP.NET MVC-Anwendung und node.js über separate kommunizieren würden Kanäle, um Vollduplex-Kommunikation zu erreichen. Oder Sie können auch versuchen, CouchDB nifitications zu ändern .

  

Ich weiß auch, dass Sie dazwischen eine Datenbank verwenden können, aber sicher dies   müsste abgefragt werden und wäre weniger effizient?

Bei früheren Techniken müssen Sie nicht nach Änderungen suchen, sondern Sie werden benachrichtigt, wenn die Änderungen eintreten oder die Kanalnachricht eintrifft.

    
yojimbo87 11.11.2011 13:21
quelle

Tags und Links