c# .net wpf silverlight

c# - Silverlight, Wpf Web App(xbap) o haga clic una vez? Pros y contras



.net (10)

Estamos comenzando un nuevo proyecto y estoy tratando de decidir qué estrategias de desarrollo / implementación de Wpf-esque debemos implementar. En nuestro caso, estamos viendo una aplicación de negocios bastante compleja que será utilizada por cientos de personas (no por miles), por lo que me inclino por una aplicación de solo clic. A mi jefe le gusta la idea de una aplicación Silverlight ya que significa una implementación más fácil. Entonces, ¿qué camino deberíamos saltar?

La respuesta es, por supuesto, "depende". Entonces, ¿cuáles son los pros y los contras de cada uno?

Comenzaré a rodar la pelota ( Editar Agregado en algunas respuestas de artur carvalho ):

Silverlight

  • Pros

Navegador cruzado
No requiere un marco completo.
Mejor control de los usuarios. Si tus usuarios inician sesión, no tienes que preocuparte por las claves de activación o cosas similares.
Funciona en Windows y Mac.
Puedes actualizar fácilmente todas las aplicaciones de tus usuarios.

  • Contras

No puede interactuar con el sistema de archivos del cliente, etc.
Tiene menos funcionalidad en comparación con Wpf completo (¿alguien tiene un buen recurso que documenta las diferencias?)
Ventana individual
Versión individual

Aplicación Wpf Web (xbap)

  • Pros

Wpf completo

  • Contras

Un navegador
Requiere marco completo
No puede interactuar con el sistema de archivos del cliente, etc.
Ventana individual
Versión individual

Wpf Haz clic una vez

  • Pros

Wpf completo
Puede trabajar sin conexión
Ventanas múltiples
Múltiples versiones (con?)
Mejor acceso a partes de bajo nivel de la computadora
Sin tiempo de inactividad para el mantenimiento

  • Contras

Un navegador
Requiere marco completo
Ligeramente (?) Más difícil de instalar.


Consideraría WPF ClickOnce con soporte de marco de sincronización ( www.msdn.com/sync ). Esto le permitiría respaldar una funcionalidad limitada cuando el usuario no está conectado a la red corporativa (lo que eliminará cualquier escenario de implementación basado en navegador, como Silverlight y XBAP).


Los profesionales

  1. El plugin de Silverlight significa que los desarrolladores pueden apuntar a un único tiempo de ejecución consistente para aplicaciones basadas en navegador, en lugar de lidiar con la complejidad de múltiples navegadores en diferentes versiones. También obtienes efectos de video y multimedia que son difíciles o imposibles con HTML puro y JavaScript, aunque Adobe Systems ''Flash tiene las mismas ventajas.
  2. Ejecute código .NET sin desplegar el tiempo de ejecución de .NET. El complemento de Silverlight incluye un tiempo de ejecución .NET reducido, pero en lugar de tener que lidiar con una gran descarga y las complejidades del instalador de Windows, el usuario tiene una pequeña descarga de aproximadamente 4MB, todo dentro del navegador. En mi experiencia hasta ahora, la instalación es suave y fácil.
  3. El desempeño es prometedor Silverlight sale bien en esta calculadora de números primos, gracias sin duda a la compilación de JIT con código nativo, aunque no se puede comparar tan bien con la representación de gráficos.
  4. El soporte para Moonlight significa que habrá una implementación oficial de código abierto de Silverlight, mitigando el aspecto de propiedad.
  5. Silverlight interpreta directamente XAML, mientras que el lenguaje XML GUI de Adobe, MXML, se convierte a SWF en el momento de la compilación. De hecho, las páginas XAML se incluyen como recursos en el binario .XAP compilado utilizado para implementar aplicaciones de Silverlight. Un archivo .XAP es simplemente un ZIP con una extensión diferente. Esto también significa que los motores de búsqueda pueden indexar el texto dentro de una aplicación de Silverlight, tal como lo hacen con Flash.
  6. Los proveedores de componentes de terceros ya conocen bien los complementos de Silverlight. Por ejemplo, Infragistics, ComponentOne y DevExpress.
  7. Tome su código .NET multiplataforma. Con los Mac apareciendo en todas partes, la capacidad de migrar el código de Visual Basic o C # a un cliente de Silverlight multiplataforma basado en navegador será cada vez más útil. Claramente esto solo se aplica a los desarrolladores de .NET existentes: supongo que este es el principal mercado para Silverlight, pero es uno grande. Lo mismo se aplica al siguiente punto:
  8. Utiliza Visual Studio. El IDE de Microsoft es un entorno de desarrollo maduro y popular, y dado que también es la herramienta para ASP.NET, puede usarlo para el código del lado del servidor, así como para el cliente de Silverlight. Para aquellos que no se llevan bien con Visual Studio, el SDK de Silverlight también es compatible con la compilación de la línea de comandos.
  9. Elige tu idioma. El soporte para múltiples idiomas ha sido parte de .NET desde sus inicios, y tener el tiempo de ejecución .NET en Silverlight 2.0 significa que usted puede codificar su lógica del lado del cliente en C #, Visual Basic o gracias a Dynamic Language Runtime (DLR) Iron Ruby o Iron Python.
  10. El almacenamiento aislado proporciona a las aplicaciones de Silverlight acceso local a los archivos, pero solo en una ubicación protegida específica para la aplicación, lo que proporciona una forma relativamente segura de obtener este beneficio.

Los contras

  1. Si Apple ni siquiera permite Flash en el iPhone, ¿qué posibilidades hay para Silverlight?
  2. Silverlight llega tarde al juego. Flash es maduro, confiable y omnipresente. Silverlight 2 solo sale de beta en el otoño (esperamos). Es la versión que nos importa -la que incluye el tiempo de ejecución de .NET- y aún no contará con soporte en dispositivos móviles, incluso en Windows Mobile, aunque esto se promete en una fecha posterior no especificada.
  3. Las herramientas de diseño son Expression Blend y Expression Design, pero ¿quién las usa? El mundo del diseño usa Adobe PhotoShop.
  4. Si bien la compatibilidad de la solución entre Expression Blend y Visual Studio suena bien, en realidad es una molestia tener que usar dos herramientas separadas, especialmente cuando existen incompatibilidades molestas, como en la versión beta actual.
  5. No hay soporte para el popular códec de video H.264. En cambio, el video de alta definición para Silverlight debe estar en VC-1, que es menos común.
  6. Es otro esfuerzo para promover tecnología propietaria en lugar de estándares abiertos.
  7. Sí Linux será compatible con Moonlight, pero ¿cuándo? Parece probable que la implementación de Linux siempre se quede atrás de las versiones de Windows y Mac.
  8. Silverlight admite los servicios web SOAP, o REST siempre que no utilice PUT o DELETE, pero no tiene un protocolo binario optimizado como el formato de mensaje de ActionScript (AMF) de Adobe, que probablemente signifique un rendimiento más lento en algunos escenarios.
  9. Silverlight es una solución solo de navegador, mientras que Flash se puede implementar para el escritorio utilizando Adobe Integrated Runtime (AIR). Habiendo dicho eso, sí, he visto esto.
  10. Tienes que desarrollar en Windows. Esto es particularmente un problema para las herramientas de diseño Expression, ya que los diseñadores tienen un número desproporcionadamente alto de Macs.

Mark, ¿qué quieres decir con "navegador único" para XBAP? XBAP funciona con Firefox, por ejemplo. De hecho, requiere .NET Framework y es poco probable que tengamos WPF en Mono en cualquier lugar pronto (si es que lo hace), por lo que está atascado con Windows, eso es correcto.


No dijo si esta es una aplicación solo de la empresa o una pública. Solo eso lo decidirá por ti.

Si es solo una empresa, me gustaría hacer clic completo en WPF una vez. Esto te dará todo. El marco completo no debería ser un problema. Se trata de una instalación de una sola vez que se ejecuta en segundo plano, por lo que no depende de su decisión. Contras: solo se ejecuta en Windows, pero si su empresa es solo Windows, esto no debería ser un problema.

Sin embargo, las aplicaciones WPF podrían tener muchos recursos, por lo que debe saber si todas las máquinas cliente son capaces de ejecutar las aplicaciones WPF sin problemas.

Si se trata de una aplicación de Internet, vaya a Silverlight: se ejecuta en diferentes sistemas operativos.



Primero, evaluaría si un cliente web (idealmente MVC + jQuery) no puede hacer el trabajo ...

Suponiendo que un cliente completo está garantizado:

Si es una aplicación de negocios que exige un cliente, yo tendería a usar el framework completo y ClickOnce; la principal diferencia aquí (re deployment) es que el cliente debe tener el marco instalado, pero después de eso, la implementación de ClickOnce es muy fácil de usar. En realidad, construir un manifiesto ClickOnce es mucho más fácil que Silverlight, etc., ya que el IDE hará casi todo por ti; solo tiene que alojar los archivos en algún lugar (podría ser una URL web, podría ser una red UNC).

Esto le da mucho más control (y potencia) al cliente, así como una gama mucho mayor de recursos existentes para usar (por ejemplo, si lo necesita, puede usar algún código heredado de winform en la superficie de WPF). El "requiere un marco completo" es también uno de los mayores beneficios: "tiene un marco completo".

También debería considerar la configuración de 3.5 "perfil de cliente"; no estoy seguro de cuán generalizado es esto en realidad ... pero vale la pena conocerlo.


Puede agregar los pros y los contras de las cosas habituales del debate en línea y fuera de línea. Algunas cosas:

Pros

wpf (fuera de línea):

  • mejor acceso a partes de bajo nivel de la computadora.
  • el uso de la CPU es local, por lo que rara vez tiene problemas de carga de la CPU.
  • no dependiente de la red.
  • sin tiempo de inactividad para el mantenimiento.

Silverlight (en línea):

  • Mejor control de los usuarios. Si tus usuarios inician sesión, no tienes que preocuparte por las claves de activación o cosas similares.
  • Funciona en Windows y Mac.
  • Puedes actualizar fácilmente todas las aplicaciones de tus usuarios.

Lo simplifiqué un poco, hay áreas grises en la lista. Solo jugué con XBAP, por lo que dejaré de lado. Los contras no son difíciles de averiguar después de mirar a los profesionales.

HTH


Si no necesitas todo WPF, intentaré hacerlo primero en Silvelight. Luego puedes cambiar a WPF más fácilmente si lo necesitas más tarde.

Aquí creo que se aplica el principio de "menos es más": es cierto que con WPF tiene muchas más opciones y puede acceder a la computadora del usuario, pero eso finalmente puede ser más un problema que una ayuda según los tiempos. ¡Piense por ejemplo en cuántos cambios puede necesitar cambiar de Windows XP a Vista en una aplicación que utiliza muchos de los recursos de la "computadora de usuario"!


1. Silverlight puede acceder al DOM desde la página de alojamiento y
2. la página de alojamiento puede acceder a la parte de Silverlight.
Eso es un gran + para Silverlight

Pero todas las demás limitaciones lloran por WPF / Windows-Forms con Clickonce
acceso a archivos, clic derecho del mouse, facilidad de acceso a bases de datos


PROs vs. ASP.NET Web Forms

  1. Sin ViewState o "sorpresa sorpresa" o Esto se aplica también a Silverlight. Silverlight brinda la experiencia de "escritorio" al usuario final y no hay ViewState que se use en Silverlight.
  2. Más rápido del lado del servidor y del lado del cliente o Silverlight es más rápido en el lado del cliente / servidor, dependiendo de cómo lo mire. Silverlight está compilado en un subsistema .NET de Silverlight. Tiene acceso a multithreading, LINQ, estructuras de datos complejas, etc. El rendimiento frente a una aplicación ASP.NET o AJAX / JavaScript es magnitudes mucho mejores debido a la ejecución del cliente y algunos de los elementos que normalmente se manejan en un servidor BLL. puede ser llevado al cliente
  3. Modelo simplificado para múltiples vistas relacionadas o Silverlight admite la separación completa de los datos y la IU. Llevar esto más lejos simplemente creando vistas separadas para decir que otro consumidor de Silverlight es bastante poderoso. Puede aplicar el mismo patrón MVC / MVP dentro de Silverlight y alcanzar este nivel de abstracción. Jason menciona un ejemplo de poder crear una vista separada para un iPhone y solo el componente Ver tiene que cambiar. Esto se aplica a Silverlight también para cosas diferentes. Por ejemplo, tengo una aplicación de Silverlight de gran tamaño que quiero exportar a SharePoint. Puedo crear una "Vista más pequeña" para SharePoint para que se adapte mejor a la interfaz de usuario. Además, Silverlight Mobile se está probando en privado ahora. Asumiría que también se aplica el mismo nivel de abstracción muy poderoso para crear una "Vista móvil" para su aplicación Silverlight.
  4. Unit Testable o Silverlight también incluye un marco de prueba unitaria. Se puede descargar aquí: http://code.msdn.microsoft.com/silverlightut/
  5. Desafíos si no está ejecutando IIS 7 o a Silverlight NO le importa si no se está ejecutando en IIS 6 o IIS 7 o Apache en ese caso. Esta es una característica donde Silverlight tiene una ventaja sobre ASP.NET MVC.
  6. Almacenamiento en memoria caché del cliente o En formularios web ASP.NET o MVC, está almacenando en caché el servidor. Silverlight le permite almacenar en caché al cliente a través de Almacenamiento aislado (que puede aumentarse a cientos de megas si es necesario). Esto permite que las aplicaciones funcionen de forma ultra rápida sin atascar el servidor de alojamiento.

CONs vs. ASP.NET Web Forms

  1. Difícil de convertir código existente o Silverlight es una plataforma de programación completamente diferente a ASP.NET WebForms o MVC. No solo una gran parte del código no se convertirá, sino que también debe pensar en la capa del cliente y, en la mayoría de los casos, se necesita una nueva arquitectura completa si reemplaza módulos grandes dentro de su sitio ASP.NET existente.
  2. NO el mejor SEO de Google Box hace varios meses comenzó a rastrear archivos SWF y agregarlos al motor de búsqueda. Creo que Silverlight probablemente aún esté lejos. Lo que puedes hacer por Silverlight SEO son los trucos básicos para describir las etiquetas de metadatos realmente bien alrededor del complemento.
  3. Acceso a los datos o El acceso a los datos en Silverlight está limitado a los servicios web / WCF / ADO.NET Data Services. No puede hacer llamadas directas a través de ADO.NET o procedimientos almacenados a una base de datos.
  4. Seguridad o Silverlight se ejecuta en el cliente. Muchos de tus bits están en itinerancia en Internet. Además, algunas de las técnicas de acceso a datos no son compatibles con la seguridad estándar completa de WS *. Por lo tanto, más allá de la seguridad de transporte basada en certificados, usted está escribiendo mucho su propio código de plomería o esperando la próxima revisión. El código XAML es bastante inseguro; no muchas aplicaciones tienen su propiedad intelectual en su UI. En Silverlight, eso se puede diseñar de forma muy sencilla mediante ingeniería inversa utilizando Silverlight Spy, por ejemplo. Silverlight, por naturaleza, es un poco menos seguro que una aplicación ASP.NET MVC. Obviamente, querría encriptar / ofuscar sus ensamblajes de Silverlight antes de dejarlos en libertad.