2011-11-11 15 views
8

データベースのバックエンド、データレイヤー、Web UIレイヤーなど、ASP.NET MVCを使用して構築された既存の複雑なWebサイトがあります。このウェブサイトを別の言語で再構築することは現実的ではありません。Node.JsとASP.NET MVCアプリケーション間の通信

ライブインタラクティブ性の恩恵を受けるいくつかのビュー(クライアント側)にいくつかのUI要素があります。プッシュとプルの両方が必要なため、asp.netでカスタムのロングポーリングやWebSocketサーバーを実装するよりも、 Windowsの場合はnode.js、Socket.ioの場合は

私の問題は、両方のアプリケーション間で双方向通信が必要なことです。各ユーザーは、ASP.NET Webサイトで許可されたデータのみを受信できる必要があります。そのためにはまず通信が必要です。次に、ASP.NET Webサイトで特定のイベントが発生すると、すぐにこのデータをノードサーバーにプッシュして、特定のユーザーまたはユーザーグループにブロードキャストする必要があります。第3に、node.jsサーバーに送信されたすべてのデータをASP.NET Webサイトにプッシュして処理させたいと思います。これが私たちのビジネスロジックがある場所です。 Node.jsを追加する唯一の理由は、クライアントに直接データをプッシュする可能性を持ち、ビジネスロジックを構築したくない(またはできるだけ少ない)ことです。

私は、双方向プッシュ通信の最速の方法がNode.JsとASP.NETの間でどのようなものかを知りたいと思います。私がこれまで知っていた唯一の良いオプションは、node.jsサーバーの特定のポートに特別なリスナーを作成して接続することですが、よりエレガントで効率的な方法があるのだろうかと思っていました。私はまたあなたがデータベースを使用することができることを知っていますが、確かにこれは投票する必要があり、それほど効率的ではありませんか?両方のサーバーは、Visual Studioプロジェクトの下で同じサーバー上で実行されます。

何か助けてもらえれば幸いです。

+0

この質問の初心者の方には、提案されたソリューションの代わりに[EdgeJS](http://tjanczuk.github.io/edge/#/)というライブラリがあります。最良の点は、それが双方向に進むことです。制御プロセスとして.NETまたはNodeを使用することができます。 –

答えて

3

私はASP.NETの専門家ではないんだけど、私はあなたがこれを達成することができ、複数の方法があるだと思う

1)あなたが言ったように、あなたはノードがデータのために特定のポートをリッスン作ることができますし、 (TCP)
2)POST要求をNode.js(HTTP)に送信し、プロセスで認証キーを送信して安全性を高めることができます。 on 1)Nodeは送信するデータに反応します。
3)pub-subにはRedisのようなものを使用し、ASP.NET(pub)からメッセージを送信し、Node.jsの部分(sub)で取得します。あなたが複数のマシンでアプリケーションを拡張したい場合、これは私がこれまでの承知している唯一の良いオプションは、Node.jsのサーバー上の特定のポートで特別 リスナーを作成することであるなど

2

にも優れています に接続しますが、よりエレガントで効率的な方法があるかどうか疑問に思っていましたか?

全二重通信を実現するために、ASP.NET MVCアプリケーションとnode.jsが別々のチャネルで通信するredis pub/subモデルを試すことができます。またはCouchDB change nofiticationsを使用することもできます。

また、データベースを使用することもできますが、確かにこの はポーリングする必要があり、効率が悪いですか?

以前の手法では変更をポーリングする必要はありませんが、変更が発生したときやチャネルメッセージが到着したときに通知されます。

関連する問題