Pregunta

He encontrado un artículo sobre este tema por un empleado de Microsoft, pero ¿alguien ha implementado un marco más sólido para esto?¿Existe un marco liviano para WinForms que pueda trasladarse fácilmente?Me gustaría ponerme al día con bastante rapidez y evitar producir un marco/biblioteca propio para manejar esto cuando alguien más inteligente ya lo ha hecho.

no he mirado el Fábrica de software móvil del grupo P&P, pero sospecho que es algo pesado.¿Vale la pena echarle un vistazo?

Editar:No busco información sobre el proyecto ASP.NET MVC.Estoy preguntando sobre la implementación del marco compacto 'WinForms' y cómo implementar MVC con eso.

¿Fue útil?

Solución

Personalmente creo que la Mobile Software Factory no es una gran alegría para la CF.Todavía usamos una parte (EventBroker) en el trabajo y me gustaría incluso eliminar esa parte si es posible (ya que no admite eventos genéricos y hay que convertir los argumentos en sus tipos fuertes desde EventArgs).Un proyecto hermano en el trabajo lo usó para parte de su interfaz de usuario, pero tuvo que eliminarlo debido a problemas de rendimiento (otro proyecto grande, aunque también tiene problemas de rendimiento adicionales).

El problema que encuentro con el marco MVP que ofrece la biblioteca P&P es que los formularios y controles son PROPIOS de los presentadores en lugar de los presentadores/controladores que poseen los formularios (que no leyeron "Es solo una vista":¿Programador pragmático?).Esto encaja perfectamente con el mantra de desarrollo rápido de aplicaciones "Form First" de MS, pero apesta si se considera lo costosos que pueden ser los controladores de Windows en CE (si tiene muchos).Ejecutamos una aplicación CF muy grande en el trabajo y hemos implementado nuestro propio marco MVC.No es difícil crear el suyo propio, solo asegúrese de separar todo en Controladores, Vistas, Objetos comerciales y Servicios y de tener un UIController que controle las interacciones entre los controladores.

De hecho, vamos un paso más allá y reutilizamos formularios/controles usando un patrón Controlador->Ver->Diseño.El controlador es el mismo de siempre, la vista es el objeto que personaliza un diseño en una vista particular y el diseño es el UserControl real.Luego los intercambiamos dentro y fuera de un único formulario.Esto reduce drásticamente la cantidad de controles de Windows que utilizamos.Esto + inicializar todos los formularios al inicio significa que erradicamos la pausa notable que se produce al crear nuevos controles de Windows "bajo demanda".

Obviamente, sólo vale la pena hacer este tipo de cosas si está ejecutando una aplicación grande.Tenemos aproximadamente más de 20 tipos diferentes de Vistas que utilizan en total alrededor de 7 diseños diferentes.Esto perjudica nuestra rutina de inicialización (a medida que cargamos los formularios al inicio) en una magnitud de aproximadamente 10 segundos, pero psicológicamente la mayoría de los usuarios están dispuestos a aceptar tal golpe al inicio en lugar de pausas notables durante el tiempo de ejecución.

El principal problema con la biblioteca P&P en mis libros es que es un puerto FF -> CF y debido a ciertas incompatibilidades y diferencias de rendimiento entre las dos plataformas, se pierden muchas funciones útiles.

Por cierto, este es, con diferencia, el artículo más completo que he leído sobre MVC/MVP.Para aplicaciones de Windows (escritorio o CE), recomendaría usar la versión Taligent Model-View-Presenter sin las interacciones, comandos y selecciones (por ejemplo, el controlador/presentador realiza todo el trabajo).

Otros consejos

Ninguno de ustedes (davidg o Kevin Pang) prestó atención al hecho de que él está interesado en WinForms, no Formularios Web.Quiere un marco que impulse el patrón de diseño Modelo-Vista-Controlador (davidg, MVC no es solo el nombre de un marco ASP.NET) en un proyecto WinForms utilizando .NET Compact Framework.Hizo su pregunta muy bien.

También está el Marco de COI OpenNETCF (que no creo que existiera cuando se hizo esta pregunta), que es mucho más liviano, pero similar en modelo de objetos a Mobile Software Factory de P&P.

@DavidG y @KevenPang

MVC no se limita a una tecnología web; de hecho, el Smalltalk MVC original era para aplicaciones de escritorio.

Funciona así:

  • Ver = Formulario de cliente
  • Controlador = resume los eventos del cliente y organiza entre la vista y el modelo
  • Modelo = Datos de aplicación y lógica empresarial

En Smalltalk MVC puro, la Vista no se limita a ser un formulario, sino que puede ser cualquier representación de los Datos del Modelo... Por ejemplo, si tuviéramos un Modelo que representara una hoja de cálculo, podríamos tener las siguientes vistas:

  • Vista de hoja de cálculo
  • Vista para imprimir
  • Vista de iconos

etc, el Modelo sería el mismo, pero la Vista crearía un objeto de salida diferente en cada caso.

Dicho todo esto, no sé si existe dicho marco para el marco .NET Compact, solo quería señalar que MVC no significa WebApp.

Echa un vistazo a MVC móvil de mFly.Nunca lo he usado, pero se presenta como un marco MVC razonable para CF.

@davidg:"¿Por qué querrías MVC en Compact Framework?"

¿Por qué no?No es que esté reservado para desarrolladores web, es un patrón.

Editar:Los carteles anteriores son correctos.Vi MVC e inmediatamente pensé en formularios web.Mis disculpas.Siéntete libre de ignorar esto.Dejaré mi mensaje original en su lugar en caso de que alguien que es interesado en formularios web MVC necesita los enlaces.:-)

Existen un par de marcos MVC, ninguno de los cuales es muy "ligero", pero MVC supone un cambio bastante grande respecto de los formularios web, por lo que eso es lo que se espera:

  • ASP.NETMVC - Este es el intento de Microsoft de crear un marco MVC.Todavía está en modo de vista previa, así que úselo a su propia discreción, pero varias personas ya lo están usando en sus aplicaciones de producción.Encontrará amplia documentación sobre esto con una simple búsqueda en Google, ya que se está volviendo muy popular entre el público .NET.
  • Monorraíl del Castillo - El marco MonoRail es un marco MVC de código abierto que existe desde hace bastante tiempo y se utiliza en varias aplicaciones de producción.Definitivamente es más sofisticado que el marco ASP.NET MVC, pero considerando la cantidad de esfuerzo que Microsoft está realizando en su oferta MVC, creo que cambiará relativamente pronto.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top