2012-03-05 19 views
14

Đối với dự án thông báo, muốn đẩy thông báo sự kiện ra ngoài. Đây là những thứ như đăng nhập, thay đổi hồ sơ, v.v ... và được hiển thị cho khách hàng thích hợp. Tôi muốn thảo luận một số ý tưởng về việc đưa nó lại với nhau, và nhận được một số lời khuyên về cách tiếp cận tốt nhất.Làm thế nào để triển khai Socket.IO với ASP.Net, IISNode, Node.JS và SQL Server cho các thông báo đẩy dựa trên sự kiện?

Tôi nhận thấy here rằng những thay đổi được thực hiện cho CouchDB có thể được phát hiện bằng luồng _changes, được chọn bởi Node và quá trình khởi động. Tôi muốn thực hiện một cái gì đó như thế này (Tôi đang sử dụng SQL Server, nhưng một điểm vào ở cấp độ này có thể không phải là giải pháp tốt nhất). Thay vì làm theo ví dụ CouchDB (phát hiện sự kiện dựa trên cơ sở dữ liệu, tôi nghĩ điều này chỉ làm phức tạp mọi thứ, vì chúng tôi quan tâm đến các sự kiện của khách hàng), tôi đã nghĩ rằng khi một sự kiện xảy ra, chẳng hạn như đăng nhập người dùng, sau đó một tin nhắn được gửi đến máy chủ Node với một số chi tiết sự kiện (yêu cầu RESTful?). Thông báo này sau đó được xử lý và phát sóng cho tất cả các khách hàng được kết nối; khách hàng thích hợp hiển thị thông báo.

hệ sinh thái đề xuất:

  • Net 4,0
  • IIS
  • IISNode
  • Socket.IO
  • Node.js
  • SQL Server 2008

chí này được xây dựng trên đầu của một dự án hiện có bằng cách sử dụng khung .Net (IIS, v.v.). Nhiều trình duyệt của khách hàng không hỗ trợ ổ cắm web, vì vậy việc sử dụng Socket.IO là một lựa chọn tốt (hỗ trợ dự phòng). Tuy nhiên, từ những gì I can see, Socket.IO chỉ chỉ hỗ trợ bỏ phiếu dài thông qua IISNode (đây không thực sự là vấn đề).

Tùy chọn sẽ hiển thị điểm cuối Socket.IO/Node cho tất cả ứng dụng khách, để thông báo dựa trên ứng dụng khách có thể được gửi thông qua JS tới máy chủ Node, phát sóng thông báo. (theo các ví dụ về máy chủ-máy chủ/máy khách/máy chủ cơ bản).

Cách khác, điểm cuối IIS có thể được sử dụng, nhưng chỉ có thể hỗ trợ bỏ phiếu dài (thông qua Socket.IO). Điều này sẽ cung cấp một số bổ sung. Net back-end xử lý, nhưng có thể là quá phức tạp kiến ​​trúc.

Có thông báo sự kiện dựa trên SQL Server có sẵn cho Nút không?

Cách tiếp cận tốt nhất là gì?

Nếu tôi không nhận được cấu hình hệ sinh thái thuật ngữ đúng, vui lòng làm rõ.

Cảm ơn.

Trả lời

13

Tôi khuyên bạn nên kiểm tra SignalR trước khi xem xét thêm iisnode/node.js vào kết hợp các công nghệ của ứng dụng ASP.NET đã tồn tại trước của bạn.

Về ổ cắm web, bất kể bạn sử dụng ASP.NET hay node.js (socket.io), bạn chỉ có thể sử dụng tính năng bỏ phiếu dài HTTP cho các thông báo trễ thấp, vì websockets không được hỗ trợ bởi HTTP.SYS/IIS cho đến Windows 8 iisnode hiện không hỗ trợ websockets (ngay cả trên Windows 8), nhưng hỗ trợ như vậy có thể được thêm vào sau.

Tôi đã thực hiện một số nghiên cứu gần đây về truy cập MSSQL từ node.js. Có một vài dự án PMNM ngoài kia, một số dự án sử dụng các tiện ích mở rộng nền tảng riêng, một số nỗ lực thực hiện giao thức TDS hoàn toàn bằng JavaScript. Tôi không biết bất kỳ điều gì sẽ cho phép bạn truy cập chức năng Thông báo SQL. Tuy nhiên, bản thân nhóm MSSQL đang đầu tư vào một trình điều khiển MSSQL lớp đầu tiên cho node.js, vì vậy đây là một cái gì đó để giữ một mắt trên đi về phía trước (https://github.com/tjanczuk/iisnode/issues/139).

Nếu bạn dự định sử dụng thông báo SQL để hỗ trợ thông báo độ trễ thấp, tôi khuyên bạn nên bắt đầu với điểm chuẩn hiệu suất mô phỏng mức lưu lượng truy cập mong muốn ở cấp máy chủ SQL. Thông báo SQL được sử dụng chủ yếu như một cơ chế giúp duy trì bộ nhớ cache phù hợp với nội dung của cơ sở dữ liệu, vì vậy nó có thể hoặc không đáp ứng được các yêu cầu của kịch bản thông báo của bạn. Ở mức tối thiểu, các phép đo này sẽ giúp bạn bắt đầu với thiết kế tốt hơn.

+0

Cảm ơn Tomasz. Bạn thực hiện một điểm rất tốt về việc thực hiện SignalR. Tuy nhiên, vấn đề là dự án được phân mảnh giữa mã ASP kế thừa và mã .Net, vì vậy tôi nghĩ rằng hiện tại, giao tiếp dựa trên Javascript (không phải C#) có lẽ sẽ là lựa chọn tốt nhất. Nếu tôi nhận được khái niệm SignalR chính xác, trong tương lai khi dự án được di chuyển hoàn toàn sang .Net, sau đó chuyển sang SiglanR. Có một số walk-throughs tốt của Node.JS, IISNode, và Socket.IO? Cũng xem xét một vài tùy chọn SQL Server, nhưng quá mức cần thiết cho ứng dụng này. – ElHaix

+0

Hiệu chỉnh: Thực hiện phương pháp SignalR trong .Net 4.0 như một dịch vụ WCF có thể được sử dụng bởi mã ASP cổ điển. Giải quyết. – ElHaix

+1

Tomasz - bạn có thể làm cho giới hạn này rõ ràng hơn trong các tài liệu iisnode không? Tôi đã cài đặt iisnode và nodejs trên hộp Windows của mình với mục tiêu chính là sử dụng hỗ trợ websocket - vì vậy tôi có vẻ như các lựa chọn của tôi đang sử dụng nginx hoặc apache trên Windows hoặc chuyển sang Linux. – jnoss

1

Tôi rất muốn giới thiệu sử dụng Pusher. Đó là những gì chúng tôi sử dụng và nó làm cho nó dễ dàng để thực hiện vì nó là một giải pháp lưu trữ. Vì vậy, cắm nó và làm cho nó hoạt động thực sự dễ dàng. Nó không chi phí nhiều trừ khi bạn sẽ đẩy một số lượng tin nhắn điên rồ thông qua nó trên một quy mô lớn.

+0

Xin chào Matt - bạn có liên kết cho 'Pusher' không ?? – pithhelmet

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