Use-cases สำหรับ node.js และ c #


10

ฉันทำงาน ASP.NET ค่อนข้างน้อย (C #, MVC) แต่ส่วนใหญ่เป็นการพัฒนาเว็บทั่วไป ฉันใช้สถาปัตยกรรมพักผ่อนโดยใช้ที่เก็บ CRUD ลูกค้าของฉันส่วนใหญ่ไม่มีข้อกำหนดขั้นสูงมากมายในแอปพลิเคชันของพวกเขา

ตอนนี้ฉันกำลังดู node.js และมันเป็นนัยเกี่ยวกับประสิทธิภาพ (ฉันติดความเร็ว) แต่ฉันไม่ได้เจาะลึกลงไปเลย

ฉันสงสัยว่า

  • node.js สามารถแทนที่การพัฒนาเว็บตามปกติของฉันใน C # และ ASP.NET MVC ได้ (ไม่ได้เขียนแอพที่มีอยู่ใหม่ แต่เมื่อทำงานกับแอปใหม่)
  • node.js สามารถเสริมแอพ ASP.NET MVC ได้ด้วยการเพิ่มความดีแบบ async ให้กับสถาปัตยกรรมที่มีอยู่

มีกรณีการใช้งานสำหรับ / กับ C # และ node.js?

แก้ไข

ฉันรัก ASP.NET MVC และฉันรู้สึกตื่นเต้นเป็นอย่างมาก เพียงแค่พยายามดูว่ามีกรณีการใช้งานพิเศษที่จะสนับสนุน


ใช่ฉันรู้ว่านี่อาจเป็นการสนทนาที่ใหญ่กว่าเมื่อรวมถึง Ruby หรือ PHP แต่สำหรับคำถามเฉพาะนี้ฉันไม่สนใจสิ่งใดสิ่งหนึ่ง ... นั่นเป็นเพียงฉัน
Chase Florell

คำตอบคือลองโหนด อ่านเพิ่มเติมเกี่ยวกับมัน ดูว่าคุณชอบมัน
Raynos

คำตอบ:


11

ตอนนี้ฉันกำลังดู node.js และมันเป็นนัยเกี่ยวกับประสิทธิภาพ (ฉันติดความเร็ว) แต่ฉันไม่ได้เจาะลึกลงไปเลย

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

ฉันสงสัยว่า node.js สามารถแทนที่การพัฒนาเว็บโดยทั่วไปของฉันใน C # และ ASP.NET MVC ได้หรือไม่ถ้ามันเป็นการดีที่จะประกอบกับ C # และ ASP.NET MVC หรือถ้ามีบางสิ่งที่ควร "ปล่อยให้อยู่คนเดียวดีพอ "

มีกรณีการใช้งานสำหรับ / กับ C # และ node.js?

แน่นอนว่าถ้าคุณอยู่ในร้านที่เขียนโค้ดเป็นประจำใน C # คุณควรใช้ MVC (ดีกว่า WebForms และเรียกว่าเว็บเพจ) คุณจะไม่เสียเวลาไปกับการฝึกฝนเครื่องมือและมันเป็นสิ่งที่เวิร์กโฟลว์ของคุณควรจัดการอยู่แล้ว

สิ่งที่คุณไม่ได้ระบุข้างต้นคือเหตุผลในการเลือกแต่ละข้อ คุณมีตัวเลือกการตลาดในปัจจุบันสองตัวเลือกตัวเลือกหนึ่งยังอยู่ในช่วงอัลฟ่าอีกตัวเลือกในปีที่สามของการเปิดตัวแพลตฟอร์ม ฉันไม่ต้องการที่จะเปรียบเทียบรถยนต์ไฟฟ้ารุ่นทดสอบปัจจุบันกับลูกผสมของฮอนด้าที่ออกสู่ตลาดอยู่แล้ว พวกเขาอยู่ในสองลีกที่แตกต่างกัน

ตอนนี้นี่คือเหตุผลที่คุณจะต้องอยู่ห่างจาก node.js หากคุณเป็นร้านค้า C #

ขณะนี้คุณไม่สามารถใช้งานในเหตุการณ์แบบอะซิงโครนัสได้ในขณะนี้คุณทำงานในรูปแบบขั้นตอน

นั่นคือสิ่งที่ตรงกันข้ามกับสิ่งที่ nodejs จะทำเพื่อคุณ

อย่างไรก็ตามหากคุณเขียนโค้ด async ใน C # บ่อยครั้งและคุณใช้มันมากในรูปแบบที่มีเหตุการณ์เหตุการณ์ก็เกิดขึ้นใช่แล้ว node.js มีไว้เพื่อให้คุณพิจารณาอย่างยิ่ง

นี่คือสิ่งที่คุณจะยอมแพ้:

  • IIS - นี่เป็นสิ่งสำคัญสำหรับผู้คนจำนวนมาก สิ่งต่าง ๆ เช่นการรวม A / D ดั้งเดิมเสร็จเรียบร้อยแล้วและไม่มีข้อบกพร่อง ตอนนี้ node.js จริงๆแล้วทำงานได้ดีกับ IIS
  • การโกนหนวดด้วยมีดโกน - หากคุณทำ C # MVC อย่างจริงจังคุณจะใช้งานและรักการโกนหนวดและคุณจะสามารถปั่นสิ่งต่าง ๆ ได้เร็วแค่ไหน มีแม่แบบที่คล้ายกันในโหนดและแน่นอนว่าฉันไม่ได้เคาะโหนด แต่ toolchain ทั้งหมดมีอยู่แล้วใน C # และจำนวนมากของมันกำลังถูกสร้างขึ้นในโลกโหนด NB: เครื่องมือจำนวนมากตอนนี้ค่อนข้างเป็นผู้ใหญ่ _
  • การรวบรวมเวลาของ DLLs - node.js โดยทั่วไปแล้วจะได้รับการคอมไพล์ทันทีกล่าวคือไม่ใช่เส้นทางทั้งหมดที่จะถูกตรวจสอบเมื่อเริ่มต้น เป็นไปได้โดยสิ้นเชิงที่จะมีโค้ดที่ไม่ดีในโหนดที่ไม่มีใครแตะต้องตรวจสอบหรือทดสอบ
  • เครื่องมือทั้งหมดที่สร้างขึ้นใน VS ที่คุณใช้ทุกวันในปัจจุบันมีเพียงไม่มากที่ VS รองรับจาวาสคริปต์ ส่วนหนึ่งเป็นเพราะทุกสิ่งในจาวาสคริปต์นั้นเป็นแบบไดนามิก NB: Microsoft กำลังทำงานอย่างเห็นได้ชัดในการสนับสนุนการใช้เครื่องมือสำหรับ javascript _

นี่คือสิ่งที่คุณจะได้รับ:

  • ทุกสิ่งที่คุณพัฒนาจะเป็นภาษาเดียวกันโดยสมมติว่าคุณใช้สคริปต์ฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ (หรือทำไมคุณถึงต้องพิจารณาจาวาสคริปต์บนเซิร์ฟเวอร์)

ดังนั้นเนื่องจากฉันดูเหมือนจะทุบตีโหนดที่นี่ทั้งหมดให้ฉันชี้ให้เห็นว่าโหนดเป็นภาษาการเล่นของฉันที่บ้านฉันรักมันและฉันช่วยให้คนแก้จุดบกพร่องบางครั้งมันบนเซิร์ฟเวอร์แชท stackoverflow (ห้อง 642) ฉันเห็นว่ามันมีศักยภาพที่ยิ่งใหญ่และน่าทึ่งในอนาคต

ฉันแค่พูดว่าอย่าโยนลูกและสงสัยว่าทำไมอาบน้ำสกปรก

คุณยังไม่ได้ให้เหตุผลว่าทำไมคุณควรทิ้งประสบการณ์หลายปีและเริ่มต้นสิ่งใหม่ ๆ เป็นเครื่องมือที่ไม่ดีหรือไม่? ไม่ใช่เลย. ทั้งสองอย่างยอดเยี่ยมและทำให้การพัฒนาเป็นเรื่องง่าย

โหนดสามารถแทนที่ C # ได้หรือไม่ ใช่ค่อนข้างแน่นอน ดังนั้น PHP หรือ Java หรือ Ruby ก็สามารถทำได้ คุณไม่ได้ถามเกี่ยวกับสิ่งเหล่านั้น

นี่คือวิธีที่คุณรู้เมื่อคุณพร้อมที่จะโปรแกรม node.js แทนที่จะเป็น C #:

  • คุณกำลังพิจารณาที่จะเขียนหนังสือเพื่อช่วยเหลือผู้อื่น "รับจาวาสคริปต์" แทนโปรแกรมเก่าที่น่าเบื่อที่พวกเขาเคยเขียนมาก่อนใน C # และอื่น ๆ
  • คุณมีปัญหาเกี่ยวกับการซิงโครนัส (การบล็อก) I / O หยุดแอปของคุณจากการทำงานจริง
  • คุณไม่ได้ใช้ไลบรารีใด ๆ ใน C # นอกเหนือจาก MVC ที่เป็นค่าเริ่มต้นและนั่นเป็นเพียงการกำหนดเส้นทางและคุณค่อนข้างมั่นใจว่าคุณสามารถใช้เครื่องมือการกำหนดเส้นทางที่ดีกว่าและคุณเข้ารหัสทุกอย่างให้ใกล้เคียงกับโลหะมากที่สุด
  • วัตถุข้อมูลทุกชิ้นที่คุณออกแบบให้คุณเห็นว่าเป็นแฮชแทนที่จะเป็นวัตถุที่พิมพ์ออกมาอย่างแรง

1
คำแนะนำของฉันไปเขียนเว็บไซต์ที่ซับซ้อนสามหรือสี่แห่งใน node.js เริ่มเล็กแล้วใหญ่ขึ้น
jcolebrand

1
ฉันไม่ได้อยู่ในวิทยาลัย / มหาวิทยาลัย ฉันพัฒนาโซโล่มาประมาณ 8 ปีและทำได้ค่อนข้างดีสำหรับตัวเอง ฉันสามารถทำให้ดีขึ้น $$$ ด้วยตัวเองมากกว่า บริษัท อื่น
Chase Florell

2
C # รวบรวมเวลาตรวจสอบเส้นทางรหัสทั้งหมด มันจะไม่ขว้างจนกว่าข้อมูลที่ไม่ดีจะระเบิด โหนดจะไม่หยุดการสร้างเพียงเพราะรหัสไม่ดี หรือฉันใช้เวอร์ชั่นเก่าและมีการเปลี่ยนแปลง
jcolebrand

1
@ Raynos: Razor ไม่ใช่โครงการโอเพ่นซอร์สของบุคคลที่สามมันเป็นเอ็นจิ้นการรับชมที่พัฒนาโดย Microsoft สำหรับ ASP.NET MVC 3 อย่างเป็นทางการ
Carson63000

1
ในช่วงเวลาของการเขียน Node.js นี้ไม่ได้รับการสนับสนุนโดย IIS ตอนนี้มันเป็นอย่างไรก็ตาม
jcolebrand

5

หากคุณเพียงแค่การทำสถาปัตยกรรมพักผ่อนใช้เก็บ CRUD ไม่มีเหตุผลที่ดีในการพอร์ตแอพลิเคชันที่มีอยู่เพื่อ node.js.

หากคุณเขียนแอปพลิเคชันใหม่ที่ใช้ REST และ CRUD อาจมีเหตุผลที่ดีที่จะใช้ node.js ตั้งแต่เริ่มต้น

มันขึ้นอยู่กับแต่ละแอปพลิเคชัน

เช่นส่วนตัวฉันจะเขียนแอปพลิเคชัน REST / CRUD อย่างเต็มที่ใน node.js เพราะมันเป็นการตั้งค่าส่วนตัว โหนดดีมากในการพัฒนา ASP.NET MVC เป็นกรอบข้อ จำกัด ที่น่ารำคาญสำหรับฉัน

คำตัดสิน:เครื่องมือทั้งสองทำงานให้เสร็จ หากไม่มีข้อกำหนดเฉพาะที่โปรดปราน. NET หรือโหนดให้ใช้สิ่งที่คุณต้องการ นั่นคือการตั้งค่าส่วนตัว

อย่างไรก็ตามฉันสามารถแสดงรายการ obvouis ประโยชน์ของแพลตฟอร์มทั้งสอง

ASP.NET

  • การรวม Windows / .NET ถ้าคุณต้องการให้ microsoft stack ของคุณเชื่อมต่อกันอย่างแน่นหนาและบูรณาการอย่างสูงคุณก็ต้องการ. NET
  • กำลังแรงงานที่พร้อมใช้งาน
  • กรอบ monolothic ที่จับมือคุณ
  • มีชุดคุณสมบัติที่ใช้งานได้ทันที หากคุณมีความสุขกับคุณสมบัติเหล่านี้จะช่วยเพิ่มประสิทธิภาพการทำงาน หากคุณต้องการฟีเจอร์ที่กำหนดเองคุณต้องต่อสู้กับเครื่องมือและลดประสิทธิภาพการทำงาน

Node.js

  • ภาษาเดียวสำหรับเว็บสแต็กทั้งหมดของคุณ (ถ้าคุณใช้ฐานข้อมูล noSQL ที่ใช้ js สำหรับ "เคียวรี" เช่น couch / mongo)
  • ยอดเยี่ยมสำหรับแอปพลิเคชันเว็บแบบเรียลไทม์ที่ใช้เครื่องมือเช่นsocket.io
  • ยอดเยี่ยมสำหรับการเชื่อมต่อเครือข่ายเมื่อเซิร์ฟเวอร์ของคุณไม่พูดถึงจุดสิ้นสุดระยะไกลในประเภทต่างๆ
  • ให้คุณใช้คุณสมบัติขั้นต่ำเพียงอย่างเดียวเท่านั้น ซึ่งหมายความว่าคุณสามารถสร้างแอปพลิเคชันของคุณในแบบที่คุณต้องการ
  • ชุดเครื่องมือสไตล์ยูนิกซ์ขนาดเล็กที่ทำสิ่งหนึ่งและสิ่งหนึ่งที่ดีที่ผสมและจับคู่ได้ง่าย
  • NPM : การจัดการแพ็กเกจทำได้ถูกต้อง
  • ชุมชนโอเพ่นซอร์สมากมาย

ใช่ไม่ต้องการพอร์ตแอปที่มีอยู่ คิดถึงแอพที่จะมาในอนาคต
Chase Florell

5
@Raynos ควรเพิ่มข้อจำกัดความรับผิดชอบว่าเขาเป็นผู้สอนศาสนา Node.js และไม่เคยสร้างเว็บไซต์ตาม MVC3 / 4 (ฉันคิดว่านี่สะท้อนให้เห็นในคำตอบ)
แมตต์ Esch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.