Title: Y ahora lo quiero en un dispositivo mvil
1Y ahora lo quiero en un dispositivo móvil
- Alejandro Mezcua
- Responsable Desarrollo
- Zaltor Soluciones Informáticas
- amezcua_at_zaltor.com
2Agenda
- 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
3Agenda
- 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
4Qué modelo de aplicación escojo?
- Panorama actual
- Es que hay más de uno?
- Aplicaciones conectadas
- Aplicaciones parcialmente conectadas
- Cuál escoger?
5Qué modelo de aplicación escojo? Panorama
actual (I - Dispositivos)
Web Site
6Qué 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
7Qué 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)
8Qué 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
9Qué modelo de aplicación escojo? Panorama
actual (V Esquema final)
WebA
SOAP (XML)
Internet/Intranet
WAP (XML)
WebB
10Qué modelo de aplicación escojo? Es que hay
más de uno?
- Modelo gt 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
11Qué 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.
12Qué 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
13Qué 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)
14Qué 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
15Agenda
- 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
16Quién va a usar mi aplicación?
- Tipos de usuarios
- Dispositivos a utilizar
- Un ejemplo
17Quié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
18Quié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?
19Quié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
20Quié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.
21Quié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.
22Quié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
23Agenda
- 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
24Las 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
25Las 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 ltHTMLgt - lt!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http//www.w3.org/TR/xhtml1/DTD
/xhtml1-transitional.dtd"gt - lthtml xmlns"http//www.w3.org/1999/xhtml"gt
- El contenido se organiza utilizando ltdivgt
26Las 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/
27Agenda
- 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
28Dame mis datos!
- Qué usar cómo almacenamiento?
- Aprovecha tu dispositivo
29Dame 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)
30Dame 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
31Dame 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
32Dame 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)
33Dame 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)
34Agenda
- 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
35.NET y los servicios de red
- Con quién tengo que hablar?
- Servicios Web XML
- Serialización de objetos práctica
36.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
37.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
38.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)
39.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
40.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 lt-gt 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)
41.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
42.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)
43.NET y los servicios de red Servicios Web XML
(VI)
- En .NET implementados en toda la plataforma
- .NET Framework
- .NET Compact Framework
44.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/Defau
lt.aspx?tabindex0tabid1
45.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
46Agenda
- 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
47Aplicaciones multitarea
- System.Threading
- La clase ThreadPool
- Windows Forms
- XML Web Services
48Aplicaciones multitarea System.Threading
- Namespace con las clases para multitarea
- Dispone de clases para la creación de nuevos
threads, sincronización (Mutex), timers, etc.
49Aplicaciones 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
50Aplicaciones 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
51Aplicaciones multitarea Windows Forms
- Una aplicación Windows Forms ejecuta un thread en
el que se puede trabajas con los controles - Desde un segundo thread no se puede acceder
directamente a propiedades de un control - Para notificar a un control desde un thread
distinto al principal - Control.Invoke (o Control.BeginInvoke)
52Aplicaciones multitarea Servicios Web XML (I)
- Las llamadas a un servicio Web, pueden demorar
bastante la respuesta - Acceso en internet
- Referencias Web
- Por defecto se genera una clase proxy con 3
métodos por cada WebMethod. - Para HelloWorld
- HelloWorld
- BeginHelloWorld
- EndHelloWorld
53Aplicaciones multitarea Servicios Web XML (I)
- Los métodos con BeginX EndX ejecutan la llamada
de forma asíncrona - Multithread
- No bloquean la aplicación
- Cuando regresan, avisan a la aplicación mediante
un delegate (AsyncCallback) - Conveniente utilizar llamadas asíncronas siempre
que se pueda
54Agenda
- 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
55Código entre plataformas Compartir código entre
plataformas (I)
- Un assembly lleva en sus metadatos las
referencias a todas las demás - En VS hechas a través de References
- En línea de comando pasadas por parámetro
- A la hora de ejecutar se buscan de manera muy
estricta - En .NET Framework (no en Compact Framework) se
pueden redefinir que assemblies se quieren
utilizar en tiempo de ejecución (Assembly binding
redirection) - Mediante los archivos de configuración
- ltassemblyBindinggt
56Código entre plataformas Compartir código entre
plataformas (II)
- Entre PC y Tablet PC no hay diferencias
- Excepto controles propios de Tablet
- Mismo .NET Framework, basta con copiar los
assemblies de un equipo a otro - Entre PC y Pocket PC
- PC .NET Framework, Pocket .NET Compact Framework
- Compact Framework es un subconjunto de .NET
Framework - Mucho código se puede copiar, pegar y recompilar
- En la documentación aparecen todas las clases
soportadas
57Código entre plataformas Compartir código entre
plataformas (III)
- Entre PC y Pocket PC
- Clases que sólo hagan referencia a System se
pueden copiar compiladas - Útiles para la definición de tipos generales
- No soportado
58Agenda
- 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
59Optimización del interface Usabilidad (I)
- Cada dispositivo se utiliza de manera distinta y
de diseñaron con propósitos diferentes - La aplicación ha de adaptarse a la manera de
trabajar del usuario y no al revés - Cada dispositivo dispone de características
especiales - Pocket PC pantalla táctil. Se puede usar con el
dedo - Tablet PC permite escribir y reconocer la
escritura de manera muy rápida - Teléfonos WAP la entrada de datos es muy lenta
por el teclado
60Optimización del interface Usabilidad (II)
- Pocket PC
- Orientado a acciones concretas y rápidas
- Cada pantalla ha de permitir realizar una sola
acción, no muchas. Claridad. - La entrada de datos se hace mediante teclado en
pantalla - El teclado en pantalla ocupa mucho espacio, ojo
con no poner controles de texto debajo (permitir
scroll de los controles)
61Optimización del interface Usabilidad (III)
- Dispositivos WAP
- Pantalla muy pequeña de texto
- Límite de datos en DeckSize
- Entrada con teclado numérico
- Navegación por la pantalla lenta
- Orientar cada página a algo muy concreto
62Optimización del interface Usabilidad (IV)
- Tablet PC
- La pantalla puede cambiar de sentido
(horizontal/vertical) - Tenerlo en cuenta en el interface
- La pantalla NO es táctil, se usa un bolígrafo
especial - Entrada de datos por reconocimiento
- Entrada de datos por gestos
63Referencias
- http//www.microsoft.com/spanish/msdn
- http//www.zaltor.com
- http//www.tabletpcdeveloper.com
- http//www.gotdotnet.com
64Preguntas