Soy de la opinión de que las aplicaciones son muy diferentes entre sí y nuestra comprensión de cómo deben escribirse las aplicaciones es todavía muy limitada. Las aplicaciones anteriores de Windows Forms en las que he trabajado han sido muy diferentes entre sí. Algunas de las diferencias de diseño que he visto son (incluida la mayoría de combinaciones):
- Hablar directamente con la base de datos (2 niveles)
- Use un backend que se haya escrito para la aplicación dada (3 niveles)
- Utilice un conjunto de servicios web que fueron escritos para su uso por muchas aplicaciones y que no se pueden cambiar para su aplicación. (Arquitectura orientada a Servicios)
- Actualizaciones realizadas por CRUD operaciones
- Actualizaciones que se realizan con el patrón de comando (envío de comandos al servidor backend)
- Muchos usos de la vinculación de datos / sin usos de la vinculación de datos
- La mayoría de los datos son "como una tabla" (por ejemplo, facturas) que funcionan bien en los controles de cuadrícula estándar / necesitan controles personalizados para la mayoría de los datos de la interfaz de usuario.
- Un desarrollador / equipos de 10 o 20 desarrolladores (solo en la interfaz de usuario)
- Muchas pruebas unitarias usando simulacros, etc. / sin pruebas unitarias
Por lo tanto, no creo que sea posible crear una implementación de MVC (o MVP) que siempre encaje bien.
Las mejores publicaciones que he visto que realmente explican MVC y por qué un sistema MVC está construido de la forma en que está, es la serie "Build Your Own CAB" de Jeremy D Miller . Después de trabajar en él, debería poder comprender mucho mejor sus opciones.
También se debe considerar la Guía de Smart Client de Microsoft (CAB / Microsoft Composite Application Block) . Es un poco complejo, pero puede funcionar bien para aplicaciones que encajan bien.
La selección de una implementación de MVC / MVP para un proyecto de Winforms brinda una descripción general que vale la pena leer. A mucha gente le gusta PureMVC . Nunca lo he usado, pero lo vería la próxima vez que necesite un marco MVC.
" Presenter First " es un enfoque de desarrollo de software que combina las ideas del patrón de diseño Model View Presenter (MVP) y el desarrollo basado en pruebas . Le permite comenzar escribiendo pruebas en el idioma del cliente. Por ejemplo:
"Cuando hago clic en el botón 'guardar', el archivo debería guardarse y la advertencia de archivo no guardado debería desaparecer".
No tengo experiencia en el uso de "Presenter First", pero lo intentaré cuando tenga la oportunidad, ya que parece muy prometedor.
Otras preguntas de Stack Overflow que quizás desee ver están aquí y aquí .
Si está pensando en usar WPF en cualquier momento, eche un vistazo al patrón Model-View ViewModel (MVVM) . Aquí hay un video muy bueno que debería ver: Jason Dolinger en Model-View-ViewModel .
El patrón de diseño MVVM (Model View View Model) para Winforms ofrece otra opción que puede facilitar la conversión a WPF si alguna vez es necesario. Magical.Trevor es otra muestra de MVVM para Windows Forms que también incluye enlace automático basado en nombres de propiedad.
También pregúntese por qué está utilizando MVC.
- ¿Desea poder realizar pruebas unitarias con la mayor cantidad de código posible?
- ¿Está intentando permitir que se reutilice la mayor cantidad de código posible?
- ¿Está intentando que su código base sea fácil de entender?
- 101 otras razones que pueden ser válidas para un proyecto determinado.
Una vez que tenga claros sus objetivos , será más fácil elegir una implementación u otra.