2012-01-30 28 views
84

Vì tôi đã biết về Node.js, tôi luôn là fan của nó. Nhưng hôm nay tôi tìm thấy khoảng SignalR, cung cấp một mô hình thời gian thực không đồng bộ - có thể mở rộng - thay thế cho ASP.NET. Theo như tôi biết, lợi thế chính của Node.js trên SignalR là chia sẻ mã giữa client-server (một ưu điểm khác là nó là đa nền tảng), và ưu điểm chính của SignalR là trưởng thành hơn nhiều và hỗ trợ công cụ tốt hơn (IDE). Vì vậy, tôi tự hỏi: nếu SignalR là ở đây, chúng ta cần Node.js trên Windows nữa? Có lợi thế nào của Node.js mà tôi không biết?Nodejs vs SignalR: tại sao chúng ta cần javascript phía máy chủ?

+23

Dường như có sự nhầm lẫn nào đó ở đây. Node.js là một nền tảng phát triển trong khi SignalR là một thư viện cho ASP.NET. Một so sánh tốt hơn sẽ là node.js + socket.io vs ASP.NET + SignalR. Câu hỏi này có thể được cập nhật để làm rõ không? – leggetter

+6

Đúng và sai, SignalR là thư viện dành cho .NET. – davidfowl

Trả lời

99

SignalR là một giải pháp thay thế khả thi cho Socket.IO và Node.js. Có những lý do khác để sử dụng javascript trên máy chủ tuy nhiên.

  1. Nó làm phẳng ngăn xếp. Hầu như bất kỳ trang web nào trong những ngày này đều phải có javascript trên trình duyệt và nếu bạn sử dụng nó trên máy chủ, bạn có thể cắt một ngôn ngữ ra khỏi lô mà bạn sẽ phải thành thạo.

  2. rất tự nhiên. JSON mọi nơi! Đặc biệt là kết hợp với một cơ sở dữ liệu tài liệu sử dụng JSON, tất cả các thông điệp đi qua chỉ trở thành các đối tượng JSON. Điều này làm giảm số lượng thông điệp môi giới đã xảy ra trong toàn bộ hệ thống.

  3. Đó không phải là Microsoft. Cá nhân tôi yêu thích những gì Microsoft đã làm cho cộng đồng phát triển. Họ tạo ra những công cụ tuyệt vời và một trong những khuôn khổ và ngôn ngữ tốt nhất xung quanh. Điều đó đang được nói, một số người chỉ thích ghét Microsoft.

  4. Chi phí. Có rất nhiều cách hay để tải các công cụ của Microsoft miễn phí hoặc rất rẻ (phiên bản Express và Biz Spark). Vẫn còn chi phí cao hơn khi làm việc với các công cụ của Microsoft. Tôi tin rằng chi phí này có giá trị tăng năng suất trong hầu hết các trường hợp, nhưng không phải ai cũng đồng ý.

Ngoài phần trên, vẫn còn câu chuyện xung quanh bạn không thể mở rộng yêu cầu bỏ phiếu dài trên IIS do mô hình luồng. Điều này có một số sự thật với nó, nhưng với good code design, và một số tinh chỉnh máy chủ, bạn chủ yếu có thể nhận được xung quanh những vấn đề này.

+6

Tôi đọc bài blog của Hanselman http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx rằng một ứng dụng trò chuyện ASP.NET/SignalR có thể phục vụ hàng chục hoặc hàng trăm nghìn khách hàng, điều này thực sự tuyệt vời. Tôi đã không tìm hiểu sâu hơn về cách họ làm điều đó, nhưng nó gần gũi với cách mà "Nodej có thể mở rộng" có thể làm ... – Vimvq1987

+2

Ý bạn là "_flattens the stack_" là gì? –

+7

Nếu bạn đang sử dụng một cái gì đó như ASP.NET MVC bạn cần biết JavaScript, HTML, CSS, C# và Visual Studio. Với JavaScript ở phía máy chủ, bạn có thể giảm JavaScript, HTML, CSS. –

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