นี่เป็นคำถามเก่าที่มีคำตอบมากมาย แต่ไม่มีคำตอบที่ฉันคาดว่าจะปรากฏ
คำตอบสั้น ๆ คือ:
- ใช้ ASP.NET MVC หากคุณตั้งใจจะสร้างเว็บแอปพลิเคชั่นอย่างเหมาะสมด้วยรูปแบบการเขียนโปรแกรมที่ทันสมัยและรูปแบบการกอดอุตสาหกรรมสำหรับแพลตฟอร์ม ASP.NET ในด้านลงคุณจะต้องรู้ว่า HTML และทรัพยากรฝั่งไคลเอ็นต์ (Javascript, CSS) ทำงานอย่างไรและเพิ่มความคิดการเขียนโปรแกรม MVC ซึ่งมีช่วงการเรียนรู้ที่สูงชัน
- ใช้ ASP.NET Web Forms หากคุณกำลังใช้หรือต้องการใช้GUI -centric, RAD (การพัฒนาแอปพลิเคชันอย่างรวดเร็ว) , วิธีการลากแล้วปล่อยเพื่อทำต้นแบบอย่างรวดเร็วเช่นการกดปุ่ม / กริดข้อมูลที่มีสายภายใน 15 นาทีและโซลูชันไม่ได้ตั้งใจให้เป็นสิ่งที่นักพัฒนาสนับสนุน หรือใช้ ASP.NET Web Forms ถ้าคุณมีพื้นหลังในการพัฒนาGUIหรือ Windows Forms และคุณต้องการถ่ายโอนความรู้ของคุณไปยังเว็บ
แต่ถ้าจะดูอย่างนี้คุณต้องเข้าใจประวัติศาสตร์ของแต่ละคน
ASP.NET Web Forms คือคำตอบของ Microsoft สำหรับผู้ที่สร้างแอปพลิเคชันเว็บแบบไดนามิกโดยใช้ตัวควบคุม ActiveX 6 ของ Visual Basic, VB6 DLLs บนเซิร์ฟเวอร์และ ASP Classic ในขณะนั้นการพัฒนาเว็บโดยใช้เครื่องมือของ Microsoft เหล่านี้เป็นเรื่องยุ่งเหยิงจริง พร้อมด้วยความสมบูรณ์ของ. NET Framework ซึ่งเป็นผลลัพธ์ของ Microsoft โดยพื้นฐานแล้วจะกลับไปที่กระดานวาดภาพเกี่ยวกับวิธีการเขียนโปรแกรมทางธุรกิจที่มีประสิทธิภาพบนสแต็ก Windows, ASP.NET Web Forms เป็นในวันที่น่าตื่นตาตื่นใจและสวยงาม
แนวทางทั้งหมดคือการให้นักพัฒนาที่ดีที่สุดของโลกทั้งสองของสิ่งที่คล้ายกับการพัฒนาโปรแกรม Windows แต่ด้วยพลังของบริการอินเทอร์เน็ต แนวคิดก็คือเช่นเดียวกับ VB6 / WinForms "แบบฟอร์ม" (หน้าต่าง) เช่นเดียวกันกับหน้าเว็บที่เป็นรูปแบบ (เช่นเดียวกับหน้าต่างดู)และในแบบฟอร์มนั้นคุณสามารถลากและวางฉลากกล่องข้อความ กริดข้อมูล, ปุ่ม, และสิ่งอื่น ๆ ที่นักพัฒนา GUI ของ VB / WinForms คุ้นเคย
ในการทำปุ่มให้ทำอะไรบางอย่างหลังจากลากแล้วปล่อยคุณเพียงคลิกสองครั้งในตัวออกแบบและบูมคุณอยู่ในโปรแกรมแก้ไขโค้ดบอกรูปแบบว่าจะทำอย่างไรเมื่อเหตุการณ์ "คลิก" เกิดขึ้น นี่คือสิ่งที่นักพัฒนา Windows GUI สร้างซอฟต์แวร์โดยใช้เครื่องมือGUIของ VB6 และเครื่องมือการแข่งขันยกเว้นตอนนี้รหัสกำลังทำงานบนเซิร์ฟเวอร์! ว้าว!
นี่คือเทคโนโลยีปี 2002 ที่น่าตื่นตาตื่นใจและสวยงามในเวลานั้นเป็นคำตอบสำหรับโซลูชั่นGUI ที่เปิดใช้งานอินเทอร์เน็ตสำหรับการพัฒนาRADมันทำให้รู้สึกถึงพลังในโลกที่ยุ่งเหยิงของนักพัฒนาซอฟต์แวร์ที่มีวัตถุประสงค์ทางธุรกิจที่พวกเขาต้องการเพื่อให้บรรลุ
โชคไม่ดีที่รูปแบบการเขียนโปรแกรมนี้เน้นการเปรียบเทียบของการเขียนโปรแกรม Windows GUI ที่มีภาระในรายละเอียดการใช้งานที่จำเป็นกระเป๋าสัมภาระที่จำเป็นทั้งหมดเพื่อรองรับวงจรชีวิตเหตุการณ์และซ่อนรายละเอียดที่น่าเกลียดของ HTML แบบง่ายและ สคริปต์ที่คอมโพเนนต์การลากและวางเหล่านี้จะแสดงผล และในตอนท้ายของวันนักพัฒนาที่สนับสนุนแอปพลิเคชันจริงอย่างหลีกเลี่ยงไม่ได้ต้องเจาะลึกลงไปในส่วนประกอบเหล่านี้หรือเขียนของตัวเองและดังนั้นพวกเขาจะต่อสู้กับการต่อสู้กับโครงสร้างพื้นฐานนี้การต่อสู้ที่จะทิ้งกองไว้บนกอง cruft ดึงผมและ น้ำตา.
สำรองข้อมูล ล้างมือของคุณ. ลองดูที่ปัญหาทางธุรกิจอีกครั้ง วัตถุประสงค์ทางธุรกิจของเราคืออะไร
เราจำเป็นต้องสร้างและจัดการการใช้งานเว็บ ข้อ จำกัด ของเราคือเรามีเวิลด์ไวด์เว็บซึ่งตั้งอยู่บน HTTP, HTML, Javascript และ CSS และบนเซิร์ฟเวอร์เรามีกฎเกณฑ์ทางธุรกิจฐานข้อมูลและภาษาการเขียนโปรแกรมที่ยอดเยี่ยมเล็กน้อย (เช่น C #) เราต้องการคำอุปมา Windows GUI นี้เพื่อผลักดันวิธีการพัฒนาของเราหรือไม่? เหตุใดเราไม่สามารถมุ่งเน้นที่ปัญหาของแอปพลิเคชันและทำสิ่งที่เป็นอุปมาอุปมัย GUI ได้?
นี่คือที่มาของ ASP.NET MVC โดยเริ่มต้นจากการก่อจลาจลของนักพัฒนาที่เรียกตัวเองว่า "Alt.Net" ซึ่งต้องการกลับไปใช้หลักการพัฒนาซอฟต์แวร์ที่เหมาะสมและบริสุทธิ์ ไม่ต้องยุ่งยากและยุ่งยากอีกต่อไปเพียงแค่มุ่งเน้นไปที่วัตถุประสงค์ทางธุรกิจและแนวทางปฏิบัติที่ดีที่สุดของซอฟต์แวร์
สิ่งนี้แปลจริง ๆ ในกรณีนี้คือ:
- แยกของความกังวล ตัวอย่างเช่นองค์ประกอบของข้อมูลไม่จำเป็นต้องทราบว่าข้อมูลจะแสดงผลอย่างไรและไม่ควรดูมาร์กอัปที่ถูกกำหนดด้วยรายละเอียดการกำหนดค่าการเชื่อมต่อฐานข้อมูล รหัสการทดสอบ
- การเปิดรับและสนับสนุนอย่างเต็มที่สำหรับการสัมผัสกับ nitty ทรายของ HTML และทรัพยากรที่เกี่ยวข้อง ในเว็บฟอร์ม HTML จะถูกเก็บซ่อนไว้นักพัฒนาจะไม่สนับสนุนให้ยุ่งยาก ใน ASP.NET MVC ผู้พัฒนาได้รับการสนับสนุนให้จัดการรายละเอียดเหล่านั้น ในความเป็นจริงมันเป็นสิ่งจำเป็น ข้อได้เปรียบที่นี่คือผู้พัฒนาสามารถเรียนรู้อีกครั้งเพื่อชื่นชมความหมายที่ชัดเจนของ HTML, CSS และสคริปต์และทำงานร่วมกับมันแทนที่จะต่อต้าน
- การตรวจสอบของวัตถุธุรกิจ ตัวควบคุมและแบบจำลองนั้นเหมาะสำหรับการทดสอบหน่วยการเขียนโปรแกรมเพื่อให้สามารถตรวจสอบการใช้งานเพื่อให้บรรลุตามวัตถุประสงค์ทางธุรกิจและการเปลี่ยนแปลงสามารถตรวจสอบได้ว่าจะไม่เกิดการแตกหัก ด้วยเว็บฟอร์มมันเป็นการยากที่จะทดสอบเนื่องจากส่วนประกอบไม่ได้ถูกออกแบบมาเพื่อทดสอบเป็นรายบุคคลและผลลัพธ์การพัฒนาทั้งหมดจะหมุนรอบรูปแบบหน้าและรอบอายุเหตุการณ์ของพวกเขาด้วยโคลนทางธุรกิจและตรรกะการนำเสนอที่เชื่อมโยงกันอย่างลึกซึ้ง
โปรดทราบว่า HTML เป็นภาษามาร์กอัประดับสูงอยู่แล้วเช่นเดียวกับ Javascript เป็นภาษาโปรแกรมระดับสูง เรื่องราวทั้งหมดจะแตกต่างกันไปถ้าเราติดต่อกับแอสเซมบลีภาษาและซี
จากการขยายไปสู่อันดับที่ 2 ดังนั้นวัตถุประสงค์อื่นของ ASP.NET MVC ก็คือช่วยให้นักพัฒนาสามารถจัดระเบียบรายละเอียดส่วนหน้าของส่วน 'มุมมอง' ของโซลูชันและใช้ประโยชน์จากรากฐานที่สมบูรณ์ซึ่งส่วนที่เหลือของอุตสาหกรรมได้สร้างขึ้น แพลตฟอร์มไคลเอ็นต์ส่วนหน้า
คุณจะพบว่านักพัฒนา ASP.NET MVC รู้สึกเหมือนอยู่บ้านด้วยการใช้ห้องสมุด Javascript และเทคนิคการสร้างเทมเพลตฝั่งไคลเอ็นต์โดยไม่ต้องต่อสู้กับสถาปัตยกรรมฝั่งเซิร์ฟเวอร์ กรณีนี้ไม่ได้เป็นกรณีแรกที่มีเว็บฟอร์ม ASP.NET เพราะเว็บฟอร์มไม่ต้องการให้คุณดู HTML หรือสคริปต์เลยยกเว้นว่าคุณต้องระวังจริงๆในกรณีนี้โปรดระวังเพราะมันไม่ได้เป็นเรื่องเล็กน้อย ของหัวใจ