Tôi đã bắt đầu một dự án WinForms một vài tuần trước và khi tôi không thực sự biết những tính năng tôi muốn, tôi chỉ cần thêm chúng trên đường đi. Điều này giờ đây gây ra một mớ hỗn độn khủng khiếp khi MainForm của tôi là một quả bóng bùn lớn và ví dụ một số thay đổi trạng thái quan trọng được kích hoạt bởi các phần tử UI đến điểm tôi phải gọi OnChange Event of a Control để thay đổi một số trạng thái trong cơ sở dữ liệu .Kiến trúc cho các ứng dụng WinForms?
Tóm lại: Tôi vừa mới bắt đầu một dự án mới nơi tôi muốn tiếp cận tốt hơn. Tôi chỉ không biết cái nào là "tốt". Trong ASP.net MVC, tôi thấy mẫu MVVM thực sự hữu ích, nhưng trên Desktop, MVVM dường như chỉ dành cho WPF, không dành cho WinForms.
Cách tiếp cận khác là kiến trúc ba tầng: Tôi có Lớp cơ sở dữ liệu của mình hiện đang đàm phán trực tiếp với giao diện người dùng. Bây giờ tôi tạo một lớp tĩnh mới ("ApplicationState") nói chuyện với cơ sở dữ liệu và kích hoạt các sự kiện để nói với giao diện người dùng "Hey, Something changed!". Giao diện người dùng sẽ thao tác Nhà nước mà sau đó sẽ xử lý sự kiên trì cơ sở dữ liệu và một lần nữa nâng cao sự kiện nếu giao diện người dùng cần cập nhật. Điểm ở đây là lớp ApplicationState không bao giờ sửa đổi giao diện người dùng trực tiếp, nhưng giao diện người dùng đăng ký với Sự kiện. Điều đó trông giống như một cách sạch sẽ/"MVC-y" để làm điều đó, nhưng có lẽ tôi đang xem cái gì đó ở đây?
Về cơ bản mục tiêu cuối cùng của tôi là để giao diện người dùng hoàn toàn độc lập khỏi lớp cơ sở dữ liệu chỉ để đảm bảo rằng tôi không dây trong logic nghiệp vụ vào giao diện người dùng một lần nữa.
Loạt bài viết đó thực sự tốt, dường như là những gì tôi muốn. –
+1 để giới thiệu chuỗi video trên MVP trong WinForms. – groverboy