WPF contra Silverlight

Posible duplicado:
¿Cuál es la diferencia entre WPF y la aplicación Silverlight?

¿Cuáles son las diferencias exactas entre WPF y Silverlight?

Esa es una pregunta extremadamente amplia. Hace poco, mi compañía escribió un documento técnico que describe las diferencias entre las dos tecnologías, y tiene alrededor de 70 páginas. Lamentablemente, aún no se ha publicado, o te daré el enlace.

EDITAR: Tal como prometió, aquí está el enlace al documento técnico de Codeplex:

http://wpfslguidance.codeplex.com/

Sin embargo, intentaré resumir.

  1. WPF es una plataforma de cliente de Windows gruesa que tiene acceso al .Net Framework completo. Silverlight es una tecnología basada en navegador que tiene acceso a un subconjunto de .Net Framework (llamado CoreCLR). Entonces, notará diferencias usando métodos y objetos aparentemente todos los días dentro del marco. Por ejemplo, el método Split () en la clase String tiene 3 reemplazos en Silverlight, pero 6 en .Net Framework. Verás muchas diferencias como esta.

  2. Dentro de WPF, todos los elementos de representación visuales se derivan de la clase base Visual. Dentro de Silverlight, no; en cambio, derivan de Control. Ambas tecnologías, sin embargo, eventualmente derivan de la clase DependencyObject en la jerarquía.

  3. WPF, actualmente, envía o tiene disponibles más controles de usuario que Silverlight; aunque esta diferencia se está mitigando a través de Silverlight Toolkit y el próximo lanzamiento de Silverlight 3.

  4. WPF admite 3 tipos de eventos enrutados (directo, burbujeo y tunelización). Silverlight solo es compatible con burbujas directas y burbujeantes.

  5. Hay bastantes diferencias vinculantes de datos que serán un tanto mitigadas con la próxima versión de Silverlight. Actualmente, Silverlight no es compatible con el modo de enlace, OneWayToSource o Explict UpdateSourceTriggers. Además, Silverlight utiliza el enlace de datos OneWay si no está configurado, mientras que WPF usa el modo predeterminado especificado por la propiedad de dependencia.

  6. Silveright no es compatible con MultiBinding.

  7. Silverlight admite el XmlDataProvider pero no el ObjectDataProvider. WPF es compatible con ambos.

  8. Silverlight solo puede realizar llamadas de red asincrónicas. WPF tiene acceso a la stack completa de redes .Net y puede realizar cualquier tipo de llamada. Además, actualmente, Silverlight admite SOAP, pero no puede manejar excepciones de SOAP fault de forma nativa (esto puede cambiar en Silverlight 3).

  9. Existen grandes diferencias en Criptografía (Silverlight tiene 20 clases en el espacio de nombres, mientras que WPF tiene acceso a 107). Básicamente, Silverlight solo admite 4 algoritmos hash y el protocolo de cifrado AES.

  10. Silverlight aún no es compatible con: comandos, validación, impresión, documentos XPS, voz, 3D, objetos Freezable o InterOp con el escritorio de Windows; todos los cuales están disponibles en WPF.

  11. Silverlight admite la interoperabilidad del navegador, más opciones de transmisión de medios que incluyen marcadores de línea de tiempo y Zoom profundo. WPF aún no es compatible con estas características.

Esto de ninguna manera es completo ya que estaba tratando de reducir un documento de 70 páginas en viñetas.

Finalmente, incluso con todas estas diferencias, Microsoft está tratando de cerrar la brecha entre las dos tecnologías. Silverlight Toolkit y WPF Toolkit abordan algunas de las deficiencias de cada tecnología. Silverlight 3 agregará muchas funciones que no están actualmente disponibles (como el enlace de datos de elemento a elemento). Sin embargo, debido a las diferencias en las bibliotecas centrales, siempre habrá algunas diferencias de Marco.

WPF es una tecnología de escritorio de Windows para desarrollar aplicaciones de Windows en .Net framework.

Silverlight es una tecnología web, totalmente compatible con un complemento de navegador tanto en Windows como en MAC (de forma similar a Flash). También hay un complemento para ejecutar Silverlight en Linux (Moonlight).

Si bien hay similitudes entre la funcionalidad proporcionada por WPF y Silverlight (en términos de componentes de interfaz de usuario y soporte para XAML), Silverlight es un marco muy pequeño, que contiene un subconjunto de la funcionalidad de WPF. Las versiones más recientes de Silverlight en realidad contienen alguna funcionalidad que no se encuentra en WPF, por lo que ya no es un subconjunto verdadero.

Cosas que WPF tiene que Silverlight no: motor 3D completo basado en DirectX, integración con Windows, como miniaturas de la barra de tareas de Windows 7 y disponibilidad del registro del sistema, así como acceso al .NET Framework completo, incluido el soporte de la base de datos Oracle. Además, SL se ejecuta en un entorno seguro que impide el acceso a elementos tales como el sistema de archivos completo donde las aplicaciones WPF pueden ejecutar la plena confianza con acceso completo al sistema.

Como se mencionó anteriormente, SL fue pionera en algunas tecnologías como VisualStateManager, que están convirtiendo sus recursos de forma secundaria en WPF a través del kit de herramientas WPF de Microsoft.

Si está buscando evaluar qué tecnología es la adecuada para su proyecto, aquí hay una manera simple de verlo: si está escribiendo una aplicación que debe ejecutarse mientras está desconectada de la web, o si está escribiendo una aplicación que necesita El acceso a las funciones específicas de Windows como las enumeradas anteriormente, luego WPF es el camino a seguir. Para aplicaciones compatibles con la plataforma, habilitadas para la web, Silverlight es una opción adecuada. Hth.

Podría decir que es [MUY] similar a la diferencia entre Flex y Adobe Air, pero eso es algo engañoso.

WPF se refiere al conjunto de tecnologías (expuestas a través de API) a las que tienen acceso .NET Framework 3.0 y superiores para poder dibujar en la pantalla.

Muchas de las API de WPF están disponibles para las aplicaciones de Silverlight.

Hay, por supuesto, muchas otras API además de WPF que están disponibles bajo Silverlight ya que las aplicaciones de SL necesitarán hacer mucho más que simplemente dibujar en la pantalla.