คอนโทรลเลอร์และ ViewModel แตกต่างกันไปในหลายวิธี
ใน MVC ผู้ควบคุมรู้ถึงมุมมองสามารถเปลี่ยนมุมมองได้ นอกจากนี้ยังรู้จักโมเดลและสามารถเรียกใช้ได้ ใน MVVM ViewModel เป็นการแสดงนามธรรมของมุมมองและไม่รู้จัก UI ที่เป็นรูปธรรมมันจะล้อมรอบโมเดลในทางที่จะสามารถแสดงผลได้ตามต้องการ
ใน MVC แบบคลาสสิกคอนโทรลเลอร์เป็นเพียงกลยุทธ์ของ View ในการโต้ตอบกับ Model ในความเป็นจริงบางครั้งคอนโทรลเลอร์ไม่จำเป็นด้วยซ้ำ ใน MVVM คุณไม่จำเป็นต้องใช้เพราะคุณสามารถมี ViewModels ที่แตกต่างกันสำหรับมุมมองเดียวกันหากคุณต้องการพฤติกรรมที่แตกต่างกัน ใน MVC คุณอาจมีตัวอย่างเช่น ReadOnlyController หรือ AdminController เพื่อสื่อสารกับ Model ใน MVVM คุณสามารถมี ViewModels สองรายการและคุณเลือก ViewModels ที่คุณต้องการ
แต่พวกเขามีความคล้ายคลึงกัน ในรูปแบบที่ทั้งสองดูเป็นผู้สังเกตการณ์ ใน MVC แบบคลาสสิกมุมมองเป็นผู้สังเกตการณ์ของโมเดลใน MVVM เป็นผู้สังเกตการณ์ของ ViewModel
ทั้งสองรูปแบบมีไว้เพื่อแยกความกังวล MVVM มีจุดประสงค์หลักเพื่อให้เป็นนามธรรมของมุมมองที่เป็นอิสระจากเทคโนโลยี UI ที่ใช้งานอยู่ MVC ไม่ได้ไปไกลขนาดนั้น มันเป็นจุดสนใจหลักคือการแยกข้อกังวลออกมาเพื่อที่คุณจะได้ไม่ใส่ตรรกะทางธุรกิจ (ตัวแบบ) เข้าไปในมุมมอง
คุณอาจพบคำตอบของฉันสำหรับคำถามที่คล้ายกันนี้เป็นประโยชน์
ในที่สุดฉันควรจะบอกว่าทั้งสองรูปแบบเป็นของครอบครัวเดียวกัน MVP ซึ่ง MVVM เป็นผู้สืบทอดคือพี่น้องของ MVC หากคุณต้องการทราบข้อมูลเพิ่มเติมตามลิงค์นี้ไปยังเว็บไซต์ของ Martin Fowlerเขาจะอธิบายรายละเอียดทุกอย่าง