Bộ điều khiển và ViewModel khác nhau theo nhiều cách khác nhau.
Trong MVC, Trình điều khiển biết khung nhìn, nó có thể thay đổi Khung nhìn. Nó cũng biết Model và có thể gọi nó. Trong MVVM, ViewModel là một đại diện trừu tượng của View và không biết UI cụ thể, nó bao bọc Model theo cách để nó có thể được hiển thị như mong muốn.
Trong MVC cổ điển, bộ điều khiển chỉ là một chiến lược của View để tương tác với Model. Trên thực tế, đôi khi Bộ điều khiển thậm chí không cần thiết. Trong MVVM, bạn không cần nó, vì bạn có thể có các ViewModels khác nhau cho cùng một View nếu bạn cần các hành vi khác nhau. Trong MVC, bạn có thể có ví dụ như ReadOnlyControll hoặc AdminControll để giao tiếp với Model. Trong MVVM, bạn có thể có hai ViewModels và bạn chọn cái bạn cần cho View.
Nhưng họ có một số điểm tương đồng. Trong cả hai mẫu, Chế độ xem là một người quan sát . Trong MVC cổ điển, khung nhìn là một người quan sát mô hình, trong MVVM, nó là một người quan sát của ViewModel.
Cả hai mô hình đều có nghĩa là để cung cấp một sự tách biệt các mối quan tâm. MVVM chủ yếu nhằm mục đích cung cấp một bản tóm tắt của Chế độ xem, hoàn toàn độc lập với công nghệ UI đang sử dụng. MVC không đi xa đến thế. Trọng tâm chính của nó là phân tách các mối quan tâm, để bạn không đưa logic kinh doanh (Mô hình) vào chế độ xem.
Bạn cũng có thể tìm thấy câu trả lời này của tôi cho một câu hỏi tương tự hữu ích.
Cuối cùng, tôi nên nói rằng cả hai mô hình thuộc về cùng một gia đình. MVP, trong đó MVVM là hậu duệ là anh em ruột của MVC. Nếu bạn muốn biết nhiều hơn hãy theo liên kết này đến trang web của Martin Fowler , anh ấy sẽ giải thích mọi chi tiết.