69
Aplicaciones Smart Aplicaciones Smart Client con .NET Client con .NET <Ponente> <Ponente> <Email> <Email> <Cargo> <Cargo> <Empresa> <Empresa>

Aplicaciones Smart Client con.NET Publicada por Gustavo Tabora, Modificado hace 10 años

Embed Size (px)

Citation preview

Page 1: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Aplicaciones Smart Aplicaciones Smart Client con .NETClient con .NET

<Ponente><Ponente><Email><Email><Cargo><Cargo><Empresa><Empresa>

Page 2: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

AgendaAgenda

¿Qué es un SmartClient?¿Qué es un SmartClient?

Introducción a Windows FormsIntroducción a Windows Forms

Gráficos avanzados con GDI+Gráficos avanzados con GDI+

Programación asíncronaProgramación asíncrona

Despliegue de aplicacionesDespliegue de aplicaciones

Patrones de diseñoPatrones de diseño

Application BlocksApplication Blocks

Desarrollo en dispositivos móvilesDesarrollo en dispositivos móviles

Page 3: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

¿Qué es un Smart Client?¿Qué es un Smart Client?

Page 4: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

¿Qué es un Smart Client?¿Qué es un Smart Client?La industria hablaLa industria habla

“The Client is Back” Jonathan Schwartz, Sun’s president and COO Opening remarks at JavaOne 2004

“The problems with browser-based approaches … have become all too well-known”

“The current enthusiasm for a browser-based enterprise is shortsighted. As firms trade in their desktop clients for browsers they’ll find: primitive functionality… bandwidth gluttony… terrible usability.”

IBM Puts New Spin On Client Computing

(May 2004)

“…It sounds a bit like heresy, but the web-based portal does not really make a very effective interface to functionality that resides in many systems"

“Web-based solutions just can’t provide the rich users interface and performance which users like our traders need.”

“As proof of their disillusionment, a staggering one-third of IT decision makers report having plans for migrating some applications back to richer client environments.”

Page 5: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

A medida A medida del dispositivodel dispositivo

Servicios Web & soporteServicios Web & soporteconectado/desconectadoconectado/desconectado

¿Qué es un Smart Client?¿Qué es un Smart Client?

Difícil deDifícil dedesplegardesplegar

HuellaHuellapesadapesada

Infierno deInfierno delas DLLslas DLLs

Experiencia ricaExperiencia ricade usuariode usuario

Productividad Productividad para elpara el

desarrolladordesarrollador

InteractivoInteractivo

Dependencia Dependencia de la redde la red

Experiencia Experiencia pobre pobre

de usuario de usuario

IU ricaIU ricacompleja de compleja de desarrollardesarrollar

Poco Poco interactivo interactivo

Facilidad de Facilidad de gestión de cambiosgestión de cambios

Facilidad deFacilidad dedesplieguedespliegue

Page 6: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

¿Qué es un Smart Client?¿Qué es un Smart Client?AtributosAtributos

Utiliza la potencia del procesador localExperiencia de usuario rica, interactiva

Consume servicios por HTTPServicios Web y SOA

Puede funcionar de forma desconectadaSe despliega y actualiza de forma centralizada

Page 7: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

¿Qué es un Smart Client?¿Qué es un Smart Client?EjemplosEjemplos

NoNoNoNoSíSíSíSíDiscutible…Discutible…NotepadNotepad

NoNoNoNoNoNoNoNoSíSíOutlook XPOutlook XP

NoNoNoNoSíSíSíSíSíSíOutlook 2003Outlook 2003

HotmailHotmail NoNo

¿Experiencia ¿Experiencia rica?rica?

SíSí

¿Funciona ¿Funciona en Internet?en Internet?

SíSí

¿Despliegue ¿Despliegue centralizadocentralizado

??

NoNo

¿Smart Client?¿Smart Client?

NoNo

¿Soporta modo ¿Soporta modo desconectado?desconectado?

Page 8: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsForms

Page 9: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsForms¿Qué es?¿Qué es?Tecnología incluida en el Tecnología incluida en el

Framework .NETFramework .NET

Aprovecha lo mejor de WindowsAprovecha lo mejor de WindowsAlta usabilidad para los clientesAlta usabilidad para los clientes

Aprovecha hardware localAprovecha hardware local

Layout preciso al pixelLayout preciso al pixel

Y soluciona sus problemas típicosY soluciona sus problemas típicosInstalación, mantenimientoInstalación, mantenimiento

SeguridadSeguridad

Page 10: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsDesarrolloDesarrolloWindows Forms es una librería de clasesWindows Forms es una librería de clases

Accesibles desde el .NET FrameworkAccesibles desde el .NET Framework

Encapsula con OOP la API WindowsEncapsula con OOP la API WindowsControles identificados con HWNDControles identificados con HWND

Propiedades accesibles con SendMessagePropiedades accesibles con SendMessage

Eventos capturados en WndProcEventos capturados en WndProc

Visual Studio .NET como diseñadorVisual Studio .NET como diseñadorAumenta la productividad del desarrolloAumenta la productividad del desarrollo

Diseñadores, asistentes, plantillasDiseñadores, asistentes, plantillas

Page 11: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsClase ControlClase ControlUna clase base común: ControlUna clase base común: Control

Representa un elemento del interfazRepresenta un elemento del interfaz

Resto de elementos derivan de ControlResto de elementos derivan de ControlFormulario Windows (Form)Formulario Windows (Form)

Básicos (TextBox) y extendidos (DataGrid)Básicos (TextBox) y extendidos (DataGrid)

Funcionalidad encapsulada en Funcionalidad encapsulada en propiedades y eventospropiedades y eventos

Eventos accesibles por delegatesEventos accesibles por delegates

Page 12: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

““Hola Mundo” en Windows Hola Mundo” en Windows FormsForms

Page 13: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsDiseño con Visual Studio .NETDiseño con Visual Studio .NETVisual Studio .NET permite diseñar Visual Studio .NET permite diseñar

gráficamente los formulariosgráficamente los formulariosArrastrar controles desde la paletaArrastrar controles desde la paleta

Modificar sus propiedadesModificar sus propiedades

Procesar los eventosProcesar los eventos

Todo está en códigoTodo está en códigoVisual Studio sincroniza el código en los dos Visual Studio sincroniza el código en los dos sentidossentidos

Page 14: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

““Hola Mundo” con Visual Hola Mundo” con Visual StudioStudio

Page 15: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsOrganización de controlesOrganización de controlesNueva aproximación al AutoScaleNueva aproximación al AutoScale

Todas las coordenadas en píxelesTodas las coordenadas en píxeles

Autoescaladas según AutoScaleBaseSizeAutoescaladas según AutoScaleBaseSize

Layout manual con Visual StudioLayout manual con Visual Studio

Layout automáticoLayout automáticoDockingDocking

AnchorAnchor

Orden de tabulador configurableOrden de tabulador configurable

Botones Default y CancelBotones Default y Cancel

Page 16: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Organización de controlesOrganización de controles

Page 17: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsAplicaciones MDI vs SDIAplicaciones MDI vs SDISDI: Un solo documento a la vezSDI: Un solo documento a la vez

Ej. WordPadEj. WordPad

MDI: Varios documentos MDI: Varios documentos simultáneamentesimultáneamenteEj. ExcelEj. Excel

Propiedad Form.IsMDIContainerPropiedad Form.IsMDIContainer

Page 18: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsDiálogosDiálogosModales: Paran la ejecuciónModales: Paran la ejecución

Método Form.ShowDialogMétodo Form.ShowDialog

No modales: Permiten ejecución paralelaNo modales: Permiten ejecución paralelaMétodo Form.ShowMétodo Form.Show

Diálogos comunesDiálogos comunesOpenFIleDialog, SaveFileDialogOpenFIleDialog, SaveFileDialog

FontDialog, ColorDialogFontDialog, ColorDialog

PrintDialog, PageSetupDialogPrintDialog, PageSetupDialog

Page 19: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsControlesControles ControlControlControlControl

ListControlsListControlsListControlsListControls

ComboBoxComboBoxComboBoxComboBox

ListBoxListBoxListBoxListBox

TreeViewTreeViewTreeViewTreeView

DataGridDataGridDataGridDataGrid

ButtonButtonButtonButton

ButtonBaseButtonBaseButtonBaseButtonBase

SplitterSplitterSplitterSplitter

TrackBarTrackBarTrackBarTrackBar

CheckBoxCheckBoxCheckBoxCheckBox

TextBoxTextBoxTextBoxTextBox

RichTextBoxRichTextBoxRichTextBoxRichTextBox

RadioButtonRadioButtonRadioButtonRadioButton

TextBoxBaseTextBoxBaseTextBoxBaseTextBoxBase

ListViewListViewListViewListView

ScrollableControlScrollableControlScrollableControlScrollableControl

PanelPanelPanelPanel

ProgressBarProgressBarProgressBarProgressBar

PictureBoxPictureBoxPictureBoxPictureBox

StatusBarStatusBarStatusBarStatusBar

ToolBarToolBarToolBarToolBar

ScrollBarScrollBarScrollBarScrollBar

MonthCalendarMonthCalendarMonthCalendarMonthCalendar

DateTimePickerDateTimePickerDateTimePickerDateTimePicker

Page 20: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsDesarrollo de controlesDesarrollo de controlesControles de usuarioControles de usuario

Composición de otros controlesComposición de otros controles

Desarrollo visual con Visual Studio .NETDesarrollo visual con Visual Studio .NET

Controles personalizadosControles personalizadosDerivan de clase Control o de otro controlDerivan de clase Control o de otro control

Añaden funcionalidadAñaden funcionalidadEvento OnPaint, nuevas propiedades / eventos, Evento OnPaint, nuevas propiedades / eventos, etc.etc.

Integración con Visual StudioIntegración con Visual Studio

Personalización de pintadoPersonalización de pintadoRedefinir el pintado de los elementosRedefinir el pintado de los elementos

Page 21: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo de controlesDesarrollo de controles

Page 22: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsHerenciaHerenciaReutilización de componentes o Reutilización de componentes o

formulariosformularios

Métodos tradicionalesMétodos tradicionalesSobrescribir WNDPROC en C++Sobrescribir WNDPROC en C++

Controles de usuario en VB6Controles de usuario en VB6

Nuevo método disponible OOPNuevo método disponible OOPDerivar controles y formulariosDerivar controles y formularios

Mucho más encapsulado y personalizableMucho más encapsulado y personalizable

Soportado gráficamente por VS.NETSoportado gráficamente por VS.NET

Page 23: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Herencia de formulariosHerencia de formularios

Page 24: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Introducción a Windows Introducción a Windows FormsFormsEnlace a datosEnlace a datosEnlace SimpleEnlace Simple

Cualquier propiedad de un control puede ser Cualquier propiedad de un control puede ser enlazada a un datoenlazada a un dato

Colección DataBindingsColección DataBindings

Enlace complejoEnlace complejoLos controles lista pueden ser enlazados a Los controles lista pueden ser enlazados a un conjunto de datosun conjunto de datos

Propiedades DataSource, DataMemberPropiedades DataSource, DataMember

Personalización del formatoPersonalización del formatoEventos Format, ParseEventos Format, Parse

Page 25: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Enlace a datosEnlace a datos

Page 26: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+

Page 27: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+¿Qué es GDI+?¿Qué es GDI+?Librería incluida en Windows XP / 2003Librería incluida en Windows XP / 2003

Gráficos vectorialesGráficos vectoriales

Procesamiento de imágenesProcesamiento de imágenes

TipografíaTipografía

System.Drawing encapsula GDI+System.Drawing encapsula GDI+GDIPLUS.DLL instalada junto a runtime .NETGDIPLUS.DLL instalada junto a runtime .NET

Namespaces:Namespaces:System.Drawing.Drawing2DSystem.Drawing.Drawing2D

System.Drawing.ImagingSystem.Drawing.Imaging

System.Drawing.TextSystem.Drawing.Text

Page 28: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+Gráficos vectorialesGráficos vectorialesDefinición del gráficoDefinición del gráfico

Primitivas vectorialesPrimitivas vectorialesLíneas, polígonos, arcos, splines, beziers…Líneas, polígonos, arcos, splines, beziers…

Estilos de líneaEstilos de líneaColor, trazado, nodos finales, tipos de Color, trazado, nodos finales, tipos de intersección…intersección…

Estilos de rellenoEstilos de rellenoSólido, patrón, textura, gradientes…Sólido, patrón, textura, gradientes…

Page 29: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+Gráficos vectoriales (II)Gráficos vectoriales (II)RenderizadoRenderizado

Transparencia canal alfaTransparencia canal alfa

Estilo de anti-aliasingEstilo de anti-aliasing

TransformacionesTransformaciones

FiltradoFiltrado

Coordenadas en punto flotanteCoordenadas en punto flotante

Page 30: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos vectorialesGráficos vectoriales

Page 31: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+Tratamiento de imágenesTratamiento de imágenesCodificación / decodificaciónCodificación / decodificación

BMP, JPEG, PNG, GIF, TIFF, EXIF…BMP, JPEG, PNG, GIF, TIFF, EXIF…

ProcesamientoProcesamientoTransformaciones, brillo, contraste, Transformaciones, brillo, contraste, coloreado…coloreado…

Escalado bicúbicoEscalado bicúbico

Gestión del color ICMGestión del color ICM

Relación con gráficosRelación con gráficosMostrar imagen en lienzoMostrar imagen en lienzo

Crear lienzo desde imagen (útil para doble Crear lienzo desde imagen (útil para doble búfer)búfer)

Page 32: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Tratamiento de imágenesTratamiento de imágenes

Page 33: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Gráficos avanzados con Gráficos avanzados con GDI+GDI+TipografíaTipografíaSoporte ClearTypeSoporte ClearType

Soporte OpenTypeSoporte OpenType

Alto nivel de internacionalizaciónAlto nivel de internacionalizaciónÁrabe, hebreo, thai, vertical…Árabe, hebreo, thai, vertical…

Relación con gráficosRelación con gráficosRelleno con brochaRelleno con brocha

Path no linealPath no lineal

Convertible a curvaConvertible a curva

Page 34: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

TipografíaTipografía

Page 35: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Programación asíncronaProgramación asíncrona

Page 36: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Programación asíncronaProgramación asíncronaHilo principal de aplicaciónHilo principal de aplicación

Windows Forms corre en un solo hiloWindows Forms corre en un solo hiloHilo donde se llama a Application.Run()Hilo donde se llama a Application.Run()

Hay que evitar sobrecargar ese hiloHay que evitar sobrecargar ese hiloProvoca interfaces que no respondenProvoca interfaces que no responden

Soluciones:Soluciones:Usar otros hilos para tareas costosasUsar otros hilos para tareas costosas

Usar las versiones asíncronas de las Usar las versiones asíncronas de las funcionesfunciones

BeginXXX, EndXXXBeginXXX, EndXXX

Page 37: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Programación asíncronaProgramación asíncronaAcceso al IU desde otro hiloAcceso al IU desde otro hilo

Los hilos secundarios Los hilos secundarios NUNCANUNCA deben deben acceder a las propiedades de los acceder a las propiedades de los controlescontroles

Windows Forms no es thread-safeWindows Forms no es thread-safe

Solución:Solución:Usar Usar Control.InvokeControl.Invoke o o Control.BeginInvoke Control.BeginInvoke para la actualizaciónpara la actualización

Page 38: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Multihilo en Windows FormsMultihilo en Windows Forms

Page 39: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de aplicacionesDespliegue de aplicaciones

Page 40: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de aplicacionesDespliegue de aplicacionesOpcionesOpciones

XCOPYXCOPYCopiar todas las librerías en un directorioCopiar todas las librerías en un directorio

La más sencillaLa más sencilla

Windows InstallerWindows InstallerCrear un paquete de instalaciónCrear un paquete de instalación

Permite acciones personalizadasPermite acciones personalizadas

Permite instalar componentes compartidosPermite instalar componentes compartidos

No Touch DeploymentNo Touch DeploymentDespliegue por HTTPDespliegue por HTTP

Page 41: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de aplicacionesDespliegue de aplicacionesNo Touch DeploymentNo Touch Deployment

La aplicación se inicia desde Internet La aplicación se inicia desde Internet ExplorerExplorer

Aunque puede lanzar una ventana nuevaAunque puede lanzar una ventana nueva

Descarga las librerías conforme las Descarga las librerías conforme las necesitenecesite

Caché automáticoCaché automático

InconvenientesInconvenientesNecesita conexiónNecesita conexión

Por defecto corre con permisos restringidosPor defecto corre con permisos restringidos

Page 42: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de aplicacionesDespliegue de aplicacionesSeguridadSeguridad

.NET define 5 grupos de código.NET define 5 grupos de código

Permisos asociados a cada unoPermisos asociados a cada unoMy Computer: sin restricciónMy Computer: sin restricción

Local Intranet: restringido (ej. sin disco)Local Intranet: restringido (ej. sin disco)

Internet, Trusted: muy restringido (ej. sin Internet, Trusted: muy restringido (ej. sin DNS)DNS)

Restricted: sin permiso de ejecuciónRestricted: sin permiso de ejecución

Determinado según la URL de inicioDeterminado según la URL de inicio

Page 43: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de aplicacionesDespliegue de aplicacionesSeguridad (II)Seguridad (II)

RecomendacionesRecomendacionesDesarrollar para el conjunto mínimo de Desarrollar para el conjunto mínimo de permisospermisos

No acceder al discoNo acceder al disco

No interactuar con el sistemaNo interactuar con el sistema

Escribir código safeEscribir código safe

Configurar sólo en casos estrictamente Configurar sólo en casos estrictamente necesariosnecesarios

Herramienta .NET ConfigurationHerramienta .NET Configuration

Crear nuevos grupos en lugar de cambiar los Crear nuevos grupos en lugar de cambiar los permisospermisos

Page 44: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Despliegue de Despliegue de aplicacionesaplicaciones

Page 45: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseño

Page 46: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoDefiniciónDefinición

Formas recomendadas para resolver Formas recomendadas para resolver problemas comunes en el softwareproblemas comunes en el software

Aportan consistencia y facilidad de Aportan consistencia y facilidad de mantenimientomantenimiento

http://www.microsoft.com/resources/practices/http://www.microsoft.com/resources/practices/

Varios patrones aplican especialmente a Varios patrones aplican especialmente a Smart ClientsSmart Clients

ObservadorObservador

Modelo Vista - ControladorModelo Vista - Controlador

CommandCommand

Page 47: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoObservadorObservador

En las aplicaciones ricas es común tener En las aplicaciones ricas es común tener distintas vistas de los mismos datosdistintas vistas de los mismos datos

Problema de sincronizaciónProblema de sincronización

Action

Action

Action

Action

Page 48: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoObservador (II)Observador (II)

El patrón observador relega las acciones El patrón observador relega las acciones a los datosa los datos

Son los datos los que notifican a las vistasSon los datos los que notifican a las vistas

Action

Action

Action

Action

Data

Page 49: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoModelo Vista - ControladorModelo Vista - Controlador

El modelo Vista – Controlador El modelo Vista – Controlador independiza y estructura el IUindependiza y estructura el IU

¿Por qué independizar IU del resto?¿Por qué independizar IU del resto?El interfaz gráfico cambia con frecuenciaEl interfaz gráfico cambia con frecuencia

Los datos se muestran de distinta formaLos datos se muestran de distinta forma

Las pruebas son complicadasLas pruebas son complicadas

Los desarrolladores pueden estar Los desarrolladores pueden estar especializadosespecializados

Page 50: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoModelo Vista – Controlador (II)Modelo Vista – Controlador (II)

ModeloModeloContiene los datos, su Contiene los datos, su comportamiento y el comportamiento y el estadoestado

VistaVistaGestiona la Gestiona la presentación de los presentación de los datosdatos

ControladorControladorInterpreta las acciones Interpreta las acciones del usuario, del usuario, informando al modelo informando al modelo y a la vistay a la vista

ModeloModelo

ControladorControlador

VistaVista

Page 51: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoModelo Vista – Controlador (III)Modelo Vista – Controlador (III)

Posibilidad unir Controlador y VistaPosibilidad unir Controlador y VistaModelo Documento – VistaModelo Documento – Vista

Normalmente unido a patrón Normalmente unido a patrón ObservadorObservador

Evita una referencia circularEvita una referencia circular

Vistas actualizadas con los cambios del Vistas actualizadas con los cambios del modelomodelo

VistaVistaDocumentoDocumento

Page 52: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseñoCommandCommand

Una acción suele estar accesible en Una acción suele estar accesible en distintos puntosdistintos puntos

Ej. Menú, toolbar, contextoEj. Menú, toolbar, contexto

El patrón Command encapsula el estado El patrón Command encapsula el estado y la acción asociados a los elementosy la acción asociados a los elementos

Dos clasesDos clasesCommand: Encapsula la acciónCommand: Encapsula la acción

Commander: Une commands a elementos Commander: Une commands a elementos de IUde IU

Page 53: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Patrones de diseñoPatrones de diseño

Page 54: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication Blocks

Page 55: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication Blocks¿Qué son?¿Qué son?

Bloques de código .NET que solventan Bloques de código .NET que solventan problemas comunes con mejores problemas comunes con mejores prácticasprácticas

Reusables, extensibles y modificablesReusables, extensibles y modificables

Acceso a datos, logging, configuración…Acceso a datos, logging, configuración…

Varios aplican especialmente a Smart Varios aplican especialmente a Smart ClientsClients

UpdaterUpdater

OfflineOffline

User Process InterfaceUser Process Interface

Page 56: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication BlocksUpdaterUpdater

Permite detectar, validar y descargar Permite detectar, validar y descargar actualizacionesactualizaciones

Modelo Modelo pullpullEl cliente comprueba periódicamenteEl cliente comprueba periódicamente

No necesitamos conexión para ejecutarNo necesitamos conexión para ejecutar

Descarga en segundo planoDescarga en segundo planoTecnología Windows Update (BITS)Tecnología Windows Update (BITS)

Page 57: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication BlocksOfflineOffline

Permite desarrollar aplicaciones que Permite desarrollar aplicaciones que trabajan sin conexión permanente (ej. trabajan sin conexión permanente (ej. Outlook 2003)Outlook 2003)

Sin cambiar el modelo de desarrollo online / Sin cambiar el modelo de desarrollo online / offlineoffline

IncorporaIncorporaFramework para realizar llamadas a Framework para realizar llamadas a servicios online / offline de forma servicios online / offline de forma transparentetransparente

Infraestructura para funcionamiento Infraestructura para funcionamiento asíncronoasíncrono

No incorporaNo incorporaProcesamiento de datos (ej. resolución Procesamiento de datos (ej. resolución conflictos)conflictos)

Page 58: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication BlocksOffline (II)Offline (II)

Page 59: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication BlocksUser Process InterfaceUser Process Interface

Framework modelo Vista – ControladorFramework modelo Vista – Controlador

IncluyeIncluyeClases base para cada elementoClases base para cada elemento

Configuración declarativa del flujo de Configuración declarativa del flujo de navegaciónnavegación

Independiente del interfazIndependiente del interfazMismo código de lógica para Web, Win o Mismo código de lógica para Web, Win o MóvilMóvil

Persistencia automática del modeloPersistencia automática del modeloPermite resumir sesiones, cambiar Permite resumir sesiones, cambiar dispositivo o navegar atrásdispositivo o navegar atrás

Page 60: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Application BlocksApplication BlocksUser Process Interface (II)User Process Interface (II)

Page 61: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Updater Application Updater Application BlockBlock

Page 62: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con Desarrollo con dispositivos móvilesdispositivos móviles

Page 63: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con dispositivosDesarrollo con dispositivos.NET Compact Framework.NET Compact Framework

Versión reducida del Framework .NETVersión reducida del Framework .NET

Diseñado para dispositivos inteligentesDiseñado para dispositivos inteligentesPocketPC y PocketPC Phone EditionPocketPC y PocketPC Phone Edition

SmartPhoneSmartPhone

Windows CEWindows CE

Mismo entorno: Visual Studio .NETMismo entorno: Visual Studio .NETEditoresEditores

DiseñadoresDiseñadores

Depuración (emulador o dispositivo Depuración (emulador o dispositivo conectado)conectado)

Page 64: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con dispositivosDesarrollo con dispositivosComparación con versión desktopComparación con versión desktop

Optimizado para pequeños dispositivosOptimizado para pequeños dispositivos

Misma librería de clasesMisma librería de clasesSin ASP.NET, configuración, XPath, Sin ASP.NET, configuración, XPath, Remoting…Remoting…

Framework Comparison ToolFramework Comparison ToolMuestra las diferencias entre los dosMuestra las diferencias entre los dos

Page 65: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con dispositivosDesarrollo con dispositivosInterfaz gráficoInterfaz gráfico

Juego de controles adaptadoJuego de controles adaptadoTextBox, ListBox, DataGrid, TreeView…TextBox, ListBox, DataGrid, TreeView…

Nuevos controles especialesNuevos controles especialesInputPanel, Spinner…InputPanel, Spinner…

Otros controles dependen del dispositivoOtros controles dependen del dispositivo¡Ej. Button!¡Ej. Button!

Controles de usuario no soportadosControles de usuario no soportados

Page 66: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con dispositivosDesarrollo con dispositivosAcceso a datosAcceso a datos

SQL Server 2000SQL Server 2000Mismas clases que .NET FrameworkMismas clases que .NET Framework

Necesita conexión con PCNecesita conexión con PC

SQL Server CESQL Server CEVersión reducida de SQL ServerVersión reducida de SQL Server

Permite sincronizaciónPermite sincronización

Proveedor ADO.NET Proveedor ADO.NET SqlServerCESqlServerCE

Servicios webServicios webSoporte de servicios web remotosSoporte de servicios web remotos

Page 67: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

Desarrollo con Desarrollo con dispositivosdispositivos

Page 68: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años

•Webcast teóricoWebcast teórico•Talleres en ciudadesTalleres en ciudades•Aplicación MSDN VideoAplicación MSDN Video

•Webcast práctica 3 FebreroWebcast práctica 3 Febrero•www.DesarrollaConMSDN.comwww.DesarrollaConMSDN.com

•Código de MSDN VideoCódigo de MSDN Video•CalendarioCalendario•TutorialesTutoriales•SeminariosSeminarios•ArtículosArtículos•ForosForos•Descuento 40% librosDescuento 40% libros

•Webcast teóricoWebcast teórico•Talleres en ciudadesTalleres en ciudades•Aplicación MSDN VideoAplicación MSDN Video

•Webcast práctica 3 FebreroWebcast práctica 3 Febrero•www.DesarrollaConMSDN.comwww.DesarrollaConMSDN.com

•Código de MSDN VideoCódigo de MSDN Video•CalendarioCalendario•TutorialesTutoriales•SeminariosSeminarios•ArtículosArtículos•ForosForos•Descuento 40% librosDescuento 40% libros

SepSep OctOct NoNovv

DicDic EneEne FebFeb MaMarr

AbrAbr MaMayy

JunJun

.NET y .NET y Servicios Servicios

WebWeb

Desarrollo Desarrollo webweb

SmartSmartClientsClients

Visual Studio Visual Studio 20052005

SQL Server 2005SQL Server 2005

Page 69: Aplicaciones Smart Client con.NET                      Publicada por Gustavo Tabora,  Modificado hace 10 años