2011-11-11 5 views
8

데이터베이스 백엔드, 데이터 계층 및 웹 UI 계층을 포함하여 ASP.NET MVC를 사용하여 작성된 기존의 복잡한 웹 사이트가 있습니다. 이 웹 사이트를 다른 언어로 재구성하는 것은 현실적으로 불가능합니다.Node.Js와 ASP.NET MVC 응용 프로그램 사이의 통신

몇 가지 UI 요소가 라이브 상호 작용에서 이익을 얻을 수있는 푸시와 풀이 모두 포함되므로 어떤 종류의 사용자 지정 긴 폴링 또는 asp.net의 websocket 서버를 구현하는 대신 찾고 있습니다. Windows 용 node.js 및 Socket.io를 활용할 수 있습니다.

제 문제는 두 응용 프로그램간에 양방향 통신이 필요하다는 것입니다. 각 사용자는 ASP.NET 웹 사이트에서 권한을 부여받은 후에 만 ​​데이터를 수신 할 수 있어야하므로 먼저이 통신을위한 통신이 필요합니다. 둘째, 특정 이벤트가 ASP.NET 웹 사이트에서 발생하면이 데이터를 노드 서버로 즉시 전달하여 특정 사용자 또는 사용자 그룹에게 브로드 캐스트합니다. 셋째, node.js 서버로 보내지는 모든 데이터를 처리하기 위해 ASP.NET 웹 사이트에 푸시해야합니다. 이것이 우리의 비즈니스 로직이있는 곳입니다. Node.js를 추가하는 유일한 이유는 클라이언트에 직접 데이터를 푸시 할 가능성이 있기 때문입니다. 비즈니스 로직을 빌드하려는 (또는 가능한 한 작게는) 것을 원하지 않습니다.

양방향 푸시 통신의 가장 빠른 방법이 Node.Js와 ASP.NET 사이에 무엇인지 알고 싶습니다. 지금까지 알고있는 유일한 좋은 옵션은 node.js 서버의 특정 포트에 특별한 리스너를 만들어 연결하는 것입니다. 그러나 더 우아하고 효율적인 방법이 있는지 궁금합니다. 나는 또한 데이터베이스를 사용할 수 있음을 알고 있지만 확실하게 이것은 폴링 될 필요가 있으며 효율성이 떨어질 것입니다. 두 서버 모두 Visual Studio 프로젝트의 동일한 서버에서 실행됩니다.

제공 할 수있는 많은 도움에 감사드립니다.

+0

이 질문에 익숙하지 않은 분들에게 제안 된 솔루션의 대안 인 [EdgeJS] (http://tjanczuk.github.io/edge/#/)라는 라이브러리가 있습니다. 가장 좋은 점은 양방향으로 진행된다는 것입니다. .NET 또는 Node를 제어 프로세스로 사용할 수 있습니다. –

답변

3

은 내가 ASP.NET 전문가는 아니지만 당신이 이것을 달성 할 수있는 여러 가지 방법이 있습니다 생각 :

1) 당신이 말했듯이, 당신이 노드는 데이터의 특정 포트에서 수신 할 수 있으며, (TCP)
) HTTP 요청을 Node.js로 보내고 인증 과정에 인증 키를 보내 보안을 강화할 수 있습니다. 1) 노드는 보내는 데이터에 반응합니다.
3) pub-sub에 Redis과 같은 것을 사용하고 ASP.NET (pub)에서 메시지를 보내고 Node.js 부분 (sub)에서 가져옵니다. 당신이 등 여러 시스템에 걸쳐 응용 프로그램을 확장하려는 경우에도 더

내가 지금까지 알고 있어요 유일한 좋은 옵션은 Node.js를 서버의 특정 포트에 특별한 수신기를 만드는 것입니다
2

그리고 그것에 연결하면, 더 우아하고 더 효율적인 방법이 있는지 궁금합니다.

ASP.NET MVC 응용 프로그램과 node.js가 전이중 통신을 위해 별도의 채널을 통해 통신하는 모델 redis pub/sub을 살펴볼 수 있습니다. 또는 CouchDB change nofitications을 사용해 볼 수도 있습니다.

또한 데이터베이스를 사용할 수 있지만이 은 반드시 폴링해야하며 효율성이 떨어질 수 있습니다.

이전 기술은 변경 사항을 폴링하지 않아도되지만 변경 사항이 발생하거나 채널 메시지가 도착하면 사용자에게 알려줍니다.

관련 문제