Nodejs vs SignalR: Tại sao chúng ta cần javascript phía máy chủ?


90

Kể từ khi tôi biết về Node.js, tôi luôn là một fan hâm mộ của nó. Nhưng hôm nay tôi đã tìm thấy về SignalR , cung cấp mô hình thời gian thực không đồng bộ - có thể mở rộng - thay thế cho ASP.NET.

Theo những gì tôi biết, lợi thế chính của Node.js so với SignalR là chia sẻ mã giữa máy khách-máy chủ (một lợi thế khác phải là nó là đa nền tảng), và lợi thế chính của SignalR là một khung hoàn thiện hơn nhiều và tốt hơn nhiều. hỗ trợ công cụ (IDE). Vì vậy, tôi tự hỏi: nếu SignalR ở đây, chúng ta có cần Node.js trên Windows nữa không? Có ưu điểm nào của Node.js mà tôi không biết không?


27
Có vẻ như có một số nhầm lẫn ở đâ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 so với ASP.NET + SignalR. Câu hỏi này có thể vui lòng được cập nhật để làm rõ?
leggetter

6
Đúng và sai, SignalR là một thư viện cho .NET.
davidfowl 17/02/12

Câu trả lời:


107

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

  1. Nó làm phẳng ngăn xếp. Hầu hết mọi trang web ngày nay đều phải có javascript trên trình duyệt và nếu bạn cũng 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. Tin nhắn đi qua là rất tự nhiên. JSON mọi nơi! Đặc biệt là kết hợp với cơ sở dữ liệu tài liệu sử dụng JSON, tất cả các thông báo truyền qua chỉ trở thành các đối tượng JSON. Điều này làm giảm lượng tin nhắn môi giới phải xảy ra trên toàn hệ thống.

  3. Đó không phải là Microsoft. Cá nhân tôi yêu 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. Nói như vậy, một số người chỉ thích ghét Microsoft.

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

Ngoài những điều trên, vẫn còn một câu chuyện xảy ra xung quanh rằng bạn không thể mở rộng các yêu cầu thăm dò dài trên IIS do mô hình phân luồng. Điều này có một số sự thật, nhưng với thiết kế mã tốt và một số chỉnh sửa máy chủ, bạn hầu như có thể khắc phục được những vấn đề này.


6
Tôi đọc mục blog của Hanselman hanselman.com/blog/… 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 đào sâu hơn để xem cách họ làm điều đó, nhưng nó gần với cách "mở rộng" Nodejs có thể làm ...
Quân Mai

7
Nếu đang sử dụng 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 nó thành JavaScript, HTML, CSS.
Daniel Lidström

4
asp.net và .net nói chung thực ra không phải là MS duy nhất. Kiểm tra sharpdevelop và monodevelop cho IDE và mono để có thời gian chạy .net thay thế. Điều này sẽ lấy ra điểm 3 & 4. Ngoài ra, tôi không tin vào mô hình một ngôn ngữ. Không khó để học nhiều ngôn ngữ trừ khi bạn mới bắt đầu. Đối với 2, tạo một đối tượng .net từ JSON thực sự không khó lắm. Ngoài ra, kiểm tra ra SignalR cho một phiếu dài & thời gian thực thay thế truyền thông
bbqchickenrobot

7
@ruffrey Bạn đang nói? asp.net/open-source Bạn cũng có thể tự lưu trữ SignalR bằng OWIN.
Timothy Strimple

4
@cbmeeks Các công cụ khác nhau cho các công việc khác nhau. Tôi đảm bảo với bạn rằng Walmart có một thiết lập cơ sở dữ liệu khá nghiêm túc (và đắt tiền) đằng sau hậu trường, nhưng điều đó đã không ngăn họ tối ưu hóa trang web di động của họ với Node.js. Có thể bạn sẽ thấy điều đó đúng với tất cả các doanh nghiệp lớn triển khai thành công Node.js. Tôi nghi ngờ nhiều người trong số họ có bất cứ thứ gì được lưu trữ trong Mongo.
Timothy Strimple
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.