Y ahora lo quiero en un dispositivo móvil Alejandro Mezcua Responsable Desarrollo Zaltor Soluciones...

Post on 03-Jan-2015

11 views 2 download

Transcript of Y ahora lo quiero en un dispositivo móvil Alejandro Mezcua Responsable Desarrollo Zaltor Soluciones...

Y ahora lo quiero en un dispositivo móvil

Alejandro MezcuaResponsable DesarrolloZaltor Soluciones Informáticasamezcua@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

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

?