อะไรคือความแตกต่างและความคล้ายคลึงระหว่าง MVC และ MVVM? [ทำซ้ำ]

สิ่งที่ซ้ำกันที่เป็นไปได้:
อะไรคือ ความแตกต่างระหว่าง MVC และ MVVM คืออะไร

ฉันใหม่ในรูปแบบ Asp.Net MVC ฉันมีคำถามสองสามข้อที่เกี่ยวข้องกับ MVC และ MVVM

  1. รูปแบบเหล่านี้แก้ไขปัญหาอะไรบ้าง?
  2. มีความคล้ายคลึงกันอย่างไร?
  3. พวกเขาแตกต่างกันอย่างไร?

person John    schedule 16.11.2011    source แหล่งที่มา
comment
ลองพิจารณาดูสิ่งนี้: stackoverflow.com/questions/6258682/   -  person Abdul Munim    schedule 16.11.2011


คำตอบ (3)


ใน ASP.NET MVC คำขอมาจากเว็บเซิร์ฟเวอร์และได้รับการจัดการโดยตรงจากคอนโทรลเลอร์ คอนโทรลเลอร์จะกำหนดมุมมองที่เหมาะสมและเติมด้วยโมเดล จากนั้นตัวควบคุมจะปล่อยอินสแตนซ์เหล่านี้ไปยังระบบพื้นฐานซึ่งแสดงผลไปยังไคลเอนต์ คุณจะเห็นว่าผู้ควบคุมเป็นคนแรกและคนสุดท้ายที่ดำเนินการ

ใน MVVM นั้น UI (มุมมอง) จะหันหน้าเข้าหาผู้ใช้และรับอินพุตจากผู้ใช้โดยตรง ภายในมุมมอง คำสั่งภายใน ViewModel (ซึ่งเป็น DataContext ของมุมมอง) จะถูกทริกเกอร์โดยกิจกรรมนี้ การควบคุมไหลไปยัง ViewModel ซึ่งตีความสิ่งที่ View ส่งไปและเตรียมโมเดล หลังจากการควบคุมไหลกลับไปที่มุมมองแล้ว ระบบจะอัปเดตตัวเองตามการเปลี่ยนแปลงในโมเดล หากจำเป็นต้องมีมุมมองใหม่ ViewModel จะสื่อสารสิ่งนี้กับ NavigationService (หรือวิธีการนำทางใดก็ตามที่แอปพลิเคชันของคุณใช้) ซึ่งเป็นขอบเขตของส่วนประกอบ Window หรือ Frame - UI คุณจะเห็นว่า ViewModel ไม่ใช่สิ่งแรกและสุดท้ายที่ดำเนินการ มุมมองมีบทบาทมากกว่าใน MVC มาก

ในการเลือกอันที่ดีที่สุด ฉันมักจะได้รับคำแนะนำจากการสนับสนุนด้านเครื่องมือ ตัวอย่างเช่น หากคุณใช้ ASP.Net จะมีระบบอัตโนมัติจำนวนมหาศาลผ่านเทมเพลตโปรเจ็กต์ MVC ที่ช่วยในการตั้งค่าเพลตบอยเลอร์และการใช้รูปแบบนั้นในแอปพลิเคชัน จากสิ่งที่ฉันเข้าใจเกี่ยวกับ Silverlight/WPF มีการสนับสนุนมากมายเกี่ยวกับ MVVM ตอนที่ฉันเร่งความเร็วของ MVC/MVP เมื่อสองสามปีที่แล้ว ฉันนำ MVP ไปใช้ในกระบวนการชำระเงินของแอปพลิเคชันอีคอมเมิร์ซ มันเป็นประสบการณ์ที่ยอดเยี่ยมและผลลัพธ์ที่น่าพึงพอใจ แต่ฉันเขียนทุกอย่างด้วยมือโดยไม่มีเครื่องมือสนับสนุนและคำแนะนำเพียงเล็กน้อย เมื่อฉันเขียนแอป Silverlight ฉันจะถูกย้ายไปที่ MVVM อย่างแน่นอนเนื่องจากการรองรับที่มีอยู่

person Community    schedule 16.11.2011
comment
คำขอเข้ามาจากเว็บเซิร์ฟเวอร์ได้อย่างไร? หน้าที่หลักของเว็บเซิร์ฟเวอร์คือจัดการกับคำขอจากเว็บเบราว์เซอร์และจะได้รับการตอบสนองตามนั้น - person Farhan Shirgill Ansari; 22.08.2015

มีเนื้อหามากมายบนเว็บที่ครอบคลุมเรื่องนี้ แต่เป็นวิดีโอเริ่มต้นนี้ จะช่วยคุณได้

person Darren Lewis    schedule 16.11.2011

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

Model คือถ้าคุณชอบเอนทิตีที่อธิบายทุกสิ่งที่คุณต้องการบันทึกรวมถึงพฤติกรรมของมันแม้ว่าคนส่วนใหญ่จะคิดในแง่ของตารางฐานข้อมูล แต่มันเป็นเพียงโมเดลการจัดเก็บข้อมูลและโมเดลที่รวมทุกอย่างเข้าด้วยกัน

มุมมองคือถ้าคุณชอบ UI ที่คุณโต้ตอบด้วย

ตัวควบคุมคือตัวควบคุมที่ขับเคลื่อนการโต้ตอบระหว่างการดูหรือการเปลี่ยนแปลงที่เกิดขึ้นกับโมเดล

MVVM หากคุณต้องการจะเหมือนกับ MVC แต่ใช้ View Model เพิ่มเติมเพื่อช่วยในเรื่อง UI และ View Model นี้ซิงค์กับโมเดลผ่านคอนโทรลเลอร์

สถาปัตยกรรมที่ครอบคลุมแนวปฏิบัติที่ดีที่สุด เช่น รูปแบบพื้นที่เก็บข้อมูล, IOC เป็นต้น

อย่างรวดเร็วเช่น ของการพูดแบบบุคคล

class Person
{ 
   int id;
   string type;

}

ขณะนี้โมเดล View ที่จะช่วยในเรื่อง UI อาจมีรายการแบบเลื่อนลงเพื่อเติมประเภทของบุคคล ดังนั้น ViewModel สำหรับรุ่นเดียวกันอาจเป็น

Class PersonViewModel

{  //Pseudo code
   SelectList {mytype, yourtype}

}

สิ่งนี้อาจถูกนำมาใช้ในมุมมองเป็น //PseudoCode Dropdownlist(slectList)

หวังว่านี่จะช่วยได้

person user182630    schedule 16.11.2011