Hace unas semanas comencé un proyecto de WinForms y como realmente no sabía qué funciones quería, las agregué en el camino. Esto ahora causó un lío horrible donde MainForm es una gran bola de barro y donde, por ejemplo, algunos elementos importantes de la IU desencadenan cambios de estado importantes hasta el punto que tengo que llamar Evento OnChange de un control para cambiar algún estado en la base de datos .Arquitectura para aplicaciones WinForms?
En resumen: acabo de comenzar un nuevo proyecto en el que deseo adoptar un mejor enfoque. Simplemente no sé cuál sería el "bueno". En ASP.net MVC, encontré que el patrón de MVVM es realmente útil, pero en el escritorio, MVVM parece ser solo para WPF, no para WinForms.
El otro enfoque es una arquitectura de tres niveles: tengo mi clase de base de datos que actualmente habla directamente con la interfaz de usuario. Ahora creo una nueva clase estática ("ApplicationState") que habla con la base de datos y dispara eventos para decirle a la interfaz de usuario "¡Oye, algo ha cambiado!". La interfaz de usuario manipularía el estado que luego manejará la persistencia de la base de datos y volverá a generar eventos si la interfaz de usuario necesita actualización. El punto aquí es que la clase ApplicationState nunca modifica la interfaz de usuario directamente, sino que la interfaz de usuario se suscribe a eventos. Que parece como una forma limpia/"MVC-y" de hacerlo, pero tal vez estoy pasando por alto algo aquí?
Básicamente, mi objetivo final sería tener la UI completamente independiente de la capa de la base de datos solo para asegurarme de no volver a conectar la lógica de negocios a la IU.
Esa serie de artículos es realmente buena, parece ser lo que quiero. –
+1 para referencia a series en MVP en WinForms. – groverboy