Desarrollo de aplicaciones para dispositivos móviles con.net Programación de Sistemas Empotrados y Móviles (PSEM) Marco A. Peña marcoa@ac.upc.edu Índice de contenidos Escenarios Aplicaciones pcacoesweb móvil,thin Client Cet Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 2 1
Escenarios Aplicaciones Web móvil Aplicaciones cliente inteligente Aplicaciones multi-dispositivo difícil: Diferentes dimensiones Diferentes características Diferentes estándares Web Poca reutilización Diferentes plataformas Diferentes APIs Diferentes lenguajes Página Web Móvil Código Local Navegador Web del Dispositivo Sistema Operativo del Dispositivo Web móvil vs. Cliente inteligente Ventajas de apl. Web móvil Ventajas de apl. cliente inteligente Presentación adaptable Soporte dinámico de múltiples navegadores de dispositivos Soporte navegador en dispositivos bajo coste Código base único Mantenimiento simplificado Extensión natural de las apl. Web existentes Ejecución en servidor Sin instalación en cliente Sin ejecución en cliente Operativa off-line Ejecución Local Datos Locales IU enriquecido Multimedia IU elaborado Integración con elementos dispositivo Lectores tarjetas Lectores código barras Receptores GPS Telefonía / mensajería 2
Escenarios: con.net Controles Web Móviles ASP.NET Extensiones para Dispositivos Inteligentes Página Web Móvil Código Local Navegador Web del Dispositivo.NET Compact Framework Sistema Operativo del Dispositivo Web Móvil vs. Cliente inteligente Web móvil, Thin Client Aplicaciones basadas en tecnologías WEB En el dispositivo sólo se visualiza la interfaz (diseño limitado) No requieren instalación Toda la lógica de negocio está en el servidor Desarrollo con Visual Studio y ASP.NET Mobile Controls. Requieren conectividad permanente Cliente inteligente, Smart Client La aplicación se instala y se ejecuta en el dispositivo Tanto la interfaz como toda o parte de la lógica de negocio está en el dispositivo Permite el desarrollo de aplicaciones autónomas (standalone) 6 3
Herramientas de desarrollo Historia Pocket PC 2002 Smartphone 2002 2003 2003 Second Edition Windows Mobile 5.0 WinCE 3.0 WinCE 3.0 WinCE 4.0 WinCE 4.2 WinCE 5.0 evc 3 (C++) evb 3 (VB) Visual Studio.NET + SDE evc 3 (C++) evc 4 (C++) VS.NET 2003 (C#, VB.NET) evc 4 sp3 (C++) VS.NET 2003 (C#, VB.NET) Visual Studio 2005 (C#, VB.NET, C++) MFC, ATL,.NET CF Active Sync Connection Mgr MAPI OBEX Telephony WIN32 Active Sync Connection Mgr MAPI OBEX Telephony ATL 4.2,.NET CF Enhanced Emulator Configuration Mgr, Bluetooth, SMS.NET CF SP2 VGA (PPC) QVGA (SP) Square Landscape.NET CF 2.0 MFC 8.0, ATL 8.0 Broad managed code support Notifications Broker, Location, Camera, Watson, D3DM Índice de contenidos Escenarios Aplicaciones pcacoesweb móvil,thin Client Cet Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 8 4
Aplicación Web móvil Visual Basic ASP.NET Web Forms C++ C# J# Web Services ADO.NET and XML Base Class Libraries Windows Forms Common Language Runtime Visual Studio.NET Desarrollo Web Móvil IDE integrado Diseño visual y depuración Fácil integración con datos y XML Controles Web Móviles ASP.NET Parte de ASP.NET Adaptable a las propiedades del disp. Completo uso del.net Framework Aplicación Web móvil 1. Petición HTTP 4. Respuesta adaptada Obtiene características del dispositivo: Alto y ancho Color Imágenes Protocolo Retorna el protocolo o Web adecuado: HTML chtml WML XHTML 2. Procesamiento ASP.NET Genera página ASPX Procesa página Cada control genera su propia salida 3. Resultado ASP.NET 5
Aplicaciones típicas Teléfonos móviles y PDAs Tipos de aplicaciones: Acceso a datos de otros sistemas: CRM, ERP, ventas, etc. Mobile commerce: entradas, flores, transporte, reservas, etc. Mobile content: noticias, resultados deportivos, información meteorológica, sorteos, etc. Monitorización de sistemas: servidores, equipos médicos, distribución, etc. Etc. Ejemplo Conversor de moneda 1. Obtener PaísOrigen, PaísDestino del usuario PaísOrigen, PaísDestino Ratio de cambio 2. Obtener la cantidad a convertir 3. Llamar al servicio Web para obtener el ratio de cambio Servicio Web de ratio de cambio 4. Convertir 5. Mostrar resultados 6
ASP.NET Mobile Web Controls (antes MMIT) Extiende ASP.NET para aplicaciones Web móviles Completamente integrado en Visual Studio.NET Soporta múltiples dispositivos y lenguajes de marcado Web Forms.NET Framework ASP.NET Mobile Web Forms Web Services Services Framework Mobile Web Form Base Data Debug Windows Forms &.NET Compact Framework Common Language Runtime System Services Renderizado adaptativo Retorna WML Mobile Capability Detección del tipo de navegador WAP AdaptadorW ML Adaptador chtml Adaptador HTML Elige WML Elige HTML Formulario Web Móvil Control o de llamadas telefónicas IIS,.NET Framework, ASP.NET Crea la página Retorna HTML Petición HTTP Petición HTTP 7
Índice de contenidos Escenarios Aplicaciones Web móvil,thin Client Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 16 Cliente inteligente Visual Basic ASP.NET Web Forms C++ C# J# Web Services ADO.NET and XML Base Class Libraries Windows Forms Common Language Runtime Visual Studio.NET Desarrollo para dispositivo inteligente Utiliza.NET Compact Framework IDE integrado Emuladores Depuración remota.net Compact Framework Codigo gestionado Servicios Web Amplio subconjunto de las librerías de clases del.net Framework 8
Ejemplo HTTP IIS XML / BizTalk / CS 2002 Enterprise back-end (SAP, PeopleSoft, etc.) Motor de base de datos para dispositivos Windows CE Completa replicación y sincronización con SQL Server Diseñada para alto rendimiento en entornos de recursos reducidos Proveedor gestionado de acceso a SQL Server CE para.net Compact Framework Aplicaciones nativas Se compilan en código nativo para el juego de instrucciones de un determinado procesador Acceden directamente a las API y servicios de Windows CE Desarrollo en C++ con Embedded Visual C++ (EVC++) Entorno basado en Visual Studio 6.0 Se añade SDK de la plataforma en concreto API, emulador Depuración con emulador o con el terminal, herramientas de control remoto del estado del dispositivo 19 9
Aplicaciones nativas: uso Rendimiento es crítico API Windows CE: Aprovechamiento de las APIs adicionales que no están disponibles en el.net CF Desarrollo de bajo nivel Device drivers Serial port I/O Multimedia Aplicaciones real-time Extensiones de la Shell Today screen Panel de control Aplicaciones gestionadas (managed) Como cualquier aplicación.net Desarrollo en C# o VB.NET usando la librería de clases que ofrece el.net CF Se compilan al lenguaje intermedio de.net La primera vez que ejecuta la aplicación, el entorno de ejecución de.net CF (.NET CF runtime) la compila (Just In Time) en código nativo El runtime se encarga también de gestionar su ejecución (acceso a memoria, recolección de basura, excepciones etc.) 21 10
Aplicaciones gestionadas: uso Proyectos que tienen como prioridad un ciclo de desarrollo rápido: C#, Garbage Collection, librerías.net Único binario para todas las plataformas Aplicaciones basadas en XML y servicios WEB Aplicaciones corporativas: La dificultad principal es la integración con otros sistemas y el acceso remoto La integración de los servicios WEB y de XML en el framework puede ayudar mucho Para acceso a BD relaciones se ofrece ADO.NET Portar una aplicación del.net al.net Compact Framework es bastante sencillo (separación en capas) Uso combinado código Nativo-Gestionado Lo mejor de ambos mundos: Usar P/Invoke para llamar DLL nativas desde código.net CF Recomendable hacer el desarrollo principal p en.net CF y complementarlo con DLL nativas para las partes más específicas de la plataforma Ejemplo telefonía (llamadas, SIM, ): http://msdn2.microsoft.com/en-us/library/aa446543.aspx Smart Device Framework (SDF) Extensión del CF de libre distribución Se puede descargar desde: http://www.opennetcf.org/ Añade funcionalidad que habría que usar a través del P/Invoke 11
Opciones de desarrollo API Microsoft Win32 (C / C++) MFC (C++).NET Framework (C# and Microsoft Visual Basic.NET) Puntos fuertes DLLs y ejecutables pequeños y rápidos. Gestión de memoria más eficiente. Para drivers, applets del panel de control, extensiones del shell, No requieren de un runtime. Orientación a objetos, herencia, encapsulación, polimorfismo. Clases para arrays, listas,... Seguridad en tipos (Type safety) Completo soporte de MFC/ATL, código fuente y herramientas. Buenas herramientas y wizards. Interfaz de programación bien diseñada.. Orientación a objetos, herencia, encapsulación, polimorfismo. Clases para arrays, listas, tablas de hash, diccionarios, pilas Seguridad en tipos (Type safety) Espacios de nombres (Namespaces). Garbage collection automático que elimina memory leaks. MSIL / CIL, proporciona portabilidad a los ejecutables (.exe y.dll) Escribir clientes de servicios Web es rápido y fácil. Amplio soporte a XML. Herramientas de desarrollo muy buenas. Diseñador de formularios. Índice de contenidos Escenarios Aplicaciones Web móvil,thin Client Cliente inteligente, Smart Client Plataforma de desarrollo, Compact Framework Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 25 12
Plataforma de desarrollo.net Compact Framework Versión ligera del.net Framework Diseñado específicamente para dispositivos con recursos limitados Compatible con VS.NET (C#, VB.NET) Permite ejecutar aplicaciones de forma segura en el dispositivo Compilador JIT de alto rendimiento Experiencias de usuario: muy interactiva, offline y en red Facilita el consumo de servicios Web Ajustable en tamaño y rendimiento 13
.NET Compact Framework Compatibilidad Compatibilidad estricta con el.net Framework Subconjunto de funcionalidades.net Framework.NET Compact Framework Desktop.NET Framework Services Description Discovery Protocols Caching Configuration System.Web System.Data UI HtmlControls WebControls Security SessionState Design Drawing2D Imaging System.WinForms ComponentModel System.Drawing Printing Text System.Xml ADO.NET Design SqlClient XmlDocument Xslt/XPath Serialization Reader/Writers System Collections Security Text Globalization IO Net Reflection Resources Configuration ServiceProcess Diagnostics Threading Runtime InteropServices Remoting Serialization 14
.NET Compact Framework (1.x) Services Description Discovery Protocols Caching Configuration System.Web System.Data UI HtmlControls WebControls Security SessionState Design Drawing2D Imaging System.WinForms ComponentModel System.Drawing Printing Text System.Xml ADO.NET Design SqlClient SqlServerCe XmlDocument Xslt/XPathXPath Serialization Reader/Writers System Collections Security Text Globalization IO Net Reflection Resources Configuration ServiceProcess Diagnostics Threading Runtime InteropServices Remoting Serialization.NET Compact Framework Tamaño del Compact Framework (RAM o ROM) ~1.5 MB Necesidades d RAM para ejecución 0.5 MB+ (dependiendo del tipo de aplicación) Tamaño típico de las aplicaciones 5-40 KB Las aplicaciones son más pequeñas porque aprovechan características del Compact Framework 15
.NET Compact Framework 32.NET Compact Framework Reescrito Copiado Execution Engine JIT, GC, Loader, assembly cache Microsoft.DirectX. Direct3DMobile Windows.Forms System.Drawing System.Threading System.IO System.Resources System.Net t Microsoft.Win32. Registry System.Cryptography System.IO.Ports System.String System.Text System.Text.Regex System.Xml System.Data System.Messaging Microsoft.VisualBasic System.Collections System.Generic. Collections System.Web.Services System.Globalization 33 16
Índice de contenidos Escenarios Aplicaciones Web móvil,thin Client Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 34 Arquitecturas orientadas a servicios El modelo tradicional de cliente-servidor no es adecuado. Las aplicaciones móviles no pueden depender de la conexión para funcionar La cobertura no siempre está garantizada. Las redes inalámbricas actuales tienen limitaciones de ancho de banda y de latencia Tarificación por tráfico En estos escenarios el acceso a los datos es mucho más complicado de gestionar Garantizar recepción de los datos Gestión de fallos Optimizar el uso de la red 17
Arquitecturas orientadas a servicios Desarrollar aplicaciones autónomas Factores a tener en cuenta Gestionan un subconjunto de datos de negocio. Gestionan un subconjunto de las reglas de negocio. Interactúan con lógica en el servidor Basado en SOA (Service Oriented Architecture) y Servicios Web. Basado en replicación. Múltiples l tecnologías La solución recomendada son las aplicaciones tipo smart client en código nativo o gestionado. SQL Mobile puede facilitar el desarrollo de las aplicaciones que requieren replicación de datos. Arquitecturas orientadas a servicios Facilita la construcción de sistemas distribuidos. Un servicio se puede definir como una aplicación que publica una interfaz basada en mensajes (asíncronos), encapsula sus datos y gestiona transacciones ACID (Atomic, Consistent, Isolated, Durable) sobre sus datos. Proveedor y consumidor del servicio comparten sólo una interfaz. No se comparte ni implementación ni código. El consumidor percibe la implementación del servicio como una caja negra. DESACOPLAMIENTO REUTILIZACIÓN 18
Acceso a datos: esquema 38 Acceso a datos: opciones Acceso local a datos Usar ADO.NET, SQL Server CE, XML Acceso remoto a datos Servicios Web Reutilizar Servicios (desktop, mobile web etc.) Encapsulación de la lógica de negocio Sincronización SQL Server CE Robusto Sincronización avanzada Sincronización vía http/https Acceso directo a SQL Server Sólo si se está conectado permanentemente Colas de Mensajes MSMQ A partir de CF 2.0 39 19
Acceso a datos: recomendaciones Primera opción es Servicios Web y SOA Si hay replicación compleja de datos: Replicación ió SQL Server CE con SQL Server Si necesitamos mensajería fiable: Colas de mensaje MSMQ (CF 2.0) Se pueden utilizar múltiples tecnologías Mezclar cliente local y cliente Web Servicios Web y replicación SQL Server CE Recordar que estamos en entorno móvil Ancho de banda restringido y latencia en comunicaciones Probar el rendimiento en dispositivos y redes reales 40 Índice de contenidos Escenarios Aplicaciones Web móvil,thin Client Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 41 20
Conceptos básicos La duración de la batería es un factor crítico para los usuarios Las aplicaciones pueden tener un impacto muy importante en la duración de la batería si no están correctamente implementadas El mayor consumo de debe a la CPU Dos tipos de consumo: Activo ( Active ): Cuando hay una aplicación en ejecución Inactivo ( Idle ): El consumo mínimo del S.O., cuando no hay ninguna aplicación del usuario en ejecución. 42 Optimización modo Activo Reducir utilización de la CPU. Minimizar tiempo de ejecución. Reducir potencia consumida por los periféricos Radio, Audio, USB/Serial, IR, Bluetooth, Ethernet Cerrar handles cuando no están en uso Evitar el polling Consumo WAN Potencia es proporcional al volumen de los datos intercambiados. Usar protocolos eficientes. 43 21
Optimización modo Inactivo Permitir que el dispositivo entre en modo inactivo Activar las aplicaciones sólo cuando es necesario Incrementar el tiempo de inactividad de las aplicaciones Cuidado con temporizadores en los plug-in del Today/Home Screen Evitar temporizadores indefinidos/continuos Deshabilitar temporizadores cuando la aplicación no está en uso Parar animaciones cuando la aplicación no está activa Gestionar el evento WM_ACTIVATE (WA_INACTIVE) Usar GetClipBox para determinar si la aplicación está visible Usar eventos (en Windows Mobile 5.0 usar Notification Broker API) 44 Índice de contenidos Escenarios Aplicaciones Web móvil,thin Client Cliente inteligente, Smart Client Compact Framework Plataforma de desarrollo Acceso a datos y arquitecturas orientadas a servicios (SOA) Consumo Memoria 45 22
Tipos de memoria en WM 5.0 Tipos: Flash ROM: los datos no se pierden cuando el dispositivo no está alimentado, lenta (sobre todo escritura). RAM: los datos se pierden cuando el dispositivo no está alimentado, rápida, impacto importante en la autonomía del dispositivo. Smartphone 2002/2003, Windows Mobile 5.0 Pocket PC/Smartphone : Flash: S.O., sistema de ficheros RAM: datos temporales necesarios para ejecución de la aplicación Pocket PC 2003/2002: Flash: S.O. RAM: datos temporales y sistema de ficheros. 46 Tipos de memoria Flash NOR ROM: Rápida de leer, lenta de escribir Soporta XIP (Execute In Place). No hace falta mover el programa en RAM para ejecutarlo La existencia de este tipo de ROM puede reducir el tamaño de RAM necesaria y así mejorar la autonomía del dispositivo NAND ROM: Rápida de escribir, lenta de leer Las tarjetas SD y CF son NAND Las aplicaciones no se pueden ejecutar directamente desde NAND ROM 47 23
Compactación FS en WM 5.0 Los datos en flash ROM no se borran en el momento que lo pide la aplicación por motivos de rendimiento Se borran periódicamente por el proceso de compactación o cuando haya necesidad de liberar espacio Cuando funciona el proceso de compactación puede que se note temporalmente un empeoramiento del rendimiento: http://blogs.msdn.com/windowsmobile/archive/2006/03/16/552996.aspx 48 Referencias 49 24
Preguntas y respuestas DSEM: Diseño de Sistemas Empotrados y Móviles 50 25