Nodejs vs SignalR: Mengapa kita membutuhkan javascript sisi server?

92

Sejak saya mengetahui tentang Node.js, saya selalu menjadi penggemarnya. Tetapi hari ini saya menemukan tentang SignalR , yang menyediakan model alternatif asynchronous - scalable - realtime untuk ASP.NET.

Sejauh yang saya tahu, keuntungan utama Node.js dibandingkan SignalR adalah berbagi kode antara klien-server (keuntungan lain seharusnya adalah lintas platform), dan keuntungan utama dari SignalR adalah kerangka kerja yang jauh lebih matang dan jauh lebih baik dukungan alat (IDE). Jadi saya bertanya-tanya: jika SignalR ada di sini, apakah kita membutuhkan Node.js di Windows lagi? Apakah ada keuntungan dari Node.js yang tidak saya ketahui?

Quan Mai
sumber
28
Sepertinya ada kebingungan di sini. Node.js adalah platform pengembangan sementara SignalR adalah perpustakaan untuk ASP.NET. Perbandingan yang lebih baik adalah node.js + socket.io vs ASP.NET + SignalR. Bisakah pertanyaan ini diperbarui untuk memperjelas?
pembuat legging
6
Benar dan salah, SignalR adalah pustaka untuk .NET.
davidfowl

Jawaban:

109

SignalR adalah alternatif yang layak untuk Socket.IO dan Node.js. Ada alasan lain untuk menggunakan javascript di server.

  1. Ini meratakan tumpukan. Hampir semua situs web saat ini harus memiliki javascript di browser, dan jika Anda menggunakannya di server juga, Anda dapat memotong satu bahasa dari kumpulan yang harus Anda kuasai.

  2. Penyampaian pesan sangat alami. JSON Di Mana Saja! Apalagi digabungkan dengan database dokumen yang menggunakan JSON, semua message passing hanya menjadi objek JSON. Hal ini mengurangi jumlah perantara pesan yang harus terjadi di seluruh sistem.

  3. Ini bukan Microsoft. Saya pribadi menyukai apa yang telah dilakukan Microsoft untuk komunitas pengembangan. Mereka membuat alat yang fantastis dan salah satu kerangka kerja dan bahasa terbaik. Meski begitu, beberapa orang suka membenci Microsoft.

  4. Biaya. Ada banyak cara bagus untuk mendapatkan alat Microsoft secara gratis atau sangat murah (edisi Ekspres dan Biz Spark). Masih ada biaya yang lebih tinggi terkait dengan bekerja dengan alat Microsoft. Saya yakin biaya ini sepadan dengan perolehan produktivitas dalam banyak kasus, tetapi tidak semua orang setuju.

Selain hal di atas, masih ada cerita yang beredar bahwa Anda tidak dapat meningkatkan permintaan polling lama di IIS karena model threading. Ini ada benarnya, tetapi dengan desain kode yang baik , dan beberapa tweak server, sebagian besar Anda dapat mengatasi masalah ini.

Timothy Strimple
sumber
6
Saya membaca entri blog Hanselman hanselman.com/blog/… bahwa aplikasi chat ASP.NET/SignalR dapat melayani puluhan atau ratusan ribu klien, yang sungguh luar biasa. Saya tidak menggali lebih dalam untuk melihat bagaimana mereka melakukan itu, tetapi ini dekat dengan bagaimana Nodejs yang "terukur" dapat melakukan ...
Quan Mai
7
Jika Anda menggunakan sesuatu seperti ASP.NET MVC, Anda perlu mengetahui JavaScript, HTML, CSS, C #, dan Visual Studio. Dengan JavaScript di sisi server Anda dapat menguranginya menjadi JavaScript, HTML, CSS.
Daniel Lidström
4
asp.net dan .net secara umum sebenarnya bukanlah satu-satunya MS. Lihat sharpdevelop dan monodevelop untuk IDE dan mono untuk runtime .net alternatif. Ini menghilangkan poin 3 & 4. Juga, saya tidak percaya pada paradigma satu bahasa. Tidak sulit untuk mempelajari banyak bahasa kecuali Anda baru memulai. Sedangkan untuk 2, membuat objek .net dari JSON sebenarnya tidak terlalu sulit. Juga, keluar dari SignalR untuk pemungutan suara yang lama & penggantian komunikasi waktu nyata
bbqchickenrobot
7
@ruffrey Anda mengatakan? asp.net/open-source Anda juga dapat menghosting sendiri SignalR menggunakan OWIN.
Timothy Strimple
4
@cbmeeks Alat yang berbeda untuk pekerjaan yang berbeda. Saya jamin bahwa Walmart memiliki penyiapan database yang cukup serius (dan mahal) di belakang layar, tetapi itu tidak mencegah mereka untuk mengoptimalkan situs seluler mereka dengan Node.js. Anda mungkin akan menemukan bahwa hal itu benar untuk semua perusahaan besar yang berhasil menerapkan Node.js. Saya ragu banyak dari mereka memiliki sesuatu yang disimpan di Mongo.
Timothy Strimple