.NET Compact Framework Profesor: Dr. Jesús Soto Carrión (jesus.soto@upsam.net) Master de Ingeniería Web Desarrollo de aplicaciones para dispositivos móviles
Contenido de la presentación Introducción Arquitectura Entorno de desarrollo Tipos de proyecto Formularios Controles generales Comunicación - WS 2
.NET Compact Framework Versión ligera de la plataforma.net Se puede instalar en dispositivos móviles con Windows Mobile o CE (Mini-Ordenadores, PDA's o SmartPhones) Proporciona el entorno de ejecución de aplicaciones.net móviles independientes de la plataforma hardware. Admite protocolos de red comunes. Incluye soporte de conectividad HTTP-SOAP y librerías para el tratamiento de XML (DataSets) 3
Arquitectura.NET Compact Framework Hereda la arquitectura.net El CLR proporciona el entorno de ejecución adaptado según la plataforma hardware. Win CE: Librerías de bajo nivel expuestas por el dispositivo. Forma parte del núcleo del SO. 4
Entorno de desarrollo 5
Tipos de proyectos Windows Mobile - Pocket PC Windows Mobile Smartphone Windows Mobile: Sistema operativo 32 bits compacto. Dispositivos: Pocket PC's Smartphones Media Center Portátil (PMC) Windows CE 6
Mi primera aplicación Pocket PC Iniciar Microsoft Visual Studio Crear un nuevo proyecto de tipo C# -> Smart Device -> Pocket PC 2003 Incluir en el formulario inicial el control TextBox Incluir un botón. Escribir el código necesario para incluir el mensaje HOLA dentro de la caja de texto. 7
Elección del proyecto 8
Formularios Son los contenedores de controles de tipo ventana utilizados en el CF. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; Heredan de la clase System.Windows.Forms.Form namespace ejemplo1 public partial class Form1 : Form public Form1() InitializeComponent(); Cada clase puede contener manejadores de los eventos desencadenados por los controles. private void btnmsj_click(object sender, EventArgs e) this.txttexto.text = "HOLA MUNDO"; 9
Arranque de una aplicación Archivo Program.cs creado por defecto using System; using System.Collections.Generic; using System.Windows.Forms; namespace ejemplo1 static class Program /// <summary> /// Punto de entrada principal para la aplicación. /// </summary> [MTAThread] static void Main() Application.Run(new Form1()); Instancia del formulario 10
Navegación Métodos: Hide() : Oculta el formulario Show(): Muestra un formulairo. Close(): Cierra el formulario, libera recursos. Dispose(): libera los recursos utilizados por el formulario (MDI). Es necesario que la clase del formulario este instanciada y referenciada por una variable. Sobre el objeto formulario pueden aplicarse los métodos descritos. 11
Código (Form1) namespace ejemplo1 public partial class Form1 : Form public Form1() InitializeComponent(); private void btnmsj_click(object sender, EventArgs e) this.txttexto.text = "HOLA MUNDO"; private void menuitem1_click(object sender, EventArgs e) Form2 frm = new Form2(this); frm.show(); this.hide(); 12
Código (Form2) namespace ejemplo1 public partial class Form2 : Form Form _back; public Form2(Form back) _back = back; InitializeComponent(); private void button1_click(object sender, EventArgs e) _back.show(); this.close(); 13
MDI - Aproximación El manejo de múltiples formularios podemos hacerlo utilizando una clase de control encargada de gestionar los objetos tipo Form. using System; using System.Collections.Generic; using System.Windows.Forms; namespace ejemplo1 public class ContenedorFomularios public Form1 f1; public Form2 f2; public Form3 f3; public Form activo; public ContenedorFormularios() activo = new Form1(); [MTAThread] static void Main() ContenedorFormularios mc = new ContenedorFormularios(); Application.Run(mc.activo); 14
Ejercicio 2 Crear una aplicación que contenga varios controles: DateTimePicker ComboBox ListBox RadioButton Implementar eventos e interacciones. Guardar los datos de la interfaz en un fichero XML. 15
SERVICIOS WEB EN DISPOSITIVOS MÓVILES Gracias a la flexibilidad aportada por la pila de protocolos de los servicios web, el uso de esta tecnología en dispositivos móviles es una realidad. Multiples dispositivos: PDA s SmartPhones. Móviles con J2ME. Dispositivos hardware empotrados. etc.. 16
ACTIVESYNC Para demostrar el uso de los Servicios Web sobre dispositivos móviles en.net utilizaremos el entorno de desarrollo junto con emulador de plataformas del VS. Por supuesto, es necesario que el dispositivo emulado posea RED. Por ello necesitamos: Active Sync Emulador de transporte DMA 17
CONEXIÓN DMA ACTIVESYNC 18
AGREGAR REFERENCIA REMOTA 19
EJEMPLO Llamada al método remoto desde el emulador: Verificar que la referencia web no apunta a localhost, suele ser un error común cuando trabajamos con el emulador. Si utilizamos el IIS local, referenciar con la dirección IP de la máquina. Código (similar a cualquier referencia de método remoto): proxysrvhola.srvhola pr = new AppWS.proxySrvHola.SrvHola(); this.label1.text = pr.obtenerresultado(); 20
Ejercicio 3 Una empresa posee una base de datos con todos los precios de sus productos. La empresa tiene contratados 3 comerciales para la venta de productos. Los clientes preguntan a los comerciales por los precios, y estos los consultan de forma remota desde su PDA a través de una red 3G. Los precios pueden cambiar desde una aplicación windows sencilla. 21
Ejercicio 3 SE PIDE: Codificar el servicio web Productos residente en el servidor con dos métodos: void modificarprecio(string cod) string [] buscarproducto(string nombre) double consultarprecio(string cod) Escribir una aplicación sencilla desde la PDA que permita consultar por nombre los productos existentes en la BBDD, además de obtener el precio de los mismos. Escribir la aplicación Windows que permite modificar los precios de los productos. 22
Ejercicio 3 - ESCENARIO buscarproducto(..) ConsultarPrecio(..) BBDD TABLA PRODUCTOS: ModificarPrecio(..) COD NOMBRE PRECIO R01 XXXX 100 R02 YYYY 200.... Rnn ZZZZZ 250 23
SERVICIOS WEB INTERCAMBIO DE ESTRUCTURAS DE DATOS AVANZADAS XSD / XML Uso de los esquemas XSD para la definición de la estructura de datos utilizada en la serialización de los datos XML. Simplificación gracias al uso de los DataSets. Las herramientas de desarrollo de.net nos aportan: Serialización de datos automática (DataSets XML/XSD ). Agregación de recursos asociados automática. 24
INSERTAR UN NUEVO DATASET 25
COPIAR EL ESQUEMA DE LA TABLA PRODUCTOS 26
UTILIZAR EL DATASET EN LOS METODOS WEB [WebMethod] public DSProductos obtenerproductos() DSProductos ds = new DSProductos(); DSProductosTableAdapters.PRODUCTOSTableAdapter tprod = new DSProductosTableAdapters.PRODUCTOSTableAdapter(); tprod.fill(ds.productos); return (ds); 27
AGREGAR REFERENCIA REMOTA Se incluyen de forma automática los recursos asociados al servicio web, en este caso el DataSet utilizado. 28
INTERFAZ SENCILLA DATABIND REMOTO private void btnrecuperar_click(object sender, EventArgs e) proxysrvproductos.srvproductos proxysrvproductos = new AppWS.proxySrvProductos.SrvProductos(); this.datagrid1.datasource = proxysrvproductos.obtenerproductos().productos; 29
DATOS SERIALIZADOS <DSProductos xmlns="http://tempuri.org/dsproductos.xsd"> - <PRODUCTOS diffgr:id="productos1" msdata:roworder="0"> <CODP>P01</CODP> <Nombre>Producto X</Nombre> <Precio>200</Precio> </PRODUCTOS> - <PRODUCTOS diffgr:id="productos2" msdata:roworder="1"> <CODP>P02</CODP> <Nombre>Producto Y</Nombre> <Precio>300</Precio> </PRODUCTOS> - <PRODUCTOS diffgr:id="productos3" msdata:roworder="2"> <CODP>P03</CODP> <Nombre>Producto Z</Nombre> <Precio>400</Precio> </PRODUCTOS> </DSProductos> 30
SMARTPHONES & SERVICIOS WEB 31
REFERENCIAS WEB EN SMARTPHONES Mecanismo similar de referencia. Posibilidades de transmisión más reducidas, la BCL en las versiones SmartPhone queda simplificada sin el uso de las clases DataSet autogeneradas. private void menuitem1_click(object sender, EventArgs e) proxysrvhola.srvhola proxysrv=new proxysrvhola.srvhola(); this.label1.text = proxysrv.obtenerresultado(); 32
PRÁCTICA SMARTPHONE 33