Nodejs vs SignalR: ทำไมเราต้องใช้จาวาสคริปต์ฝั่งเซิร์ฟเวอร์


92

ตั้งแต่ฉันรู้จัก Node.js ฉันก็เป็นแฟนของมันมาตลอด แต่วันนี้ฉันพบเกี่ยวกับSignalRซึ่งเป็นทางเลือกแบบอะซิงโครนัส - ปรับขนาดได้ - เรียลไทม์สำหรับ ASP.NET

เท่าที่ฉันรู้ข้อได้เปรียบหลักของ Node.js เหนือ SignalR คือการแชร์โค้ดระหว่างไคลเอนต์ - เซิร์ฟเวอร์ (ข้อดีอีกอย่างคือมันข้ามแพลตฟอร์ม) และข้อได้เปรียบหลักของ SignalR คือเฟรมเวิร์กที่เป็นผู้ใหญ่มากกว่าและดีกว่า การสนับสนุนเครื่องมือ (IDE) ฉันจึงสงสัยว่าถ้า SignalR อยู่ที่นี่เราต้องการ Node.js บน Windows อีกต่อไปหรือไม่? มีข้อดีของ Node.js ที่ฉันไม่รู้หรือไม่?


28
ดูเหมือนจะมีความสับสนที่นี่ Node.js เป็นแพลตฟอร์มการพัฒนาในขณะที่ SignalR เป็นไลบรารีสำหรับ ASP.NET การเปรียบเทียบที่ดีกว่าคือ node.js + socket.io กับ ASP.NET + SignalR โปรดอัปเดตคำถามนี้เพื่อชี้แจงได้หรือไม่
leggetter

6
จริงและเท็จ SignalR เป็นไลบรารีสำหรับ. NET
davidfowl

คำตอบ:


109

SignalR เป็นทางเลือกที่ใช้งานได้สำหรับ Socket.IO และ Node.js อย่างไรก็ตามมีเหตุผลอื่น ๆ ในการใช้จาวาสคริปต์บนเซิร์ฟเวอร์

  1. มันแบนกอง เกือบทุกเว็บไซต์ในปัจจุบันจะต้องมีจาวาสคริปต์บนเบราว์เซอร์และหากคุณใช้บนเซิร์ฟเวอร์ด้วยคุณสามารถตัดหนึ่งภาษาออกจากชุดที่คุณต้องมีความเชี่ยวชาญ

  2. การส่งผ่านข้อความเป็นเรื่องธรรมชาติมาก JSON ทุกที่! โดยเฉพาะอย่างยิ่งเมื่อรวมกับฐานข้อมูลเอกสารที่ใช้ JSON การส่งผ่านข้อความทั้งหมดจะกลายเป็นวัตถุ JSON ซึ่งจะช่วยลดปริมาณการนายหน้าข้อความที่จะต้องเกิดขึ้นทั่วทั้งระบบ

  3. ไม่ใช่ Microsoft โดยส่วนตัวแล้วฉันชอบสิ่งที่ Microsoft ทำเพื่อชุมชนการพัฒนา พวกเขาสร้างเครื่องมือที่ยอดเยี่ยมและเป็นหนึ่งในเฟรมเวิร์กและภาษาที่ดีที่สุด ดังที่กล่าวมาบางคนก็ชอบที่จะเกลียด Microsoft

  4. ค่าใช้จ่าย มีหลายวิธีที่ดีในการรับเครื่องมือของ Microsoft ฟรีหรือราคาถูกมาก (รุ่น Express และ Biz Spark) ยังคงมีค่าใช้จ่ายที่สูงกว่าในการทำงานกับเครื่องมือของ Microsoft ฉันเชื่อว่าต้นทุนนี้คุ้มค่ากับผลผลิตที่ได้รับในกรณีส่วนใหญ่ แต่ไม่ใช่ทุกคนที่เห็นด้วย

นอกเหนือจากข้างต้นแล้วยังมีเรื่องราวเกิดขึ้นอีกที่คุณไม่สามารถปรับขนาดคำขอการสำรวจความคิดเห็นแบบยาวบน IIS ได้เนื่องจากโมเดลเธรด สิ่งนี้มีความจริงอยู่บ้าง แต่ด้วยการออกแบบโค้ดที่ดีและการปรับแต่งเซิร์ฟเวอร์บางอย่างคุณสามารถแก้ไขปัญหาเหล่านี้ได้


6
ฉันอ่านรายการบล็อกของ Hanselman hanselman.com/blog/…ว่าแอปพลิเคชันแชทASP.NET/SignalRสามารถให้บริการลูกค้าได้หลายหมื่นหรือหลายแสนรายซึ่งน่าทึ่งมาก ฉันไม่ได้เจาะลึกลงไปเพื่อดูว่าพวกเขาทำเช่นนั้นได้อย่างไร แต่มันใกล้เคียงกับวิธีที่โหนด "ปรับขนาดได้" สามารถทำได้ ...
Quan Mai

7
หากคุณใช้ ASP.NET MVC คุณจำเป็นต้องรู้ JavaScript, HTML, CSS, C # และ Visual Studio ด้วย JavaScript ที่ฝั่งเซิร์ฟเวอร์คุณสามารถลดเป็น JavaScript, HTML, CSS
Daniel Lidström

4
โดยทั่วไปแล้ว asp.net และ. net ไม่ใช่ MS อย่างเดียว ลองใช้ sharpdevelop และ monodevelop สำหรับ IDEs และ mono สำหรับรันไทม์. net อื่น สิ่งนี้จะนำคะแนน 3 และ 4 ออกมา นอกจากนี้ฉันไม่เชื่อในกระบวนทัศน์ภาษาเดียว การเรียนรู้หลายภาษาไม่ใช่เรื่องยากเว้นแต่คุณจะเพิ่งเริ่มต้น สำหรับ 2 การสร้างวัตถุ. net จาก JSON นั้นไม่ยากเลย นอกจากนี้ลองใช้ SignalR สำหรับการสำรวจระยะยาวและการเปลี่ยนการสื่อสารแบบเรียลไทม์
bbqchickenrobot

7
@ruffrey คุณกำลังพูด? asp.net/open-sourceคุณยังสามารถโฮสต์ SignalR ด้วยตนเองโดยใช้ OWIN
Timothy Strimple

4
@cbmeeks เครื่องมือต่างๆสำหรับงานต่างๆ ฉันรับประกันว่า Walmart มีการตั้งค่าฐานข้อมูลที่ค่อนข้างจริงจัง (และมีราคาแพง) อยู่เบื้องหลัง แต่นั่นก็ไม่ได้ป้องกันไม่ให้พวกเขาเพิ่มประสิทธิภาพเว็บไซต์บนอุปกรณ์เคลื่อนที่ด้วย Node.js คุณอาจพบว่านั่นเป็นความจริงสำหรับองค์กรขนาดใหญ่ทั้งหมดที่ปรับใช้ Node.js ได้สำเร็จ ฉันสงสัยว่าหลายคนมีอะไรเก็บไว้ใน Mongo
Timothy Strimple
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.