Nodejs vs SignalR: dlaczego potrzebujemy javascript po stronie serwera?

92

Odkąd poznałem Node.js, zawsze byłem jego fanem. Ale dzisiaj dowiedziałem się o SignalR , który zapewnia alternatywny asynchroniczny - skalowalny - model czasu rzeczywistego dla ASP.NET.

O ile wiem, główną zaletą Node.js nad SignalR jest współdzielenie kodu między klientem a serwerem (kolejną zaletą powinno być to, że jest wieloplatformowy), a główną zaletą SignalR jest znacznie bardziej dojrzała struktura i znacznie lepsza obsługa narzędzi (IDE). Zastanawiam się więc: jeśli SignalR jest tutaj, czy potrzebujemy już Node.js w systemie Windows? Czy są jakieś zalety Node.js, których nie znam?

Quan Mai
źródło
28
Wydaje się, że jest tu pewne zamieszanie. Node.js to platforma programistyczna, podczas gdy SignalR to biblioteka dla ASP.NET. Lepszym porównaniem byłoby node.js + socket.io vs ASP.NET + SignalR. Czy można zaktualizować to pytanie w celu wyjaśnienia?
leggetter
6
Prawda i fałsz, SignalR to biblioteka dla .NET.
davidfowl

Odpowiedzi:

109

SignalR jest realną alternatywą dla Socket.IO i Node.js. Istnieją jednak inne powody, dla których warto używać javascript na serwerze.

  1. Spłaszcza stos. W dzisiejszych czasach prawie każda witryna internetowa musi mieć JavaScript w przeglądarce, a jeśli używasz go również na serwerze, możesz wyciąć jeden język z partii, w której będziesz musiał biegle posługiwać się językiem.

  2. Przekazywanie wiadomości jest bardzo naturalne. JSON wszędzie! Szczególnie w połączeniu z bazą danych dokumentów, która korzysta z formatu JSON, wszystkie przekazywane wiadomości stają się obiektami JSON. To sprawia, że ​​zmniejsza się ilość pośrednictwa wiadomości, które musi mieć miejsce w całym systemie.

  3. To nie jest Microsoft. Osobiście uwielbiam to, co Microsoft zrobił dla społeczności programistów. Tworzą fantastyczne narzędzia i jeden z najlepszych frameworków i języków. Biorąc to pod uwagę, niektórzy ludzie po prostu uwielbiają nienawidzić Microsoft.

  4. Koszt. Istnieje wiele dobrych sposobów na bezpłatne lub bardzo tanie uzyskanie narzędzi firmy Microsoft (wersje Express i Biz Spark). Nadal istnieje wyższy koszt związany z pracą z narzędziami firmy Microsoft. Uważam, że w większości przypadków ten koszt jest wart wzrostu wydajności, ale nie wszyscy się z tym zgadzają.

Oprócz powyższego, nadal istnieje wątek, że nie można skalować długich żądań sondowania w usługach IIS ze względu na model wątkowości. Jest w tym trochę prawdy, ale przy dobrym projektowaniu kodu i pewnych poprawkach serwera można w większości obejść te problemy.

Timothy Strimple
źródło
6
Przeczytałem wpis na blogu Hanselman hanselman.com/blog/, że aplikacja czatu ASP.NET/SignalR może obsługiwać dziesiątki lub setki tysięcy klientów, co jest naprawdę niesamowite. Nie szukałem głębiej, aby zobaczyć, jak to robią, ale jest blisko, jak „skalowalne” Nodejs potrafią ...
Quan Mai,
7
Jeśli używasz czegoś takiego jak ASP.NET MVC, musisz znać JavaScript, HTML, CSS, C # i Visual Studio. Dzięki JavaScript po stronie serwera możesz zredukować go do JavaScript, HTML, CSS.
Daniel Lidström
4
asp.net i .net w ogóle nie są jedyną rzeczą dotyczącą MS. Sprawdź programy sharpdevelop i monodevelop dla IDE oraz mono dla alternatywnego środowiska uruchomieniowego .net. To usuwa punkty 3 i 4. Nie wierzę też w jeden paradygmat językowy. Nie jest trudno nauczyć się wielu języków, chyba że dopiero zaczynasz. Jeśli chodzi o 2, tworzenie obiektu .net z JSON nie jest naprawdę trudne. Sprawdź również SignalR, aby uzyskać długie odpytywanie i wymianę komunikacji w czasie rzeczywistym
bbqchickenrobot
7
@ruffrey Mówiłeś? asp.net/open-source Możesz również samodzielnie hostować SignalR przy użyciu OWIN.
Timothy Strimple,
4
@cbmeeks Różne narzędzia do różnych zadań. Gwarantuję, że Walmart ma dość poważną (i kosztowną) konfigurację bazy danych za kulisami, ale to nie przeszkodziło im w optymalizacji mobilnej strony internetowej za pomocą Node.js. Prawdopodobnie przekonasz się, że dotyczy to wszystkich dużych przedsiębiorstw, które pomyślnie wdrażają Node.js. Wątpię, by wiele z nich miało cokolwiek przechowywanego w Mongo.
Timothy Strimple,