c# - studio - syncfusion windows forms controls
Marco MVC/MVP para aplicaciones.NET WinForms (10)
¿Alguien conoce un marco de MVC / MVP utilizable para las aplicaciones empresariales WinForms?
Antes había un bloque de aplicaciones de proceso de interfaz de usuario para .NET . Pero ya no está en desarrollo desde que se lanzó Windows Workflow Foundation (que también se reescribirá por completo con .NET 4.0).
Tal vez no estoy actualizado, pero me parece que hay una brecha en este momento.
Estoy conectando mi propio marco: TrueView para .NET . Se basa en DDD y el patrón Objetos desnudos.
Por lo menos, usarlo para crear prototipos rápidos es una gran manera de obtener comentarios decentes de los usuarios de su negocio.
Microsoft tiene el Bloque de aplicación compuesta (CAB) para usar con aplicaciones WinForms. Si bien técnicamente no es una implementación de MVC / MVP, proporciona una buena separación entre el código de la interfaz de usuario y el código que no es de la interfaz de usuario: http://msdn.microsoft.com/en-us/library/aa480450.aspx
También es bastante popular simplemente hacerlo usted mismo sin utilizar ningún marco de trabajo, siempre y cuando se sienta cómodo con los patrones relevantes. Jeremy Miller tiene una excelente serie de artículos sobre algunas mejores prácticas al tomar este enfoque:
Construya su propio CAB Parte n. ° 1 - El preámbulo
Construya su propia CAB Parte # 2 - El cuadro de diálogo Humilde
Construya su propia CAB Parte n. ° 3 - El patrón de controlador supervisor
Construya su propia CAB Parte n. ° 4 - La vista pasiva
Construya su propia CAB Parte n. ° 5 - El modelo de presentación
Cree su propia CAB Parte n. ° 6 - Vea la comunicación del presentador
Construya su propio CAB - Respondiendo algunas preguntas
Construya su propio CAB Parte # 7 - ¿Cuál es el modelo?
Cree su propia CAB Parte n. ° 9 - Validación centrada en el dominio con el patrón de notificación
Cree su propia CAB Part # 10 - Unit Testing the UI with NUnitForms
Cree su propio CAB Parte n. ° 11 - Agregador de eventos
Construya su propia CAB Parte n. ° 12: reinicie los eventos fuera de control con el "Pestillo"
Cree su propia CAB Parte n. ° 13 - Controladores integrados con una tirada de DSL
No me gustaban Prism, CAB o SmartClient por ser demasiado complejo y terminé implementando mis propias implementaciones, al final.
A medida que pasa el tiempo, surgen algunos patrones comunes. Estos son reutilizados de una aplicación a una aplicación. Aquí hay un ejemplo: DDD y Rule UI Validation en Windows.Forms con MVC .
Siempre he ganado lo mío, no es realmente difícil y mientras más controlo de mi código, mejor me siento.
Me pregunto cómo encajaría un marco MVC con, digamos, CastleWindsor o similar.
Probablemente esta no sea la respuesta más útil, ¡pero solo me pregunto si ya has considerado esta opción!
Smart Client Software Factory?
Utilizamos la Smart Software Software Factory de MS. Proporciona integración con IDE, soporte total de MVC y una vez que haya superado los conceptos subyacentes, se trata de una implementación muy competente. Puede adquirirlo desde: http://msdn.microsoft.com/en-us/library/aa480482.aspx
Todos estos marcos estándar no son adecuados para grandes desarrollos de aplicaciones complejas y suponen que las pantallas serán estáticas. También desarrollé el mío debido al requisito común de que los controles de pantalla tengan que ser dinámicos, incluso los patrones MVC / MVP suponen que la pantalla será estática, por lo que cuando los campos se muestran en un control dependen del rol del usuario. Los patrones MVC / MVP no son adecuados. Desarrollé una herramienta donde puedes construir las pantallas desde la carga de los objetos de negocios y sus propiedades en una base de datos, luego el usuario simplemente selecciona los objetos y las propiedades de los objetos que desea visualizar, un control puede estar compuesto por cualquier cantidad de grupos de control , cada grupo de control puede contener cualquier propiedad de objeto comercial; los objetos de negocio se generan a partir de las vistas de mi ORM de Linq. Por lo tanto, un control solo mostrará los campos de los grupos de control a los que tiene acceso un usuario. También podría usar la programación orientada a Aspect para proporcionar el gule para el patrón MVC, pero cuando las pantallas tengan que ser dinámicas en función del rol, esta sobrecarga probablemente agregará un poco más de complejidad y costo de rendimiento.
Además de TrueView, también hay objetos desnudos para .NET . Esto admite el modo cliente / servidor y un visor web (basado en un visualizador equivalente de Java) está siendo portado actualmente.
En cuanto a qué propiedades / acciones están disponibles para un usuario / rol dado, esto se hace dinámicamente en Objetos Desnudos. Hay tres tipos de condiciones previas de reglas de negocio que son compatibles: 1. ¿el miembro es visible? 2. es el miembro utilizable? 3. ¿Es válido el cambio al miembro (nuevo valor de propiedad o parámetro de acción)? O, más concisa: ¿puedes verlo? puedes usarlo? ¿puedes hacerlo? El modelo de programación Naked Objects permite que estas reglas se especifiquen tanto de manera declarativa como imperativa.
Incluso si termina envolviendo su modelo de dominio en su propia capa de interfaz de usuario, le recomiendo que eche un vistazo a NO.
Aclamaciones
Dan Haywood
autor: "Diseño impulsado por el dominio utilizando objetos desnudos", pragprog.com
He utilizado con éxito el siguiente proyecto de código abierto para implementar el patrón MVP en ASP.NET + WinForms + C #:
- Proyecto Castillo.
Eche un vistazo a la publicación de mi blog que muestra una muestra completa de la aplicación web ASP.NET: