เมื่อเร็ว ๆ นี้สถาปนิกอธิบาย บริษัท ของเราว่าเสนอโซลูชัน Rolls-Royce (MVC) เมื่อสิ่งที่เขาต้องการคือโตโยต้า (เว็บฟอร์ม)
ฉันอยากรู้ว่าคุณคิดอย่างไรเกี่ยวกับเว็บฟอร์มกับ MVC เป็นตัวเลือกทางสถาปัตยกรรม
เมื่อเร็ว ๆ นี้สถาปนิกอธิบาย บริษัท ของเราว่าเสนอโซลูชัน Rolls-Royce (MVC) เมื่อสิ่งที่เขาต้องการคือโตโยต้า (เว็บฟอร์ม)
ฉันอยากรู้ว่าคุณคิดอย่างไรเกี่ยวกับเว็บฟอร์มกับ MVC เป็นตัวเลือกทางสถาปัตยกรรม
คำตอบ:
การเปรียบเทียบของ Rolls-Royce / Toyota นั้นมีข้อบกพร่องและทำให้เข้าใจผิดอย่างมาก One (ASP.NET MVC) ไม่ได้เป็นเพียงเวอร์ชั่นที่น่าสนใจกว่าหรือแพงกว่า (ASP.NET WebForms) พวกเขาเป็นวิธีที่แตกต่างกันอย่างมากมายในการสร้างเว็บแอปพลิเคชันโดยใช้ ASP.NET
สำหรับฉันความแตกต่างทางสถาปัตยกรรมที่ใหญ่ที่สุดระหว่าง MVC และ WebForms คือวิธีที่พวกเขาทำงานกับสภาพแวดล้อมไร้รัฐของเว็บ: WebForms ทำงานอย่างหนักเพื่อสร้างชุดของ abstractions ที่ซ่อนธรรมชาติไร้สัญชาติของการเขียนโปรแกรมเว็บในขณะที่ MVC รวบรวมสภาพแวดล้อมไร้สัญชาติ มัน.
แต่ละวิธีมีประโยชน์และเป็นอันตราย แต่ฉันสนุกกับการสร้างเว็บไซต์ด้วย MVC ให้ความรู้สึกเป็นธรรมชาติมากกว่า WebForms (โดยมีเลเยอร์ขึ้นอยู่กับชั้นของนามธรรมที่รั่วไหล )
คำถามเก่า แต่สมควรได้รับคำตอบอย่างละเอียดยิ่งขึ้นในกรณีที่คนอื่นยังมีปัญหาอยู่
ท้ายที่สุด webforms เป็นโซลูชันแบบ thin-client ซึ่งหมายความว่าคุณจะต้องกดปุ่มสวย ๆ และส่วนหน้า (ไคลเอ็นต์) ก็ถูกสร้างขึ้นมาเพื่อคุณ หากคุณมีคนที่รู้วิธีที่จะทำลายมันในเว็บฟอร์มและไม่มีข้อกังวลในเรื่องการบำรุงรักษา / การปรับเปลี่ยนได้และเว็บไซต์นั้นเป็นทั้งในระยะสั้นและแบบใช้แล้วทิ้งไม่มีวิธีการใดที่ผิดปกติ เป็นไปได้ที่จะเรียนรู้วิธีการทำสิ่งต่าง ๆ ของคุณเอง แต่ในกรณีนี้มันจะต้องรู้ว่าทั้งเว็บ webforms พยายามปกป้องนักพัฒนาแอป. NET และสิ่งที่ webforms ทั้งหมดที่ทำให้ devs เว็บไคลเอนต์ส่วนใหญ่ต้องการฆ่า Microsoft วิศวกรรับผิดชอบ
ใน 99.5% ของสถานการณ์การใช้งานอื่น ๆ ทั้งหมดเราได้หยุดพยายามซ่อนเว็บจากผู้พัฒนาแอพเพราะจริงๆแล้วถ้าคุณต้องการเขียนเว็บแอปคุณจะรู้ว่าการทำงานของเว็บเป็นอย่างไร วิธีแก้ปัญหาไคลเอนต์หนา vs บางคือประชดประชันบาง ๆ ของลูกค้าอย่างหลีกเลี่ยงไม่ได้ออกมาจากส่วนหน้าของคุณและเป็นอะไรที่นอกจากนักแสดง ที่สำคัญกว่านั้นการแก้ปัญหาเหล่านี้ทำให้ทุกสิ่งไม่ยืดหยุ่นเหมือนนรกสำหรับผู้ที่รู้ว่ากำลังทำอะไรอยู่และไม่ต้องการถูก จำกัด โดยกรอบที่มีผลบังคับใช้
ไม่มีอะไรที่ไร้สาระเลยหากนำใครบางคนที่รู้ทุกอย่างเกี่ยวกับ CSS, JavaScript, HTML, XHR และทำให้พวกเขาไร้ประโยชน์อย่างสมบูรณ์โดยกีดขวางพวกเขาทุกขั้นตอนด้วยกรอบที่ ...
ลบแท็กสคริปต์ 'ที่ไม่จำเป็น' ออกทั้งหมดในแท็กส่วนหัวเพื่อป้องกันไม่ให้คุณพลาดการพึ่งพาสคริปต์ (ดีกว่าที่จะให้ 'ผู้จัดการสคริปต์' จัดการเรื่องนี้ให้คุณ) ได้รับไม่มีใครทำให้พวกเขาอยู่ที่นั่นทุกวันนี้ถ้าพวกเขารู้ว่าพวกเขากำลังทำอะไรอยู่
ยืนยันให้คุณรวม HTML ทั้งหมดไว้ในแท็กฟอร์ม ginormous หนึ่งแท็ก HTML ไม่อนุญาตให้ใช้แบบฟอร์มในแบบฟอร์มดังนั้นคุณจึงทำฟอร์มของเว็บฟอร์มหรือไม่ได้เลย
สร้างเช่น "วงจรชีวิต" 18 ขั้นตอนสำหรับสิ่งที่ควรต้มลงเพื่อตอบสนองต่อกิจกรรม UI โดยการโต้ตอบกับเบราว์เซอร์เพื่อส่งข้อความไปยังเซิร์ฟเวอร์แล้วตอบสนองเมื่อเซิร์ฟเวอร์ตอบสนอง การสรุปกระบวนการที่มีกองขยะขนาดใหญ่จำนวนมากไม่เคยต้องการที่จะเกิดขึ้น (และเพื่อความยุติธรรม MS ไม่ใช่คนขี้เหนียวคนเดียวที่พยายามทำสิ่งนี้)
จริง ๆ แล้วทำทุกสิ่งที่อาจเป็นไปได้ในการใช้วิธีแก้ไขปัญหาที่ไม่ใช่เว็บฟอร์ม ตัวอย่าง: เมื่อฉันเป็นลูกค้าฝั่งจูเนียร์มากขึ้นฉันใช้เวลาทั้งวันเพื่อหาวิธีในการสร้างปุ่มส่งที่ด้านบนของหน้าเรียกใช้ปุ่มส่งที่ด้านล่างของหน้า (ฉันถือว่าเนื่องจากตัวใหญ่ - สิ่งรูปยักษ์) โดยปกติจะใช้เวลา 5 นาที แต่หลังจากผ่านไปสองสามชั่วโมงวิศวกรรม webforms ที่รับผิดชอบ JavaScript ฉันพบว่าสิ่งเหล่านี้เป็นสิ่งที่ฉันตั้งค่าคุณสมบัติที่ฉันไม่เคยรู้มาก่อนในเวลาที่บอกคุณว่าองค์ประกอบฟอร์มสุดท้ายมีอะไรบ้าง การโฟกัสคือเพื่อให้เมื่อมีการคลิกปุ่มส่งเฉพาะปุ่ม Microsoft Submit (tm) อย่างเป็นทางการเท่านั้นที่จะทำงานเกี่ยวกับการเปิดใช้งานตัวจัดการอย่างเป็นทางการของ Microsoft Submit (tm)
ดังนั้นโรลส์ - รอยซ์กับโตโยต้าจึงไม่มีเหตุผลอย่างสมบูรณ์ ฉันจะบอกว่ามากกว่านี้ฮุนไดที่เหมาะสมอย่างสมบูรณ์แบบที่คุณจ่ายเงินมากเกินไปสำหรับเทียบกับ Pinto ที่ออกแบบโดย Microsoft ด้วยระบบออนบอร์ดที่ทำให้เกิดความคมชัด 90 องศาโดยอัตโนมัติเมื่อพบว่าคุณซื้อก๊าซหรือน้ำมันจากบุคคลอื่นที่ไม่ใช่ Microsoft ผนังที่สะดวกในการกดเข้าไป รถที่เหมาะสำหรับคนขับรถที่มีความภักดีต่อแบรนด์ที่ไม่รู้เรื่องเกี่ยวกับเว็บและต้องการที่จะสาบานว่าจะจงรักภักดีต่อ Microsoft ตลอดชีวิต
. NET MVC ทั้งหมดนั้นเรียบง่ายและสมเหตุสมผลและไม่รวมตัวเลเยอร์ของตัวเองเพื่อตบที่ด้านบนของเว็บ มันทำงานร่วมกับสิ่งที่อยู่ตรงนั้นเพื่อช่วยทำให้แผ่นเหล็กบางสำหรับคุณ มีเฟรมเวิร์กที่ดีกว่า / ราคาถูกกว่า / ฟรีเอ่อ แต่ถ้าคุณล็อคตัวคุณเองไว้กับสิ่ง. NET
แต่จริงจังอยู่!! # # ห่างจากเว็บฟอร์ม เกือบตายแล้ว ปล่อยมันไป. บอกลูกค้าของคุณว่าคุณจะทำเงินเป็นสามเท่าหากพวกเขาสัญญากับคุณว่าจะทำสัญญาสนับสนุนพิเศษแบบกำไรต่อชั่วโมงเมื่อพวกเขาต้องการทำอะไรใหม่หรือแตกต่างหรือเมื่ออึเริ่มแตกเพราะ MS ไม่สามารถทำได้ ต้องใส่ใจที่จะทำการเพิ่มเข้าไปในไฟล์ ajax.js 10,000 บรรทัดที่ดึงออกมาจาก DLL ของพวกเขาซึ่งคุณไม่สามารถแตะมันได้
โซลูชัน ASP.NET MVC ไม่จำเป็นต้องซับซ้อนเกินกว่าโซลูชัน WebForms โดยส่วนตัวแล้วฉันคิดว่า ASP.NET MVC นั้นง่ายกว่า WebForms มากและดูเหมือนว่าจะสะอาดกว่าเดิม
จากประสบการณ์ของฉันเฟรมเวิร์ค MVC จำนวนมาก (ASP.NET, Rails, CodeIgniter ฯลฯ ) มีฟังก์ชั่นหลักและการประชุมหลักมากมาย WebForms เป็นเป็ดตัวจริงจากมุมมองของเว็บ ฉันเดาว่าโปรแกรมเมอร์เว็บส่วนใหญ่จะเร็วกว่าในการรับ ASP.NET MVC มากกว่า WebForms
เหตุผลแรกที่คุณจะใช้ ASP.NET MVC บน ASP.NET WebForms นั้นสามารถทำการทดสอบได้ แน่นอนว่าคุณสามารถทดสอบหน่วยทดสอบ WebForms ได้ แต่ต้องใช้กรอบการเยาะเย้ยและความเจ็บปวดอย่างมาก เหตุผลที่สองคือ MVC ทำให้แยกความกังวลได้ง่ายขึ้น วิธีนี้จะช่วยให้สามารถนำโค้ดกลับมาใช้ใหม่ได้อย่างมากมาย นี่ไม่ได้หมายความว่าเป็นไปไม่ได้ที่จะทำเช่นเดียวกันใน ASP.NET ด้วยรูปแบบเช่น MVP
ข้อเสียของ MVC คือคุณเสียฟังก์ชั่นการใช้งานมากมายและสร้างขึ้นใน WebForms ในช่วงทศวรรษที่ผ่านมา (เกือบจะเหมือนกัน) MVC มาไกลตั้งแต่เริ่มก่อตั้งเพื่อให้คุณสมบัติที่คุ้นเคย
เท่าที่มีประสิทธิภาพไม่มีใครพิสูจน์ได้ทางใดทางหนึ่งซึ่งเทคโนโลยีเป็น "เร็วกว่า"?
ฉันไม่คิดว่าอย่างใดอย่างหนึ่งจะดีกว่าอีก ฉันชอบกรอบ MVC จริง ๆ และใช้มันกับความสำเร็จที่ยิ่งใหญ่ แต่ฉันก็มั่นใจเสมอว่าฉันเลือกเทคโนโลยีที่ตรงกับโครงการ