มีการใช้รูปแบบ MVC ในอุตสาหกรรมหรือไม่ hype ทั้งหมดคืออะไร? [ปิด]


16

ฉันเป็นนักเรียน แต่ฉันหวังว่าจะได้ย้ายเข้าสู่อุตสาหกรรมซอฟต์แวร์ในไม่ช้า ดูเหมือนว่ามีโฆษณาจำนวนมากเกี่ยวกับรูปแบบซอฟต์แวร์ MVC ฉันสังเกตเห็นว่ากรอบ PHP มักจะเป็น MVC แล้วภาษาที่ไม่ใช่เว็บเป็นอย่างไรกับพวกเขา สำหรับวิทยานิพนธ์ปริญญาโทของฉัน (C ++) ฉันเลือกรูปแบบ MVC เพราะแยกตรรกะและส่วนติดต่อผู้ใช้ออกเป็นอย่างดี

ในอุตสาหกรรมมันใช้บ่อยไหม? ถ้าเป็นเช่นนั้นอะไรคือสาเหตุหลักและการออกแบบยอดนิยมอื่น ๆ


13
MVC เป็นเพียงการดำเนินการแยกความกังวลที่เป็นที่นิยม SoC เป็นสิ่งที่สำคัญไม่ใช่ MVC
Raynos

1
คุณอาจต้องการตรวจสอบ 'Catalog of Enterprise Application Architecture' ของ Martin Fowler สำหรับทางเลือก / การเปลี่ยนแปลงบางอย่างบน MVC ที่อาจเหมาะกับแอปพลิเคชันเฉพาะที่ดีกว่า: martinfowler.com/eaaCatalog/index.html
Mchl

3
โปรดทราบว่าหลายสิ่งหลายอย่างที่มีป้ายกำกับ 'MVC' นั้นจริง ๆ แล้วไม่ใช่ MVC แต่เป็นไปตามรูปแบบแอปพลิเคชันหลายระดับ (ใหม่กว่า): การจัดเก็บข้อมูล - ตรรกะ - การนำเสนอ (ซึ่ง IMHO ทำให้เข้าใจได้มากกว่า
tdammers

MVC ลงวันที่ก่อนการเขียนโปรแกรมเว็บถ้ามันบอกอะไรคุณ
Jeremy

คำตอบ:


6

MVC ได้รับ hype จำนวนมากและใช้เพราะเป็นรูปแบบที่มีประโยชน์มากสำหรับโดเมน

MVC ส่งเสริมการแยกข้อกังวล สิ่งนี้สามารถทำให้การพัฒนาง่ายขึ้นถ้าทำถูกต้อง แอปพลิเคชันใด ๆ ที่แสดงและ / หรือแก้ไขข้อมูลที่มีอยู่ในที่เก็บข้อมูลจะมีฟังก์ชัน MVC แต่อาจไม่สามารถแยกออกจากกันได้ การไม่แยกส่วนประกอบมีแนวโน้มที่จะทำให้เกิดข้อต่อที่ไม่ต้องการระหว่างข้อกังวล

ด้วย MVC มันควรจะค่อนข้างง่ายในการเปลี่ยนส่วนต่อประสานของ Front-end (View) ของแอพพลิเคชั่นโดยไม่ต้องดัดแปลงคอนโทรลเลอร์หรือรุ่น สิ่งนี้อาจเป็นที่ต้องการหากคุณต้องการอนุญาตการเข้าถึงจากสมาร์ทโฟนเว็บและแอปพลิเคชันอย่างน้อยหนึ่งรายการ

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


12

ใช่มันถูกใช้บ่อยมาก แอปพลิเคชั่น iPhone / iPad ทั้งหมดได้รับการตั้งค่าเป็น MVC ฉันได้เห็นแอป MVC asp.net จำนวนมากเมื่อเร็ว ๆ นี้

MVC ให้ความยืดหยุ่นมากขึ้นบนท้องถนนและกระตุ้นให้นักพัฒนาเขียนรหัสแยกต่างหากสำหรับแต่ละฟังก์ชั่น ทำให้ง่ายต่อการบำรุงรักษา


กรอบ Cocoa ของ Apple (ใช้กับ MacOS X) เป็นวิวัฒนาการของ NextStep ซึ่งมีอายุจนถึงปลายปี 1980 NextStep, Cocoa และ Cocoa Touch (ใช้ใน iOS) ทั้งหมดใช้ MVC ร่วมกันอย่างหนัก
แม็กเคเล็บ

4

มันอยู่ในความนิยมในขณะนี้

อย่าประมาทพลังของ hype ในไม่ช้าคนอื่นก็จะมาพร้อมกับสิ่งอื่นที่ใหม่กว่าเป็นประกายและเข้าใจง่ายกว่าและทุกคนจะประณาม MVC ในฐานะที่เป็นรากเหง้าแห่งความชั่วร้ายทั้งหมด (เกิดขึ้นกับเว็บฟอร์ม) หรือจะมีคนมากมายที่ใช้มัน ประณามว่าเป็นสิ่ง "การจัดการวัว * * " (เกิดขึ้นกับ XML) หรือจะมีการเปลี่ยนไปใช้รูปแบบอื่นเนื่องจาก MVC "ไม่ยืดหยุ่นพอสำหรับปัญหาที่ยากมากที่ฉันต้องแก้" (ภาษาที่พิมพ์คงที่เทียบกับภาษาแบบไดนามิก)

ในตอนท้ายของวัน MVC เป็นวิธีการทำงานที่เหมาะสำหรับปัญหาต่าง ๆ ที่การเขียนโปรแกรมเว็บผิดพลาด มันจะอยู่พักหนึ่ง แต่ฉันคิดว่าเหตุผลที่คนส่วนใหญ่ใช้งานก็เพื่อให้เป็นไปตาม buzzword

แก้ไข

โปรดทราบ: ฉันทราบดีว่ารูปแบบ MVC นั้นมีมานานหลายปีและถูกใช้ในเฟรมเวิร์กก่อน asp.net MVC ฉันแค่บอกว่ามันเป็นที่นิยมในขณะนี้ดังนั้นมันจึงได้รับแรงกดดันมากกว่าแนวทางอื่น ๆ ฉันใช้ MVC สำหรับโครงการส่วนตัวทั้งหมดและใช้มันในโครงการเชิงพาณิชย์ด้วย (ฉันเป็นผู้พัฒนา. net)

นี่ไม่ใช่คำโวยวาย


7
-1 สำหรับ: 'At the Moment' เว้นแต่คุณจะพิจารณาตัวอย่างจุดเริ่มต้นของ Smalltalk หรือ Java / Swing เป็นเทคโนโลยีของ Moment นั้น MVC นั้นเก่าเกินไปสำหรับสิ่งนั้น
keppla

4
ยกเว้น "ในขณะนี้" นั้นค่อนข้างแม่นยำ MVC แทบจะไม่ได้ใช้จนเมื่อไม่นานมานี้ที่ฉันรู้ยกเว้นในโลกของ Java ทุก ๆ ที่มันไม่ได้ใช้จนกระทั่งเมื่อ Rails ได้รับความนิยม
Wayne Molina

4
GUI-Frameworks ส่วนใหญ่ (ไม่ใช่ html) ที่ฉันพบใช้ MVC ดูเหมือนจะไม่ได้ใช้งานแทบจะตลอด 10 ปีที่ผ่านมา
keppla

1
ที่จริงแล้ว MVC ได้รับแรงกดดันจาก MVP ในบางส่วนของจักรวาล
Tom Anderson

3
ส่วนตัวฉันเกลียด Webforms มานานก่อนที่ ASP.NET MVC จะเป็นแนวคิด บางครั้งสิ่งต่าง ๆ ได้รับความนิยมเพราะจริง ๆ แล้วมันเป็นตัวเลือกที่ดีที่สุดในกรณีส่วนใหญ่ - และใช่พวกเขาอาจถูกแทนที่ด้วยสิ่งที่ใหม่กว่าและมีประสิทธิภาพมากกว่า แต่อะไรล่ะ นั่นเป็นความคืบหน้าไม่ใช่การโฆษณา
Aaronaught

3

จากประสบการณ์ของฉันมันไม่ได้ใช้มากเท่าที่ควร มันเป็นแบบจำลองที่ดีกว่าตัวเลือกบางตัว แต่มันก็เป็นเพียงแค่โฆษณาจำนวนมากในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากมี cruft ดั้งเดิมมากมายที่ผู้คนกลัวที่จะเปลี่ยนเป็น MVC หรือกลัวที่จะใช้ MVC สำหรับการทำงานในอนาคตเพราะอยู่นอกเขตความสะดวกสบายของพวกเขา



1

ASP.NET MVC ได้รับความนิยมอย่างมากสำหรับเว็บแอปพลิเคชั่นเนื่องจาก. NET ถูกใช้อย่างแพร่หลายในอุตสาหกรรม

แอปพลิเคชั่นเว็บของ Microsoft พัฒนาจาก Classic ASP เป็น ASP.NET ซึ่งใช้แบบฟอร์มบนเว็บ (เพื่อให้ทักษะนักพัฒนา VB6 Win Forms สามารถแปลไปยังขอบเขตใหม่ของเว็บได้อย่างง่ายดาย)

น่าเสียดายที่เว็บฟอร์มนั้นเป็นแบบรัฐและ HTTP (ซึ่งเป็นเว็บแบบอิง) นั้นไร้สัญชาติดังนั้นจึงมีวิธีแก้ไขที่น่ารังเกียจมากมายเนื่องจากสิ่งต่าง ๆ เช่นมุมมองจำเป็นต้องมี

ASP.NET MVC ช่วยให้ทักษะนักพัฒนา WebForms ต้องถูกแปลเป็นเฟรมเวิร์กเว็บที่มี SoC ที่ดีและมีความพยายามอย่างมากในการทดสอบ (เนื่องจาก WebForms ไม่สามารถทดสอบได้มากทีม MVC จึงมีจำนวนมาก ความพยายามในกรอบ)

ที่กล่าวว่ามันไม่ได้เป็นยาครอบจักรวาล / กระสุนเงินและเช่นเดียวกับกรอบใด ๆ มีเวลาที่จะใช้มันและเวลาที่จะไม่ใช้มัน หวังว่าผู้คนจะไม่ใช้มันเพื่อพยายามแก้ไขทุกอย่างหลังจากทั้งหมด: เมื่อเครื่องมือเดียวของคุณคือค้อนปัญหาทุกอย่างดูเหมือนเล็บ


1

มันเป็นเพียงช่วงเวลาหนึ่งในประวัติศาสตร์เนื่องจาก MVC เป็นแนวคิดที่เรียบง่ายมาก ๆ สองอย่างที่เกิดขึ้นกับการได้รับ hype จากเฟรมเวิร์กเฉพาะคู่ที่มีเนื้อหาเด่นในสื่อการตลาดของพวกเขา นอกจากนี้ยังเกิดขึ้นกับการหลอกลวงด้วยวิธีปฏิบัติที่ดีมากมายที่เกิดขึ้นในการพัฒนาซอฟต์แวร์ สิ่งนี้ใช้คู่สำหรับการพัฒนาแบบหลอก ๆ เช่น HTTP; มากจนฉันรู้เพียง "รูปแบบ" ที่แตกต่างกันอย่างแท้จริงที่ใช้ในโลกเว็บ - รูปแบบการจัดกิจกรรมตาม ASP.Net WebForms ที่ไม่เป็นอันตราย

ฉันประหลาดใจจริง ๆ เล็กน้อยว่ามีเพียงพอสำหรับการทำวิทยานิพนธ์ทั้งหมด

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


@geroge: ขอบคุณสำหรับคำตอบ ฮา .. ไม่ต้องกังวลซอฟต์แวร์ที่มาพร้อมกับวิทยานิพนธ์ของฉันใช้ MVC .. มันไม่ได้อยู่ใน MVC จริงๆ!
เบียร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.