640 likes | 797 Views
Y ahora lo quiero en un dispositivo móvil. Alejandro Mezcua Responsable Desarrollo Zaltor Soluciones Informáticas amezcua@zaltor.com. Agenda. ¿Qué modelo de aplicación escojo? ¿Quién va a usar mi aplicación? Las ventajas de los estándares ¡Dame mis datos!
E N D
Y ahora lo quiero en un dispositivo móvil Alejandro Mezcua Responsable Desarrollo Zaltor Soluciones Informáticas amezcua@zaltor.com
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
¿Qué modelo de aplicación escojo? • Panorama actual • ¿Es que hay más de uno? • Aplicaciones conectadas • Aplicaciones parcialmente conectadas • ¿Cuál escoger?
¿Qué modelo de aplicación escojo? Panorama actual (I - Dispositivos) Web Site
¿Qué modelo de aplicación escojo? Panorama actual (II - Dispositivos) • Dispositivos móviles • Ordenadores portátiles • Tablet PC • Pocket PC • Teléfonos WAP • SmartPhones • Todos con capacidades de conexión • La gente QUIERE usarlos
¿Qué modelo de aplicación escojo? Panorama actual (III - Comunicaciones) • GSM • Baja velocidad, coste por tiempo de conexión • GPRS • Media velocidad (hasta 56kbps), coste por volumen de tráfico • UMTS • Alta velocidad (hasta 2Mbps, inicialmente 128kbps) coste por volumen (¿y tipo?) de tráfico • WLAN (802.11) • Muy alta velocidad (2-54 Mbps) • Bluetooth • Redes ‘personales’ (rango 10m)
¿Qué modelo de aplicación escojo? Panorama actual (IV - Comunicaciones) • Cliente - Servidor • Sockets, Normalmente HTTP • Cliente - Cliente (Peer to Peer) • Sockets propios • Servidor – Servidor • Sockets, HTTP, Remoting • Intercambio de Datos • XML - SOAP
¿Qué modelo de aplicación escojo? Panorama actual (V – Esquema final) WebA SOAP (XML) Internet/Intranet WAP (XML) WebB
¿Qué modelo de aplicación escojo? ¿Es que hay más de uno? • Modelo => Arquitectura • La arquitectura la dará el uso esperado de la aplicación • Para aplicaciones nuevas determinar arquitecturas flexibles • Es probable que en el futuro pidan extenderla
App BTClient (dll) DAL (dll) Web Service DB ¿Qué modelo de aplicación escojo? ¿Es que hay más de uno? • Ejemplo BTServer, Arquitectura DAL conecta directamente a la base de datos o conecta a un Web Service (que usa la misma DLL para conectar a la base de datos dependiendo de un archivo de configuración en el cliente). Se unifica el API de acceso.
¿Qué modelo de aplicación escojo? Aplicaciones conectadas • El cliente sólo dispone de un interface • El proceso se realiza en el servidor • Ejemplo • Aplicaciones Web • WAP • Terminales
¿Qué modelo de aplicación escojo? Aplicaciones parcialmente conectadas • El cliente dispone de capacidad de proceso • Puede funcionar de manera autónoma en algunos casos • Puede almacenar información local para reutilizarla posteriormente • Parte del proceso se realiza en el servidor y parte en el cliente • Ejemplo • Algunas aplicaciones Cliente - Servidor • Clientes de correo (Outlook desconectado)
¿Qué modelo de aplicación escojo? ¿Cuál escoger? • El modelo vendrá dado por la arquitectura deseada de la aplicación • Una misma aplicación puede disponer de varios clientes, unos conectados y otros parcialmente conectados
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
¿Quién va a usar mi aplicación? • Tipos de usuarios • Dispositivos a utilizar • Un ejemplo
¿Quién va a usar mi aplicación? Tipos de usuarios • No todos los usuarios realizan las mismas tareas • Administración de la aplicación • Entrada de datos • Análisis
¿Quién va a usar mi aplicación? Dispositivo a utilizar • Cada dispositivo es fuerte/débil en alguna característica • Entrada de datos • Buena: Web, Win32 • Mala: WAP, Pocket PC • Consulta de datos • Buena: Todos • Excelente: Dispositivos móviles, permiten acceder desde cualquier sitio (WAP, Pocket) ya que el usuario lo suele llevar consigo • ¿Con qué frecuencia se realiza la tarea?
¿Quién va a usar mi aplicación? Un ejemplo (I – definición) • Aplicación de gestión de errores de desarrollo (bugs) • Permite a los testers/desarrolladores registrar errores de los proyectos en los que trabajen • Se hace un seguimiento de cómo va el proyecto • Permite a los jefes de proyecto tener un seguimiento de la calidad del proyecto
¿Quién va a usar mi aplicación? Un ejemplo (II – perfiles) • Administrador gestiona usuarios, proyectos, tablas auxiliares • Tareas de realización poco frecuente, no urgentes • Aplicación: Win32, Web; Conectada • Usuarios (Programadores) registran y examinan los errores que tienen asignados para solucionarlos • Tareas frecuentes • Aplicación: Win32, Web; conectada. Posible WinCE si desarrollo fuera de oficina frecuente.
¿Quién va a usar mi aplicación? Un ejemplo (III – perfiles) • Usuarios (Testers/Programadores) registran y examinan los errores que tienen asignados para solucionarlos • Tareas frecuentes • Aplicación: Win32, Web; conectada. Posible WinCE si desarrollo fuera de oficina frecuente.
¿Quién va a usar mi aplicación? Un ejemplo (IV – perfiles) • Jefes de proyecto, managers, clientes, ven estadísticas del progreso del proyecto • Tareas de realización relativamente frecuente, urgentes • Aplicación: Web, WAP, Pocket PC; Conectada, parcialmente conectada
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
Las ventajas de los estándares XHTML (I) • Separación de contenido y formato • Basado en estilos (css) • Visible desde dispositivos • Aunque se el formato no se vea se ve el contenido de manera cómoda • Cada vez más dispositivos lo incorporan • En VS.NET los controles de servidor no generan XHTML • Lo incorporarán en el futuro
Las ventajas de los estándares XHTML (II) • Los nuevos navegadores lo incorporan • IE 6.0, última versión de Mozilla, etc… • Para IE 6.0 hay que incluir una declaración en la página y en la etiqueta <HTML> • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> • <html xmlns="http://www.w3.org/1999/xhtml"> • El contenido se organiza utilizando <div>
Las ventajas de los estándares XHTML (III) • Referencias de diseño con CSS • http://www.csszengarden.com • Validación de XHTML correcto • http://validator.w3.org/
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
¡Dame mis datos! • ¿Qué usar cómo almacenamiento? • Aprovecha tu dispositivo
¡Dame mis datos!¿Qué usar cómo almacenamiento? (I) • No usar almacenamiento local • Ventajas • Simplicidad en local • Inconvenientes • No se puede usar si se está desconectado • Tipo de aplicaciones • Sólo aplicaciones conectadas (tipo Web, por ejemplo)
¡Dame mis datos!¿Qué usar cómo almacenamiento? (II) • Base de datos local • Access para Windows CE desaparecerá !! • Se quedará el equivalente a SQLCE actual • Ventajas • Disponible sin conexión • Acceso con objetos conocidos (ADO.NET) • Búsquedas, actualizaciones, etc., con SQL • Inconvenientes • Mayor complejidad en la instalación y configuración • Memoria del dispositivo • Tipo de aplicaciones • Conectadas, desconectadas, conectadas esporádicamente
¡Dame mis datos!¿Qué usar cómo almacenamiento? (III) • Archivos locales • XML • Texto plano (CSV) • Ventajas • Disponible sin conexión • Simplicidad de instalación (copiar) • Inconvenientes • Búsquedas más pobres (en Compact Framework no hay XPATH!!) • Acceso manual • Tipos de aplicaciones • Conectadas, desconectadas, conectadas esporádicamente
¡Dame mis datos!Aprovecha tu dispositivo (I) • SQL Server • Múltiples ediciones • Servidor: SQL Server • Cliente Win32 (PC, TabletPC): MSDE • Windows CE (PocketPC): SQLCE • Sincronizable entre todas ellas • Mediante replicación • Permite disponer de copia local de los datos con un motor muy potente y API de acceso conocido (ADO.NET)
¡Dame mis datos!Aprovecha tu dispositivo (II) • XML • Archivos de texto de fácil edición manual • Fáciles de mover de un sitio a otro • API conocido • System.Xml • Búsquedas mediante Xpath (excepto en Compact Framework) • Serialización de objetos a XML (en Compact Framework serialización sólo mediante XML Web Services)
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
.NET y los servicios de red • ¿Con quién tengo que hablar? • Servicios Web XML • Serialización de objetos práctica
.NET y los servicios de red ¿Con quién tengo que hablar? (I) • Sockets • .NET dispone de clases completas de sockets • TCP, UDP • Clientes y listeners • Broadcast / Multicast • A más alto nivel • Clientes HTTP (HttpClient) • Clientes SOAP (SOAPClient) • DNS
.NET y los servicios de red ¿Con quién tengo que hablar? (II) • Para servidores LDAP • System.DirectoryServices (DirectoryEntry) • Permite por ejemplo obtener información de ActiveDirectory • Para servidores MessageQueue • System.Messaging
.NET y los servicios de red ¿Con quién tengo que hablar? (III) • Microsoft Exchange 2003 • Sirve como base de datos de información no relacional (documentos, mensajes de correo, etc.) • Accesible con • WebDAV (HTTP). Con la clase WebClient, modificando las cabeceras • CDO (no .NET)
.NET y los servicios de red Servicios Web XML (I) • Implementados por ASP.NET • Nueva ISAPI para IIS intercepta la llamada y la procesa • Serialización de objetos implícita • Desde el punto de vista del programador, por defecto HTTP y XML son transparentes • A través e una clase proxy el cliente genera un mensaje SOAP que envía al servidor
.NET y los servicios de red Servicios Web XML (II) • Base de interoperatividad • XML y HTTP son universales • Los dos lados de la comunicación no tienes por que ser iguales (Windows <-> UNIX) • Ojo con tipos de datos • DataSet no es entendible por otras plataformas (sólo entre .NET) • Si se quiere interoperatividad, definir mensajes y mapear objetos a XML para serializar (mediante atributos)
.NET y los servicios de red Servicios Web XML (III) • Modelo RPC • Simula llamadas a funciones (tipo API) • Implica Solicitud - Respuesta • Por defecto en todas las herramientas de WebServices • Inconvenientes • A gran escala, HTTP puede dar problemas (protocolo no conectado) • Extensiones por parte de los fabricantes • WSI • Útil en entornos controlados • Sustituible en ocasiones por remoting
.NET y los servicios de red Servicios Web XML (III) • Modelo Documento • Basado en mensajes. • No simula un API, sino que se basa en ‘contratos’ • Un mensaje completo puede implicar N operaciones en el destino • La comunicación es asíncrona • Base de SOA (Services Oriented Architecture)
.NET y los servicios de red Servicios Web XML (VI) • En .NET implementados en toda la plataforma • .NET Framework • .NET Compact Framework
.NET y los servicios de red Servicios Web XML (V) • Ejemplo interesante: • Cassini • Código gratuito • Servidor Web Multitarea • Carga el entorno de ejecución de ASP.NET en un proceso independiente • http://www.asp.net/Projects/Cassini/Download/Default.aspx?tabindex=0&tabid=1
.NET y los servicios de red Serialización de objetos práctica • Demo BTServer: • Cuando un cliente arranca, inicia un listener de UDP en un puerto aleatorio • Al iniciar sesión, registra su IP, Puerto • Desde el servidor se envían mensajes al cliente • Usando un WebService • El mensaje es una clase que se serializa • El cliente, al recibir el mensaje, deserializa el XML en un objeto de la clase original
Agenda • ¿Qué modelo de aplicación escojo? • ¿Quién va a usar mi aplicación? • Las ventajas de los estándares • ¡Dame mis datos! • .NET y los servicios de red para mi aplicación • Aplicaciones multitarea • Código entre plataformas • Optimización del interface
Aplicaciones multitarea • System.Threading • La clase ThreadPool • Windows Forms • XML Web Services
Aplicaciones multitarea System.Threading • Namespace con las clases para multitarea • Dispone de clases para la creación de nuevos threads, sincronización (Mutex), timers, etc.
Aplicaciones multitarea La clase ThreadPool (I) • .NET pone a disposición de las aplicaciones un ‘Pool’ de threads a utilizar • Si una aplicación crea muchos threads acaba por agotar los recursos del sistema • El threadpool gestiona la asignación de threads a la aplicación en base al estado del sistema • La aplicación ‘encola’ peticiones en el pool y el pool las asignará un thread según estén disponibles • Permite afinar el rendimiento del sistema y evitar el consumo excesivo de CPU
Aplicaciones multitarea La clase ThreadPool (II) • Ejemplo BTServer: • Cada cliente arranca un listener UDP • El listener bloquea la ejecución del Thread hasta que recibe datos • La aplicación crea un nuevo thread del thread pool que es el que queda bloqueado a la espera de recepción de mensajes. • Una vez tratado el mensaje, vuelve a crear un nuevo thread a la espera • De esta manera se consiguen notificaciones de cambios sin que el cliente tenga que preguntar periódicamente