.net - usar - wpf desktop application
¿Debería mi equipo de C#.NET migrar a Windows Presentation Foundation? (9)
Los UI de WPF son más fáciles de implementar y mantener que las alternativas actuales de C #, por lo que si gran parte de su base de código es responsable del manejo de la IU, la migración puede ser beneficiosa, como en, encontrará que su equipo ahorrará tiempo al lidiar con su Capa de interfaz de usuario Si la mayoría de su código es lógica de negocios, no ayudará mucho.
Hacemos servicios de infraestructura (recuperación de datos y almacenamiento) y pequeñas aplicaciones de clientes inteligentes (principalmente informes sofisticados) para un banco comercial. Nuestro equipo es grande, 40 empleados contractuales impares que son programadores de C # .NET. Admitimos 50 aplicaciones y sistemas impares que hemos desarrollado.
Algunos miembros del equipo comenzaron a hacer aplicaciones basadas en WPF , WF y WCF . Dado que son los primeros, la mayoría de los miembros no comprenden estas tecnologías. ¿Qué beneficios transmiten que superarían el costo de reentrenar el equipo?
Creo que la palabra clave de tu pregunta original es "elegante". Si sus clientes realmente esperan mucho brillo en el producto final, entonces probablemente tenga algo que ganar al cambiar a WPF.
No estaba seguro al principio, la mayoría de las aplicaciones parecían bastante laggy (sin embargo, WinForms tampoco es muy rápido). Esto parece corregido con .NET 3.5 SP1, donde integraron la aceleración de hardware para una serie de técnicas.
Las capacidades integradas de animación / storyboard / vector son muy buenas y un paso en la dirección correcta. Si adhiere Expression Blend, podrá crear prototipos de aplicaciones con bastante rapidez. Estos son claros beneficios en mi opinión.
A largo plazo, no creo que WinForms y las técnicas más antiguas sean una opción sostenible.
También está Adobe Flex, Adobe / Macromedia tiene experiencia en soluciones GUI más potentes y ''emocionantes'' debido a su experiencia con Flash.
Solo espero que no terminemos con 10 VM diferentes instaladas en una PC de escritorio solo para ejecutar todos esos marcos diferentes ...
re:
informes sofisticados
la fantasía es probablemente una de las fortalezas de WPF ...
Estamos terminando un proyecto en el que yo y otras 4 personas desarrollamos una aplicación empresarial distribuida bastante exitosa. Comenzamos a usar Win32 y luego cambiamos a WPF después de la primera iteración para cumplir con las demandas de nuestro experto en usabilidad. Aquí está mi experiencia.
WPF tiene algunas características realmente muy buenas. En general, hace que las cosas realmente difíciles sean triviales (como crear listboxes que muestren datos de presentación enriquecidos, como imágenes mezcladas con tablas, copiar, etc.), pero a su vez puede hacer que "esto solía ser tan fácil en Win32". dolorosamente frustrante. He estado trabajando en WPF durante 6 meses, y todavía encuentro una combinación de datos y un cuadro combinado para un proveedor de datos XML una experiencia temida.
Como he eludido anteriormente, WPF tiene una gran unión no tan grande. Me encanta cómo puedes vincular un documento XML o un fragmento en línea con XPath , pero odio cómo puedes usar las validaciones de enlace integradas si tu enlace es bidireccional (y odio doblemente cómo no puedes forzar el validaciones de enlace integradas para pasar la entrada del usuario de vuelta al objeto, incluso si los datos quedan fuera del rango de alguna regla de negocios).
WPF tiene una gran curva de aprendizaje. Ni siquiera es una curva, es una pared. Es un ir rudo Es una forma completamente diferente de trabajar con la presentación de Windows y, para mí, de todos modos, requería mucha lectura y reproducción antes de comenzar a sentirme algo cómodo. No es la cosa más fácil del mundo, pero te permite hacer cosas increíblemente poderosas (por ejemplo, en nuestro proyecto creé un motor de formularios que crea formularios XAML completos desde XML usando alrededor de 300 líneas de XSLT , completo con enlace y validación completos )
En general, estoy extremadamente satisfecho de que hayamos elegido XAML, a pesar de la curva de aprendizaje, la naturaleza algo problemática de todo, y algunas de las profundas frustraciones. Los aspectos positivos han superado con creces los negativos y nos permitieron hacer cosas que no creía posibles sin un impacto enormemente fuerte en el rendimiento.
Si decides seguir la ruta de WPF, recomendaría estos 2 libros:
Windows Presentation Foundation Unleashed, de Adam Nathan es una gran introducción, ¡a todo color! Se lee como un blog y te ofrece una excelente introducción: http://www.amazon.ca/Windows-Presentation-Foundation-Unleashed-WPF/dp/0672328917/ref=pd_ys_iyr3
Programación de WPF: construcción de Windows Ui con Windows Presentation Foundation, por Chris Sells. Más detalles y un excelente libro para acompañar al WPF Unleashed - http://www.amazon.co.uk/Programming-WPF-Building-Presentation-Foundation/dp/0596510373
¡Buena suerte!
WPF es el "estado del arte" actual en las metodologías de UI. Si hubiera estado disponible ya que la gente estaba aprendiendo a escribir UI (en lugar de GDI, Win32 y, posteriormente, WinForms, que es relativamente similar), no tardaría tanto en aprenderlo. Probablemente pueda considerarlo como cambiar a un teclado Dvorak: la parte más difícil es cambiar su forma de pensar sobre las partes del diseño de la interfaz de usuario que cree que conoce bien.
Dicho esto, al menos debería alentar a los miembros de su equipo a experimentar con WPF en su tiempo libre. Haga que los recursos estén disponibles desde el principio, tal vez por lo siguiente:
- Tenga enlaces a páginas que cuenten sobre lo que necesita tener instalado para trabajar con WPF; si no menciona Blend, entonces no confiaría en él.
- Mire aquí las preguntas para "comenzar", ya que probablemente tengan buenas respuestas de individuos con experiencia.
- Compre al menos algunos buenos libros y deje que la gente los preste si lo desea.
WPF es radicalmente diferente de Windows Forms. Esto significa mucho entrenamiento para su equipo.
WPF es un enfoque muy nuevo para diseñar UI. El único problema es que introduce una gran cantidad de conceptos, algunos de ellos solo para ocultar la verbosidad de XAML (XML). También sufre un poco de un enfoque de arquitectura astronauta al diseño, pero en general estoy bastante contento con él. Hace cosas que antes no habrías dicho que no, en algo que es manejable hacer.
WPF te permite hacer cosas increíbles, y ME ENCANTA ... pero siempre me siento obligado a calificar mis recomendaciones, siempre que los desarrolladores me pregunten si creo que deberían cambiar a la nueva tecnología.
¿Sus desarrolladores están dispuestos (preferiblemente, EAGER) a dedicar el tiempo necesario para aprender a usar WPF de manera efectiva? Nunca hubiera pensado decir esto sobre MFC o Windows Forms, o incluso DirectX no administrado, pero probablemente NO quieras que un equipo intente "recoger" WPF a lo largo de un desarrollo normal. ciclo para un producto de envío!
Al menos uno o dos de sus desarrolladores tienen sensibilidades de diseño, y las personas con autoridad final de diseño tienen una comprensión decente de los problemas de desarrollo, por lo que puede aprovechar las capacidades de WPF para crear algo que es realmente MEJOR, en lugar de simplemente "colorido" , presentando animación gratuita?
¿Algún porcentaje de su base de clientes objetivo se ejecuta en conjuntos integrados de chips gráficos que podrían no ser compatibles con las características que estaba planeando, o siguen ejecutando Windows 2000, lo que los eliminaría como clientes por completo? Algunas personas también preguntan si a sus clientes realmente les PREOCUPAN las imágenes mejoradas pero, habiendo vivido los debates internos de la empresa "Nuestros clientes comerciales no les importan los colores y las imágenes" a principios de la década de 1990, sé que las soluciones bien diseñadas de sus competidores HAGA que se preocupen, y la verdadera pregunta es si las condiciones son las adecuadas, para permitirle ofrecer algo que les haga preocuparse AHORA.
¿Implica el proyecto un desarrollo a fondo, al menos para la capa de presentación, para evitar la complejidad adicional de intentar engancharse en andamios heredados incompatibles (la interoperabilidad con Windows Forms NO es perfecta)?
¿Puede su gerente aceptar (o distraerse) una DROP significativa en la productividad del desarrollador durante cuatro a seis meses?
Este último problema se debe a lo que me gusta pensar de la naturaleza "FizzBin" de WPF, con diez formas diferentes de implementar cualquier tarea, y sin una razón aparente para preferir un enfoque a otro, y poca orientación disponible para ayudarlo a hacer una elección. No solo quedarán claras las deficiencias de la elección que elija hasta mucho más adelante en el proyecto, sino que está virtualmente garantizado que cada desarrollador de su proyecto adoptará un enfoque diferente, lo que resultará en un gran dolor de cabeza para el mantenimiento. Lo más frustrante de todo son las inconsistencias que constantemente te hacen tropezar, mientras intentas aprender el marco.
Puede encontrar información más detallada relacionada con WPF en una entrada de mi blog:
WPF:
- ¡Todo se trata de gráficos!
- Es un marco independiente de la resolución (es decir, WPF ha adoptado completamente el concepto de gráficos vectoriales) y también ha convertido el escalado de los gráficos de mapa de bits en un proceso irreflexivo.
- Es hardware acelerado !!!! Los gráficos WPF son acelerados por hardware donde sea posible a través de Direct3D , ¡NO está basado en GDI !
- No tiene función
Paint()
- WPF se basa en un sistema de dibujo basado en árbol / modo gráfico retenido. ¡Finalmente! - Es muy gráficamente dinámico, todo se puede animar y la animación está integrada en el marco. Recuerda ... ¡no hay
Paint()
! - Es extremadamente personalizable, aunque entrar en la esencia de
ControlTemplates
es donde comienza la complicación. Simplemente agrega objetos al árbol de visualización y deja que WPF se preocupe por las actualizaciones. - Es muy rico en funciones de representación de texto.
- Se espera que mejore el flujo de trabajo del diseñador / codificador con el uso de un lenguaje declarativo ( XAML ) para definiciones gráficas y un software complejo de diseño de GUI ( Expression Blend ). Aunque es importante darse cuenta de que todo lo que se puede hacer de manera declarativa también se puede lograr en el código. Y también es discutible que la complejidad de WPF haya asustado a muchos diseñadores, pero ha puesto un poderoso marco en manos de codificadores.
WPF:
- NO es Windows Forms ++ - es solo un concepto completamente diferente en conjunto
- NO es Silverlight - Silverlight es un subconjunto de WPF. Muy un subconjunto de luz.
- NO es MFC - OK, esto debería ser obvio
- No es fácilmente distribuible con Windows XP: es una pena y quizás una de sus fallas más grandes
- No es XAML. Esta distinción debe ser entendida. XAML es un lenguaje declarativo opcional que se puede usar en el proceso de desarrollo de las aplicaciones de WPF. No es en absoluto un componente necesario, aunque una vez entendido, definitivamente mejora el flujo de trabajo, el diseño y la refactorización de marcos gráficos complejos.