Nodejs vs SignalR: Neden sunucu tarafında JavaScript'e ihtiyacımız var?


92

Node.js'yi bildiğimden beri, her zaman hayranıyım. Ancak bugün , ASP.NET için alternatif bir asenkron - ölçeklenebilir - gerçek zamanlı model sağlayan SignalR'yi buldum .

Bildiğim kadarıyla, Node.js'nin SignalR'ye göre ana avantajı, kodu istemci-sunucu arasında paylaşmaktır (başka bir avantajı, çapraz platform olması olmalıdır) ve SignalR'nin ana avantajı çok daha olgun bir çerçeve ve çok daha iyi araç (IDE) desteği. Bu yüzden merak ediyorum: SignalR buradaysa, artık Windows'ta Node.js'ye ihtiyacımız var mı? Node.js'nin bilmediğim avantajları var mı?


28
Burada bazı karışıklıklar var gibi görünüyor. Node.js bir geliştirme platformudur, SignalR ise ASP.NET için bir kitaplıktır. Daha iyi bir karşılaştırma, node.js + socket.io ile ASP.NET + SignalR olabilir. Bu soru açıklığa kavuşturmak için lütfen güncellenebilir mi?
leggetter

6
Doğru ve yanlış, SignalR .NET için bir kitaplıktır.
davidfowl

Yanıtlar:


109

SignalR, Socket.IO ve Node.js'ye uygun bir alternatiftir. Ancak sunucuda javascript kullanmak için başka nedenler de vardır.

  1. Yığını düzleştirir. Bugünlerde hemen hemen her web sitesinde tarayıcıda javascript bulunmalıdır ve bunu sunucuda da kullanırsanız, yetkin olmanız gereken toplu işten bir dili kesebilirsiniz.

  2. Mesaj geçişi çok doğaldır. JSON Her Yerde! Özellikle JSON kullanan bir belge veritabanı ile birleştirildiğinde, tüm mesaj geçişleri JSON nesneleri haline gelir. Bu, sistem genelinde gerçekleşmesi gereken mesaj aracılık miktarını azaltır.

  3. Microsoft değil. Kişisel olarak Microsoft'un geliştirme topluluğu için yaptıklarını seviyorum. Harika araçlar ve etrafındaki en iyi çerçevelerden ve dillerden birini yaparlar. Bununla birlikte, bazı insanlar Microsoft'tan nefret etmeyi sever.

  4. Maliyet. Microsoft araçlarını ücretsiz veya çok ucuza edinmenin birçok iyi yolu vardır (Express sürümleri ve Biz Spark). Microsoft araçlarıyla çalışmanın hala daha yüksek bir maliyeti vardır. Bu maliyetin çoğu durumda üretkenlik kazanımlarına değeceğine inanıyorum, ancak herkes aynı fikirde değil.

Yukarıdakilere ek olarak, iş parçacığı modeli nedeniyle IIS üzerinde uzun yoklama isteklerini ölçekleyemeyeceğinize dair hala bir hikaye var. Bunun biraz doğruluğu var, ancak iyi kod tasarımı ve bazı sunucu ayarlamaları ile çoğunlukla bu sorunların üstesinden gelebilirsiniz.


6
Hanselman'ın blog girişini hanselman.com/blog/… okudum , bir ASP.NET/SignalR sohbet uygulamasının on binlerce veya yüz binlerce istemciye hizmet verebileceğini, bu gerçekten şaşırtıcı. Bunu nasıl yaptıklarını görmek için daha derine inmedim, ancak Nodej'lerin ne kadar "ölçeklenebilir" yapabildiklerine çok yakın ...
Quan Mai

7
ASP.NET MVC gibi bir şey kullanıyorsanız JavaScript, HTML, CSS, C # ve Visual Studio bilmeniz gerekir. Sunucu tarafındaki JavaScript ile JavaScript, HTML, CSS'ye indirgeyebilirsiniz.
Daniel Lidström

4
asp.net ve .net genel olarak aslında yalnızca bir MS değildir. IDE'ler için sharpdevelop ve monodevelop'a ve alternatif bir .net çalışma zamanı için mono'ya göz atın. Bu, 3. ve 4. noktaları çıkarır. Ayrıca, tek dil paradigmasına inanmıyorum. Yeni başlamadığınız sürece birden fazla dil öğrenmek zor değil. 2'ye gelince, JSON'dan bir .net nesnesi oluşturmak o kadar da zor değil. Ayrıca, uzun bir yoklama ve gerçek zamanlı iletişim değişimi için SignalR'ye göz atın
bbqchickenrobot

7
@ruffrey mi diyordunuz? asp.net/open-source OWIN kullanarak SignalR'yi kendiniz de barındırabilirsiniz.
Timothy Strimple

4
@cbmeeks Farklı işler için farklı araçlar. Walmart'ın perde arkasında oldukça ciddi (ve pahalı) bir veritabanı kurulumuna sahip olduğunu garanti ederim, ancak bu onların mobil web sitelerini Node.js ile optimize etmelerini engellemedi. Node.js'yi başarıyla dağıtan tüm büyük kuruluşlar için bunun doğru olduğunu muhtemelen göreceksiniz. Birçoğunun Mongo'da sakladığını sanmıyorum.
Timothy Strimple
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.