Tôi cho rằng các ứng dụng rất khác nhau và hiểu biết của chúng tôi về cách viết các ứng dụng vẫn còn rất hạn chế. Các ứng dụng Windows Forms trước đây mà tôi đã làm việc rất khác biệt với nhau. Một số khác biệt về thiết kế mà tôi đã thấy là (bao gồm hầu hết các kết hợp):
- Trực tiếp nói chuyện với cơ sở dữ liệu (2 tầng)
- Sử dụng chương trình phụ trợ đã được viết cho ứng dụng nhất định (3 cấp)
- Sử dụng một tập hợp các dịch vụ web được viết để sử dụng bởi nhiều ứng dụng và không thể thay đổi cho ứng dụng của bạn. (Kiến trúc hướng dịch vụ)
- Cập nhật được thực hiện bởi các hoạt động CRUD
- Cập nhật đang được thực hiện với mẫu lệnh (gửi lệnh đến máy chủ phụ trợ)
- Rất nhiều cách sử dụng ràng buộc dữ liệu / không sử dụng ràng buộc dữ liệu
- Hầu hết dữ liệu “giống bảng” (ví dụ: hóa đơn) hoạt động tốt trong điều khiển lưới tiêu chuẩn / cần điều khiển tùy chỉnh cho hầu hết dữ liệu giao diện người dùng.
- Một nhà phát triển / nhóm gồm 10 hoặc 20 nhà phát triển (chỉ trên giao diện người dùng)
- Rất nhiều bài kiểm tra đơn vị bằng cách sử dụng mocks, v.v. / không kiểm tra đơn vị
Do đó, tôi không nghĩ rằng có thể tạo một triển khai MVC (hoặc MVP) luôn phù hợp.
Các bài viết hay nhất mà tôi đã xem thực sự giải thích về MVC và lý do tại sao hệ thống MVC được xây dựng theo cách của nó, là loạt bài "Build Your Own CAB" của Jeremy D Miller . Sau khi làm việc, bạn sẽ có thể hiểu các lựa chọn của mình tốt hơn rất nhiều.
Hướng dẫn Ứng dụng Thông minh của Microsoft (CAB / Khối Ứng dụng Tổng hợp Microsoft) cũng nên được xem xét. Nó hơi phức tạp một chút, nhưng nó có thể hoạt động tốt cho các ứng dụng phù hợp.
Lựa chọn Triển khai MVC / MVP cho Dự án Winforms cung cấp một cái nhìn tổng quan đáng đọc. Rất nhiều người thích PureMVC . Tôi chưa bao giờ sử dụng nó, nhưng tôi sẽ xem xét nó vào lần tới khi tôi cần một khuôn khổ MVC.
" Presenter First " là một cách tiếp cận phát triển phần mềm kết hợp các ý tưởng của mẫu thiết kế Model View Presenter (MVP) và phát triển theo hướng thử nghiệm . Nó cho phép bạn bắt đầu bằng cách viết các bài kiểm tra bằng ngôn ngữ của khách hàng. Ví dụ:
"Khi tôi nhấp vào nút 'lưu' thì tệp sẽ được lưu và cảnh báo tệp chưa lưu sẽ biến mất."
Tôi không có kinh nghiệm sử dụng "Trình bày trước tiên", nhưng tôi sẽ thử khi có cơ hội, vì nó có vẻ rất hứa hẹn.
Các câu hỏi khác về Stack Overflow mà bạn có thể muốn xem ở đây và ở đây .
Nếu bạn đang nghĩ đến việc sử dụng WPF tại bất kỳ thời điểm nào, hãy xem mẫu Model-View ViewModel (MVVM) . Đây là một video rất hay mà bạn nên xem: Jason Dolinger trên Model-View-ViewModel .
MVVM (Model View View Model) Mẫu thiết kế cho Winforms cung cấp một tùy chọn khác có thể giúp chuyển đổi sang WPF dễ dàng hơn nếu cần. Magical.Trevor là một mẫu MVVM khác cho Windows Forms cũng bao gồm liên kết tự động dựa trên tên thuộc tính.
Cũng hãy tự hỏi tại sao bạn đang sử dụng MVC.
- Bạn có muốn có thể kiểm tra đơn vị càng nhiều mã càng tốt không?
- Bạn có đang cố gắng cho phép sử dụng lại nhiều mã nhất có thể không?
- Bạn đang cố gắng làm cho cơ sở mã của mình dễ hiểu?
- 101 lý do khác có thể hợp lệ cho một dự án nhất định.
Khi bạn đã rõ ràng về mục tiêu của mình , việc lựa chọn cách triển khai này hay cách khác sẽ trở nên dễ dàng hơn.