Estoy en la fase de planificación inicial de un proyecto de reescritura y estoy decidiendo entre silverlight / silverlight oob / wpf. TL; DR al final.
Es una aplicación LOB que maneja calendarios de clientes potenciales / clientes / citas. No muy complicado Estoy investigando de forma independiente estas opciones en otro lugar, pero pensé en preguntar. Algunos requisitos iniciales aproximados / problemas previsibles son:
Tengo que poder llamar a un exe en el sistema con argumentos de línea de comandos (teléfono sip).
Hace SL un problema
La base de usuarios se distribuye y quiero limitar el tráfico que pasa por el cable tanto como sea posible y evitar algunos problemas desagradables de concurrencia.
Puedo ver que esto es un problema usando WPF
La implementación / actualización de software tiene que ser muy simple . Algunos usuarios son altamente no técnicos (ver: 70 años, en una computadora por primera vez)
Este no es un gran problema ahora con la aplicación ClickOnce que estamos reemplazando, y tengo control sobre las máquinas en las que se usa. Sin embargo, es más simple para los usuarios si ni siquiera tienen que hacer clic en el botón "Instalar". No sé cómo se maneja esto con Silverlight OOB.
La compañía está planeando una expansión dura en 12 meses, por lo que la implementación de hardware debería ser rápida / fácil. La idea es obtener una conexión a Internet en una nueva ubicación, conectar algunas computadoras y poder trabajar sin la necesidad de personal de TI dedicado o configuración del servidor.
Hace que SL sea atractivo
La integración con otros servicios (software financiero, servidor asterix) no es un objetivo inmediato, pero es un objetivo eventual ser parte del sistema. Esto se hace mucho más simple / más eficiente si un solo servicio está configurado para integrarse con esos servicios secundarios y no tiene que transferir todos esos datos a través del cable
Hace que SL sea atractivo
Hacer múltiples 'versiones' está fuera de la ventana. No sé cómo es mantener una versión Silverlight + Silverlight Oob (si hay algún problema)
Podría hacer que WPF sea una mejor opción.
TL; DR: desde mi punto de vista, una aplicación de Silverlight tiene el mejor sentido para el 90% de los usuarios: el otro 10% no puede usarla porque necesitan ejecutar un exe. Silverlight OOB podría ser un término medio feliz, pero no sé por el momento cómo es el modelo de ejecución (¿todavía hay un concepto de código del lado del servidor? Si es así, posiblemente sería ideal) y no saber cómo funciona la implementación / actualización.
fuente
Respuestas:
Bueno, un problema interesante. Olvidó mencionar que puede tener una aplicación de confianza completa de Silverlight a partir de SL4, por lo que si está pensando en WPF es posible que desee considerar eso en su lugar. Necesitaría instalar (ClickOnce), pero parece que se está alejando de eso.
Todavía no he hecho nada con OOB, pero estoy bastante seguro de que el mismo binario se puede usar tanto en broswer como fuera del navegador, ya que es una configuración de proyecto en lugar de un objetivo de compilación separado.
en la pestaña Silverlight del proyecto Silverlight.
Por lo tanto, no habría problemas de mantenimiento por separado allí.
Puede crear una buena cantidad de código en la aplicación web que aloja la aplicación Silverlight y comunicarse mediante los Servicios WCF RIA; nuevamente, tendría que usar .NET 4 y SL 4 para obtener la versión 1.0 de esto. .NET 3.5 y SL 4 solo admiten la versión beta de los servicios WCF RIA. Esto reduciría a) el tamaño de la descarga yb) la cantidad de código que tendría que ejecutarse en el cliente pero aumentaría el tráfico de red.
En ese puntaje, puede dividir su código de Silverlight en varios ensamblajes y usar algo como Prism los configurará para cargar a demanda. Esto significa que el usuario solo descarga aquellas partes de la aplicación que realmente está utilizando. Puede reducir aún más la cantidad descargada marcando el
opción.
Si tiene un archivo "extmap" para combinar con archivos dlls externos (de terceros o .NET), esto significa que se agrupan en un archivo zip y se descargan por separado para compartirlos en todos los archivos xap de su proyecto. Esto mantiene los archivos xap individuales a su tamaño mínimo y garantiza que solo tenga una copia de estos otros archivos DLL en la máquina cliente.
fuente
Tu análisis es muy bueno.
La única otra cosa que mencionaría es que no TODO el marco está disponible para usted en una aplicación Silverlight. Esa restricción PUEDE inclinar su elección hacia WPF, pero deberá ver cómo se aplica esa restricción o no a las necesidades de su aplicación.
fuente
Solo un par de cosas rápidas:
Implementación y "código del lado del servidor": una aplicación Silverlight es una aplicación del lado del cliente, simple y llanamente. No permita que el simple hecho de que se entregue a través del navegador lo confunda: cuando ejecuta una aplicación SL en el navegador, está descargando los ensamblajes para esa aplicación en un paquete comprimido, extrayéndolos y ejecutándolos usando el complemento. Silverlight por sí mismo no tiene noción de "código del lado del servidor": si desea que el código se ejecute en un servidor remoto, escriba un servicio WCF.
Actualización de la aplicación: este es un escenario común para las aplicaciones OOB y SL tiene soporte incorporado. Google alrededor para CheckAndDownloadUpdateAsync.
Editar: Olvidé mencionar que la instalación de la aplicación se realiza desde la aplicación. Por defecto, una aplicación SL instalable tendrá una acción de menú contextual para instalarla. Sin embargo, la instalación también se puede realizar mediante programación en respuesta al usuario haciendo clic en un botón. El estado de instalación también se puede detectar mediante programación, por lo que lo que he visto en algunas aplicaciones SL que solo están destinadas a ejecutar OOB es detectar primero si están instaladas. Si es así, ejecuta la aplicación. Si no, solo muestra una pantalla de bienvenida con un botón que instala la aplicación.
fuente