สิ่งที่ซ้ำกันที่เป็นไปได้:
อะไรคือ ความแตกต่างระหว่าง MVC และ MVVM คืออะไร
ฉันใหม่ในรูปแบบ Asp.Net MVC ฉันมีคำถามสองสามข้อที่เกี่ยวข้องกับ MVC และ MVVM
- รูปแบบเหล่านี้แก้ไขปัญหาอะไรบ้าง?
- มีความคล้ายคลึงกันอย่างไร?
- พวกเขาแตกต่างกันอย่างไร?
สิ่งที่ซ้ำกันที่เป็นไปได้:
อะไรคือ ความแตกต่างระหว่าง MVC และ MVVM คืออะไร
ฉันใหม่ในรูปแบบ Asp.Net MVC ฉันมีคำถามสองสามข้อที่เกี่ยวข้องกับ MVC และ MVVM
ใน 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 อย่างแน่นอนเนื่องจากการรองรับที่มีอยู่
มีเนื้อหามากมายบนเว็บที่ครอบคลุมเรื่องนี้ แต่เป็นวิดีโอเริ่มต้นนี้ จะช่วยคุณได้
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)
หวังว่านี่จะช่วยได้