Upload
odalys-lama
View
13
Download
2
Embed Size (px)
Citation preview
Y ahora lo quiero en un dispositivo móvil
Alejandro MezcuaResponsable DesarrolloZaltor Soluciones Informá[email protected]
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
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)
WebAWebA
WebBWebB
SOAP (XML)SOAP (XML)
WAP (XML)WAP (XML)
Internet/IntranetInternet/Intranet
¿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
¿Qué modelo de aplicación escojo? ¿Es que hay más de uno?
Ejemplo BTServer, Arquitectura
AppApp
BTClient (dll)BTClient (dll) DAL (dll)DAL (dll)
Web ServiceWeb Service
DBDB
DAL conecta directamente DAL conecta directamente a la base de datos o a la base de datos o conecta a un Web Service conecta a un Web Service (que usa la misma DLL (que usa la misma DLL para conectar a la base para conectar a la base de datos dependiendo de de datos dependiendo de un archivo de un archivo de configuración en el configuración en el cliente).cliente).Se unifica el API de Se unifica el API de acceso.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
Aplicaciones 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)
Aplicaciones 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
Aplicaciones 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
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
Có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
<assemblyBinding>
Có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
Có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
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
Optimizació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
Optimizació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)
Optimizació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
Optimizació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”
Referencias
http://www.microsoft.com/spanish/msdn http://www.zaltor.com http://www.tabletpcdeveloper.com http://www.gotdotnet.com
Preguntas
?