Una vez comencé un proyecto MVVM / WPF, que finalmente se construyó e implementó, y para eso estudié mucho el Marco Caliburn.Micro MVVM. El hecho es: terminé no usando Caliburn.Micro para eso, y terminé implementando algunos conceptos MVVM (específicamente, solo las clases ViewModelBase
y RoutedCommand
).
Ahora me asignaron a un proyecto algo más grande en la misma línea: una "Aplicación de escritorio fuera de línea de cliente enriquecido para un solo usuario", por así decirlo, y decidí usar Caliburn.Micro. Y ahí es donde comienza mi "problema".
He leído en esta famosa publicación de blog , cuyo título dice que "si estás usando MVVM, entonces necesitas un marco", que:
"Tratar de hacer algo como MVVM sin un marco es una gran cantidad de trabajo. Toneladas de código duplicado, reinventar la rueda y volver a capacitar a las personas para que piensen de manera diferente" .
Al menos con un marco de trabajo, evita el código duplicado y, con suerte, no tendrá que reinventar la rueda, lo que le permite concentrarse en volver a capacitar a las personas. La parte de reentrenamiento es generalmente inevitable, pero un marco proporciona código y estructura de plomería, lo que facilita el proceso. "
Estaría de acuerdo con la primera lectura, pero mi experiencia real con Caliburn.Micro (CM) en mi aplicación actual es de falta de idea y desorientación. Es decir, el marco no facilitó el proceso en absoluto, sino todo lo contrario. Leyendo los ejemplos siempre repetidos proporcionados por Rob Eisenberg en la documentación informal (demasiado), e intentando inferir patrones de uso a partir de las muestras proporcionadas enrevesadas, y sus relaciones de clase e interfaz completamente indirectas, donde las cosas parecen estar diseñadas para funcionar en función de efectos secundarios, parece humanamente imposible a menos que seas un genio experimentado (perdón por la queja, pero supongo que sabes a lo que me refiero).
Sin mencionar que cualquier escenario anterior trivial parece involucrar contenedores IoC, que es algo con lo que nunca he trabajado, y que parecen resolver un problema que ni siquiera podría tener . No tengo ganas de pasar más horas del proyecto aprendiendo esas cosas en lugar de pensar en mis problemas y dominios de aplicación. Solo quería un plátano, pero CM me dio un gorila (IoC) sosteniendo una canasta de plátanos.
Ahora que estoy considerando volver a mi marco MVVM casero, compuesto solo por el puñado de clases específicas de MVVM que realmente quiero implementar, me gustaría al menos darle una oportunidad a CM, en caso de que esté perdiendo algo aquí, o simplemente haciendo las cosas "al revés" por pura inexperiencia e ignorancia. Y entonces la pregunta es:
Existe un consenso generalizado de que "los marcos hacen las cosas más fáciles y más naturales", pero si estoy experimentando todo lo contrario, ¿significa esto que no debería usar el marco o que estoy tratando de aprenderlo de manera incorrecta? ¿Hay alguna pista de que ni siquiera debería estar usando un marco en primer lugar? ¿O hay alguna forma "correcta" de descubrir cómo usar CM para el desarrollo simple de MVVM?
RelayCommand
implementación (ya que "se une" directamente a los métodos por convención, en lugar de vincularse a las propiedades de ICommand).
RelayCommand
de otra biblioteca si la utilizada por Caliburn Micro no funciona para usted.
EventAggregator
para mensajes, yNotificationObject
para ViewModelBase, y MVVM LightRelayCommand
para comandos. Lo importante es identificar qué problemas resolverá el marco para usted y solo usar esas soluciones. No sienta que está obligado a usar toda la biblioteca de framework.