2009-10-07 9 views
9

Recientemente comencé a usar WCF, y quedé muy impresionado, tanto, que estoy pensando en obtener más en WPF, pero mis experiencias iniciales con XAML no fueron tan buenas, hace aproximadamente 1 año.¿Cuáles son los principales beneficios de ingresar a WPF?

Han mejorado las cosas, es la entrega verdaderamente independiente del navegador (puede ejecutarse en buscadores que no sean IE).

¿Se ha aumentado la productividad de desarrollo, mejor separación de códigos/ui? ¿Requiere aprender Silverlight?

Si ha tenido experiencia real con WPF, indique los pro y los contras.

+0

¿Estás preguntando específicamente sobre Silverlight? ¿O sobre XBAP? o también aplicaciones de escritorio WPF? –

+0

WPF no es para el navegador, es para el escritorio, Silverlight se ejecuta en el navegador, ambos usan XAML para la interfaz de usuario. – CSharpAtl

Respuesta

12

Primero:

WPF es 100% independiente del navegador, ya que WPF no se ejecuta en el navegador.

XBAP (ahora obsoleto) y Silverlight se ejecutan en el navegador, pero ambos son subconjuntos de WPF.

Segundo:

El mayor beneficio de WPF es la naturaleza jerárquica de las estructuras de interfaz gráfica de usuario que puede crear. Si alguna vez has hecho la programación ASP.NET, WPF es un movimiento más natural que WinForms.

La vinculación de datos en WPF es diferente, pero mejor, IMO.

Conclusión: XAML y sus complejidades son una gran curva de aprendizaje, y WPF y XAML van de la mano. Pero una vez que comprenda los conceptos básicos y pueda comenzar a construir GUI básicas con él, nunca querrá usar WinForms nuevamente.

En cuanto a los pros y los contras, diría que el único real con con WPF es la gran curva de aprendizaje. Puede hacer todo lo que WinForms puede hacer desde una perspectiva .NET, y es más fácil de usar (una vez que lo comprende) que WinForms. El único lugar donde podría "faltar" es la manipulación directa de GDI +, pero es probable que desee evitar eso siempre que sea posible. Si es necesario en un proyecto de WPF, simplemente cree un control de WinForms y recíbalo en WPF. No es la solución más elegante, pero puede hacer el trabajo.

+0

Entonces, ¿esto reemplaza a las clásicas interfaces winform? Y todo esto se puede hacer con VS2008? –

+0

@JL: Sí. Aunque todavía puedes hacer las interfaces de "gris pardo" con WPF (y es muy fácil, IMO) puedes hacer mucho, mucho más. Además, obtiene una importante separación de preocupaciones integradas en la estructura de WPF, algo que no obtendrá con WinForms. – Randolpho

2

Bueno, tengo experiencia real con WPF, pero no con WinForms. Llevo 8 meses usando WPF, y me resulta divertido, fácil de aprender, difícil de dominar. La vinculación, comandos & estilos que son las características más básicas de WPF IMO, son realmente fáciles de aprender y de usar. Sé que los comandos y el estilo no estaban presentes en WinForms, el enlace era, pero como dijo Randolpho, era diferente.

También WPF usa DirectX para dibujar sus gráficos ahora GDI o GDI +, que también le da mucha más flexibilidad para dibujar gráficos 2D avanzados o incluso gráficos 3D. Además, dado que se encuentra en la parte superior de DirectX, la GPU se utiliza para dibujar todos los gráficos en lugar de la CPU (como GDI), por lo que de alguna manera, está utilizando menos potencia de procesamiento de la CPU.

+0

+1 por mencionar DirectX en lugar de GDI. WPF no utiliza GDI/+ en absoluto, mientras que WinForms engloba GDI/+. – Randolpho

+0

Gracias, creo que es una diferencia fundamental de WinForms, intente hacer un renderizado 3D con WinForms = P lol – Carlo

+0

Definitivamente una diferencia principal. Pero no necesariamente para renderizado en 3D; más para dibujo basado en * vector *. WPF es aún mejor utilizando renderización 2D a través de DirectDraw, etc. – Randolpho

4

Si está haciendo un desarrollo en el navegador, probablemente quiera usar Silverlight. Es similar a WPF, pero independiente del navegador, y gana mucha tracción en términos de uso, así como mucha atención de Microsoft. (Por ejemplo, los nuevos servicios de RIA son bastante buenos, para aplicaciones comerciales).

Tanto WPF como Silverlight ofrecen muchos de los mismos beneficios en comparación con las tecnologías más antiguas para el desarrollo de la interfaz de usuario, como Windows Forms.

  • La unión de datos en WPF y Silverlight es muy potente y muy flexible. Esto puede acelerar el desarrollo y proporcionar un nivel de seguridad que antes era difícil de crear.
  • El desarrollo de la interfaz de usuario, aunque diferente, es mucho más flexible. La separación de la presentación del comportamiento en WPF y Silverlight hace que sea muy fácil crear código de UI muy personalizado, muy rápidamente.
  • La nueva interfaz de comando, junto con DataTemplates, permite un desarrollo mucho más fácil de una manera que es muy flexible, comprobable y mantenible (utilizando el patrón MVVM).

Todo esto conduce a un desarrollo a largo plazo mucho más agradable, una vez que superas la curva de aprendizaje, en mi opinión.

4

Contras

  1. WPF no es tan fácil de aprender.

  2. WPF es aún joven. Para dar un ejemplo: Para usar un control de cuadrícula de datos, debe descargar el kit de herramientas WPF no compatible. Silverlight 3 ahora es compatible con la red de datos de forma nativa y estoy bastante seguro de que VS 2010 tendrá la cuadrícula de datos incorporada en WPF. Pero lleva tiempo madurar.

  3. Como con cualquier tecnología, no confíe siempre en las muestras. He visto algunos XAML bastante malo en la naturaleza (incluso de Microsoft).

Pros

  1. La interfaz de usuario se expresa de forma declarativa como una jerarquía de objetos representados en XAML lugar en un diseñador visual que sólo permite la interacción a través del ratón. (Visual Studio y Expression Blend también tienen un diseñador visual que funciona sobre XAML.)

  2. Componer controles en paneles de diseño flexibles y extraer recursos de diccionarios le permite crear interfaces de usuario fluidas y coherentes. Además de esto, agregue un gran soporte para elementos gráficos como dibujos vectoriales, degradados de colores, transparencia y agregue a esta mezcla de animaciones y usted tiene las herramientas para crear una experiencia de usuario realmente deslumbrante (o una muy horrible si no sabe lo que están haciendo.)

  3. Los controles se componen de diseño y comportamiento. Puede reemplazar completamente el diseño y aún conservar el comportamiento. Esto es mucho más avanzado que un botón dibujado por el propietario o un cuadro de lista con imágenes.

  4. El sólido soporte para el enlace de datos facilita la separación de la lógica de la aplicación en capas manejables. Nunca más tendrá que alternar un bit de interfaz de usuario dentro de un objeto de modelo de dominio.

  5. El modelo de representación en WPF no es el modelo GDI donde se llama a su método OnPaint para pintar un área particular de la ventana. En su lugar, agrega elementos a un gráfico de escena (normalmente expresado en XAML) que luego se representa con DirectX. En muchos sentidos, este es un modelo mucho mejor.

Estoy impresionado por el diseño general de WPF, y en mi opinión los diseñadores de WPF son gente muy inteligente que han hecho un gran trabajo. Pero trabajar con WPF puede ser una experiencia frustrante ya sea porque no has encontrado la solución "adecuada" para tu problema o porque algunos aspectos de WPF simplemente son molestos (como cuando quieres personalizar una pequeña parte de un built-in control y de repente se enfrentan a la modificación de una plantilla de control colosal).

Como ya sabrá, WPF ya no es Silverlight. Más bien, Silverlight es una versión "ligera" de WPF en el navegador. Como Silverlight es algo menos complejo, en realidad es un muy buen punto de partida para obtener algo de experiencia XAML si no le importa escribir una aplicación de navegador de espacio aislado en lugar de una aplicación de escritorio.

Cuestiones relacionadas