2010-01-06 18 views
5

Mi organización está considerando qué tecnologías usar para nuestra próxima generación de sistemas. Usaremos .NET, pero no hemos decidido qué tecnología de interfaz de usuario es la mejor. Silverlight y WPF parecen ser las opciones más apropiadas. ¿Alguien puede compartir los pros y los contras de cada enfoque?Silverlight vs WPF

+0

Consulte esta pregunta: http://stackoverflow.com/questions/944608/wpf-vs-silverlight –

+0

Gracias Meta - que no apareció en los dups sugeridos por alguna razón –

Respuesta

7

Como menciona Gabriel (y Reed), Silverlight es una versión reducida de WPF.

WPF está destinado principalmente para aplicaciones de escritorio, y tiene funciones avanzadas en diseño, animación y enlace de datos que Silverlight aún no posee. WPF se puede entregar a través de un navegador, pero no se ejecuta como un complemento del navegador, por lo que no puede interactuar con ningún otro contenido en el navegador. Es posible crear aplicaciones WPF que alojen controles y ventanas de WinForms; esto puede facilitar la transición de una cartera de código WinForms existente (si eso le interesa). WPF también tiene capacidades 3D más sofisticadas que Silverlight, aunque no por mucho.

Siverlight, está disponible en múltiples plataformas (como Linux y OSX) a través del tiempo de ejecución Mono y el puerto Moonlight de Silverlight. La luz plateada puede ejecutarse como una aplicación independiente o dentro de un entorno de navegador, lo que permite crear aplicaciones basadas en web. Cuando se ejecuta como un complemento basado en navegador, una aplicación de Silverlight puede interactuar con el contenido en el navegador y se puede mostrar junto con HTML. También puede manipular una aplicación de Silverlight usando JavaScript, creando un entorno de programación casi perfecto. Existen algunas limitaciones en las aplicaciones de Silverlight: por ejemplo, las llamadas WCF son todas asincrónicas (debido al modelo de subprocesamiento de Silverlight/navegador). Además, no todos los SDK de .NET Framework están disponibles para las aplicaciones de Silverlight.

Ambas tecnologías son muy similares en el sentido de que usan una combinación de marcado y código para ofrecer funcionalidad. Para elegir entre ellos, debe decidir si está compilando una aplicación basada en navegador o independiente, si desea ser portátil a otras plataformas y si necesita el conjunto completo de bibliotecas disponibles en .NET.

En el frente de herramientas de desarrollo, la mejor herramienta que existe IMHO es Expression Blend, tiene una interfaz de usuario elegante y poderosa para crear visualmente las interfaces de usuario WPF o Silverlight. También se integra con Visual Studio, que sigue siendo un entorno de desarrollo superior (Blend tiene funciones de edición de código limitadas). También hay herramientas como Expression Design y Expression Encoder para ayudar a crear gráficos y manipular video para su uso en aplicaciones WPF y Silveright.

3

Silverlight es un subconjunto de WPF que se utiliza en el complemento del navegador Silverlight. Ambos son buenos, pero debes decidir si terminarás con una aplicación basada en web o en Windows.

Silverlight no tiene todas las capacidades que WPF tiene (en parte por razones de seguridad: se usa en el navegador). Con Silverlight, sin embargo, tiene acceso a todas las demás ventajas de la aplicación basada en la web (ubicación única de actualización, etc. - JavaScript, CSS y HTML).

+3

SilverLight ahora también puede quedarse sin -browser –

7

Silverlight es mucho menos capaz que WPF, incluso en la versión 4.

Puede funcionar en un navegador o fuera del navegador, y tiene algunas ventajas - pero las principales ventajas de Silverlight más de WPF son de implementación relacionados. Es muy fácil implementar una aplicación de Silverlight: solo consulte el XAP en una página web ubicada en su servidor, y se implementa (siempre que sus usuarios tengan instalado Silverlight). WPF requiere un poco más de trabajo en términos de implementación, ya que es una aplicación de escritorio completa.

Habiendo dicho eso, WPF proporciona muchas más capacidades. Proporciona acceso al marco .NET completo (a diferencia de un subconjunto [creciente]).

Mi preferencia personal sería utilizar Silverlight, siempre que la aplicación no requiera interoperabilidad con software heredado, acceso a recursos en el sistema u otras cosas no disponibles en Silverlight. Sin embargo, si necesita hacer algo que gravará el sistema (es decir, computación pesada donde desee paralelismo, uso de recursos gráficos, trabajo 3D complejo, etc.), entonces WPF es el camino a seguir.

+0

Gracias Reed. Me imagino que algunas de esas funciones no disponibles (como la interoperabilidad) podrían lograrse con SilverLight mediante el uso de WCF. –

+1

En realidad, no está usando Silverlight; lo movería a otra aplicación. En SL4, puede usar el alojamiento COM (fuera del navegador solamente) para lograr algo de esto, pero en ese punto, WPF es simplemente más agradable para trabajar. Si quieres una sola aplicación y necesitas interoperabilidad, ve a WPF ... –