2011-11-11 44 views
8

Tôi có một trang web phức tạp hiện có được xây dựng bằng cách sử dụng ASP.NET MVC, bao gồm một cơ sở dữ liệu phụ trợ, lớp dữ liệu, cũng như lớp Web UI. Việc xây dựng lại trang web này bằng một ngôn ngữ khác không phải là một lựa chọn khả thi.Giao tiếp giữa Node.Js và ASP.NET MVC Application

Có một số yếu tố giao diện người dùng trên một số chế độ xem (phía máy khách) sẽ có lợi từ tương tác trực tiếp, liên quan đến cả đẩy và kéo, thay vì triển khai một số loại máy chủ web hoặc máy chủ web tùy chỉnh dài trong asp.net, tôi đang tìm kiếm để tận dụng node.js cho Windows và Socket.io.

Vấn đề của tôi là tôi cần giao tiếp hai chiều giữa hai ứng dụng. Mỗi người dùng chỉ có thể nhận dữ liệu khi họ được ủy quyền trên trang web ASP.NET, vì vậy trước tiên tôi cần thông tin liên lạc cho điều này. Thứ hai, một khi các sự kiện nhất định xảy ra trên trang web ASP.NET, tôi muốn đẩy dữ liệu này ngay lập tức đến máy chủ Node, để phát sóng tới người dùng hoặc nhóm người dùng cụ thể. Thứ ba, tôi muốn bất kỳ dữ liệu nào được gửi đến máy chủ node.js để được đẩy đến trang web ASP.NET để xử lý, vì đây là nơi mà tất cả logic nghiệp vụ của chúng tôi nằm. Lý do duy nhất để thêm Node.js là có khả năng đẩy dữ liệu trực tiếp đến máy khách, tôi không muốn xây dựng bất kỳ logic nghiệp vụ nào vào nó (hoặc ít nhất có thể).

Tôi muốn biết phương pháp nhanh nhất của giao tiếp push hai chiều là giữa Node.Js và ASP.NET. Lựa chọn duy nhất tốt mà tôi nhận thấy từ trước đến nay là tạo một trình lắng nghe đặc biệt trên một cổng cụ thể trên máy chủ node.js và kết nối với nó, nhưng tôi đã tự hỏi liệu có một phương thức thanh lịch hay hiệu quả hơn không? Tôi cũng biết rằng bạn có thể sử dụng cơ sở dữ liệu inbetween nhưng chắc chắn điều này sẽ cần phải được thăm dò ý kiến ​​và sẽ kém hiệu quả hơn? Cả hai máy chủ sẽ chạy trên cùng một máy chủ trong một dự án Visual Studio.

Rất cám ơn vì bất kỳ trợ giúp nào bạn có thể cung cấp.

+0

Đối với những người mới tham gia câu hỏi này, có một thư viện có tên [EdgeJS] (http://tjanczuk.github.io/edge/#/) là giải pháp thay thế cho các giải pháp được đề xuất. Điều tốt nhất là nó đi cả hai cách - bạn có thể có .NET hoặc Node như là quá trình kiểm soát. –

Trả lời

3

Tôi không phải là một chuyên gia ASP.NET, nhưng tôi nghĩ có nhiều cách bạn có thể đạt được điều này:

1) Như bạn nói, bạn có thể làm Node lắng nghe trên một cổng cụ thể cho dữ liệu và sau đó phản ứng dựa trên dữ liệu nhận được (TCP)
2) Bạn có thể gửi yêu cầu POST tới Node.js (HTTP) và cũng có thể gửi một khóa xác thực trong quá trình để bảo mật hơn. Giống như trên 1) Node sẽ phản ứng với dữ liệu bạn gửi.
3) Sử dụng một cái gì đó như Redis cho pub-sub, gửi thư từ ASP.NET (pub) và nhận chúng trên phần Node.js (phụ). Đây thậm chí còn tốt hơn nếu bạn muốn mở rộng ứng dụng của bạn trên nhiều máy tính, vv

2

duy nhất lựa chọn tốt tôi biết cho đến nay là để tạo ra một nghe đặc biệt trên một cổng cụ thể trên máy chủ Node.js và kết nối với điều đó, nhưng tôi đã tự hỏi liệu có phương pháp thanh lịch hay hiệu quả hơn không?

Bạn có thể thử xem redis pub/sub mô hình nơi ứng dụng ASP.NET MVC và node.js sẽ liên lạc qua các kênh riêng biệt để đạt được liên lạc song công. Hoặc bạn cũng có thể thử sử dụng CouchDB change nofitications.

Tôi cũng biết rằng bạn có thể sử dụng cơ sở dữ liệu inbetween nhưng chắc chắn điều này sẽ cần phải được thăm dò ý kiến ​​và sẽ kém hiệu quả hơn?

Kỹ thuật cũ không yêu cầu bạn thăm dò ý kiến ​​thay đổi, nhưng thay vào đó họ sẽ thông báo cho bạn khi có thay đổi hoặc thông báo kênh.

Các vấn đề liên quan