SlideShare una empresa de Scribd logo
1 de 35
Validación de datos Introducción a la validación de datos. La validación de datos es el proceso mediante el que nos aseguramos de que los datos manipulados en la aplicación son correctos. Lo cual no solo implica que el tipo de datos sea el adecuado, sino que esté dentro de un rango válido para la aplicación. El 14 de julio de 1789 es una fecha válida, pero difícilmente será la fecha de nacimiento del titular de una cuenta corriente. La mayoría de las validaciones de datos actualmente realizadas son sólo validaciones de entrada de datos, en la introducción de los mismos en la aplicación desde el interfaz de usuario. Este planteamiento, válido hasta ahora, deberá cambiar con el desarrollo por capas, ya que cualquier capa que puede ser cambiada, por lo que ninguna puede asumir que esta validación haya sido efectuada en una capa anterior. Y no sólo en el sentido interfaz -> datos, ya que ¿de dónde vienen los datos que estamos presentando?
Validación de datos Introducción a la validación de datos (II). Este planteamiento se integra dentro de las políticas de seguridad ya que un escenario habitual es el de un hacker probando hasta donde llega la validación de datos y aprovechando los huecos para introducir código malicioso. Hay diferentes técnicas de validación, pero es recomendable validar la corrección de los datos en lugar de intentar comprobar si los valores son erróneos. Normalmente las pruebas que realizamos no detectan todos los errores de validación ya que están orientadas a validar funcionalidades y no inconsistencias de datos. Por lo que es recomendable diseñar las pruebas teniendo esto en mente y añadir validación integral de datos como parte del proceso de prueba. La mayoría de desarrolladores no pensamos en los ataques maliciosos que puedan lanzarse con nuestras aplicaciones cuando las estamos probando, circunstancia obviamente aprovechada por los hackers en cuanto les damos la oportunidad. ¡Acordémonos de validar los rangos de los datos, no sólo su tipo!
Validación de datos Introducción a la validación de datos (III). Ya se ha comentado que actualmente la validación de datos la efectuamos sólo en la capa de presentación, pero debemos realizarla en cada capa, ya que cuando diseñamos y desarrollamos la aplicación, no somos capaces de prever todos los usos que nuestra aplicación o módulo tendrán en un futuro. En cada capa se presentan necesidades de validación ya que no podemos esperar que la capa anterior haya realizado todas las validaciones pertinentes. Aunque inicialmente seamos nosotros o nuestro equipo los que desarrollen las capas adyacentes y tengamos claro el diseño de las mismas, en un futuro cualquiera de estas capas puede ser cambiada por otros desarrollos que no tengan el mismo detalle de diseño que las iniciales, con lo que podrían entrar datos incorrectos en nuestros procesos. Y no sólo en cuanto a la persistencia de los datos, a pesar de ser en esta capa donde mayor importancia cobra la validación de los datos a almacenar, no debiendo confiarse sólo en las validaciones que hayan podido efectuarse en la capa de presentación y/o las modificaciones aportadas en la capa de negocio.
Validación de datos Introducción a la validación de datos (IV). Las técnicas de validación cambian según el tipos de dato, amén de las que realice el sistema en función del tipo de dato: Números: tamaño de la variable, el signo, la presencia de decimales y el rango. Cadenas: tamaño máximo y mínimo, la codificación (UTF-8/UTF-16), la presencia de caracteres especiales. Nombres de archivo: que sea una cadena, que sea un nombre archivo válido, que no contenga comodines. URL o URI: similares a los nombres de archivo. Archivos de entrada: a las de nombres de archivo se añadirá el validar si la fuente es de confianza, el formato del archivo, si es texto o binario, el contenido, la codificación, etc. Fechas: aunque se presenten como texto, las fechas son realmente números, pero los formatos de entrada son altamente sensibles a la cultura específica del cliente, el uso de los controles calendar, en lugar de TextBox, es altamente recomendable. El rango de las fechas es otra cosa a tener muy en cuenta. Clases: las específicas en cada caso. Las expresiones regulares (RegEx) son una herramienta muy poderosa y eficiente a la hora de procesar y validar texto.
Validación de datos Validar aplicaciones Windows Forms – eventos de validación. La validación de un formulario Windows puede ser efectuada a dos niveles: Implícitamente: al nivel de control individual, especialmente útil cuando la validación de un control dependa de otra, aunque puede condicionar la secuencia de cumplimentación del formulario. Explícitamente: al nivel de formulario, al pulsar el botón de pasar adelante, útil si el orden de relleno de los campos no es importante y se quieren efectuar las validaciones por código y en bloque. Ambas técnicas pueden combinarse, en función de las necesidades. La mayoría de los controles de Windows Forms tienen un evento de validación, el cual se lanza cuando el usuario intenta salir del control y el mismo tiene su propiedad CausesValidation en true. Podemos añadir código al evento para implementar dicha validación o utilizar las validaciones del propio control. Los controles asociados a datos también tienen eventos de validación para asegurar la calidad del dato almacenado.
Validación de datos Validar aplicaciones Windows Forms– Control MaskedTextBox. Este control está específicamente diseñado para poder efectuar validaciones de cadenas de caracteres sin tener que añadir código en el evento, mediante el uso de máscaras de edición para el texto para efectuar los siguientes tipos de validación: Caracteres requeridos. Caracteres opcionales. El tipo de dato esperado en determinada posición de la cadena. Los caracteres que deban aparecer en posiciones fijas (guiones, comas, …) Procesos especiales a aplicar a la cadena, por ejemplo la conversión automática a mayúsculas. Cadenas literales predefinidas incluidas dentro del texto a rellenar, que el control devolverá junto con lo introducido por el cliente.
Validación de datos Validar aplicaciones Windows Forms – Omisión y retorno. Algunas veces las validaciones han de ser omitidas, por ejemplo al cerrar un formulario. Para ello utilizaremos el evento FormClosing del formulario y pondremos la propiedad e.cancel a false. Retorno (feedback) El efectuar las validaciones a distintos niveles añade complejidad ya que ¿cómo se informa al usuario de los errores? En la capa de presentación: es fácil, ya que estamos interactuando con el usuario y disponemos de varios mecanismos. En la capa de negocio: aquí la cosa se complica, ya que no hay interacción directa con el usuario y, además, desconocemos cuál es el tipo de interfaz utilizado. Aunque tenemos un par de mecanismos para solventar este problema: Generar códigos de retorno e información adicional para que el código cliente lo recupera y presente como sea necesario. Lanzar una excepción para que sea recogida desde el código cliente. En la capa de datos: nos encontramos con la misma situación que en el caso anterior, pudiendo lanzarse o sólo registrarse y devolver un código de retorno de error.
Validación de datos Validar aplicaciones Windows Forms - Demostración. En esta demostración veremos la codificación y el funcionamiento de las validaciones implícitas y explícitas en formularios Windows. Utilizaremos la validación implícita con eventos de validación. Usaremos un evento FormClosing para cancelar la validación al cerrar el formulario. Efectuaremos validaciones explícitas. Utilizaremos el control MaskedTextBox. Efectuaremos validaciones en la capa intermedia. Evidentemente, para poder efectuar estas validaciones será necesario tener algo de código desarrollado y funcionalidades que aún no han sido introducidas, el objetivo es el de ver en acción las validaciones de Windows Forms, no el de explicar la tecnologías adicionales aquí utilizadas. La solución que utilizaremos es la DemoValidaciónWF.
Validación de datos Validar aplicaciones ASP.NET En las aplicaciones ASP.NET es necesario tomar una decisión importante a la hora de enfocar el diseño de las mismas: ¿Dónde queremos efectuar las validaciones? ¿En el cliente o en el servidor? En la parte cliente, se realizará mediante el uso del lenguaje JavaScript, para que las validaciones se realicen directamente desde el propio browser del usuario, sin necesidad de envíos y respuestas al servidor. Sus principales características son: Ligero y rápido. Requiere un desarrollador experto en JavaScript. El código de validación está abierto para que cualquiera lo vea, aunque lo encriptemos, ya que es fácil de saltar. Si se han de validar datos contra listas de valores, estas deberán residir en la página o en una fuente externa descargada junto con la misma. En la parte servidor, como su nombre indica, las validaciones las realizaremos en el servidor. Sus principales características son: Requiere el envío de la página al servidor para su validación. El estado de los controles debe ser transferido en ambos sentidos, para mantener el estado de la página (viewstate) El cliente no puede ver el código de validación y éste se desarrollará con las mismas herramientas que el resto de la aplicación. Al ejecutarse el código en el servidor, las validaciones complejas o contra base de datos se pueden realizar sin ningún problema.
Validación de datos Validar aplicaciones ASP.NET (II) - Validadores Estos son controles incluidos en Visual Studio 2008 y que se utilizan para la validación de datos en ASP.NET, tanto en la parte cliente como en la del servidor. Están asociados a otro control (ControlToValidate) y permiten indicar el tipo de validación que se ha de efectuar sobre éste primero. Los controles validadores son: RequiredFieldValidator: permite garantizar que el campo no está en blanco ni vacío. CompareValidator: permite comparar los valores de dos controles relacionados. RangeValidator: valida que el valor del campo esté en un rango. RegularExpressionValidator: permite efectuar la validación con una expresión regular, con toda la potencia que éstas tienen. CustomValidator: nos permite codificar nuestra propia validación, si las anteriores no nos satisfacen. ValidationSummary: es un resumen de las validaciones efectuadas. DynamicValidator: recoge las excepciones lanzadas desde el modelo de datos y las replica como eventos de validación en la página Web.
Validación de datos Validar aplicaciones ASP.NET (III) - Demostración En esta demostración veremos las validaciones típicas en las aplicaciones Web de ASP.NET, mediante el uso de los controles validadores: RequiredFieldValidator. RangeValidator. RegularExpressionValidator. CustomValidatorControl. ValidationSummary. Como en la demostración anterior, no se trata aquí de ver a fondo todo el código desarrollado, sólo remarcar el uso de las validaciones en ASP.NET, el resto del código y sus particularidades se verán más adelante. La solución que utilizaremos es la DemoValidaciónASP.
Validación de datos Manejo de texto y cadenas largas Al desarrollar aplicaciones nos encontraremos con la necesidad de procesar textos, para lo cual el Framework nos da herramientas para leer, almacenar y manipular cadenas de caracteres mediante String y StringBuilder, expresiones regulares (RegEx) y las páginas de códigos. Las características de la clase String son: Es una colección de caracteres Unicode. Implementada como un array de objetos Char. El valor del objeto String es el contenido de la colección. Es un tipo por referencia. Permite: Especificar reglas de formato para manejar el contenido. Operaciones sensibles a cultura para manejar la presentación del contenido. Efectuar búsquedas y sustituciones de sub-cadenas. Concatenar múltiples cadenas en una. Trocear cadenas largas en varias pequeñas. Todos los tipos de .NET tiene un método ToString, heredado de la clase Object, para generar un String con su contenido.
Validación de datos Manejo de texto y cadenas largas (II) – Métodos de String
Validación de datos Manejo de texto y cadenas largas (III) – Métodos de String
Validación de datos Manejo de texto y cadenas largas (IV) – Miembros de String
Validación de datos Manejo de texto y cadenas largas (V) Un objeto String es inmutable, es decir: Después de creado, no se puede modificar. Cualquier método que parece cambiar el String está devolviendo realmente un nuevo String, con el contenido cambiado. Para modificar el contenido es preciso utilizar la clase System.text.StringBuilder Esta clase: Representa una cadena de caracteres modificable. Se puede concatenar, eliminar, sustituir e insertar caracteres sin crear un nuevo objeto. La longitud máxima de 2.147.483.647 caracteres (Int.MaxValue). El tamaño inicial por defecto es de 16 caracteres, pero esta clase se expande dinámicamente al añadir contenido. El método ToString() devuelve el contenido completo del objeto StringBuilder como un String.
Validación de datos Manejo de texto y cadenas largas (VI) – Miembros de StringBuilder
Validación de datos Manejo de texto y cadenas largas (VII) Cómo usar StringBuilder C# StringBuilder cadena = new StringBuilder(); cadena.Append(“Primera parte de la cadena.”); cadena.AppendFormat(“{0} y {1} partes de la cadena.”,      “Segunda”, “tercera”); VB Dim cadena as New StringBuilder() cadena.Append(“Primera parte de la cadena.”) cadena.AppendFormat(“ {0} y {1} partes de la cadena.”, _     “Segunda”, “tercera”) Resultado: "Primera parte de la cadena. Segunda y tercera partes de la cadena."
Validación de datos Expresiones regulares Además de las operaciones de manipulación de cadenas vistas hasta ahora, en algunas ocasiones es necesario procesar la información contenida en las cadenas de caracteres o realizar validaciones sobre la misma. Por ejemplo, podríamos querer limitar el tipo de caracteres utilizados en un campo de contraseña introducido por el usuario, en cuanto a que deban o no contener caracteres especiales, mayúsculas, minúsculas y/o números. También es posible que tengamos que lidiar con información suministrada por un sistema antiguo, cuyo formato no sea totalmente compatible con los sistemas actuales. Estos requerimientos son bastante complejos de gestionar mediante código y requieren un montón de instrucciones para ello. Pero disponemos de las expresiones regulares (RegEx), desarrollados en los entornos UNIX y PERL durante décadas, las cuales son laboriosas de entender, pero extremadamente eficaces a la hora de realizar este tipo de operaciones.
Validación de datos Expresiones regulares (II) Una expresión regular es una secuencia de caracteres (pattern string) con la que se puede: Comparar con un String para comprobar requerimientos de formato. Utilizar para sustituir o eliminar datos de una cadena. Comparar con apariciones repetitivas de datos. Utilizar para cambiar el formato de los datos o eliminar caracteres no válidos. Las expresiones regulares pueden ser extremadamente complejas La mayoría de los caracteres especiales son sensibles al contexto y tienen múltiples usos. Las expresiones regulares no tienen contexto de datos, habremos de gestionarlo nosotros en caso necesario. Un solo carácter erróneo en la expresión puede inutilizarla toda o producir resultados absolutamente aleatorios.
Validación de datos Expresiones regulares (III) ^{3}-?{4}$ Cualquier carácter no vacío ni espacio El carácter  anterior es opcional El carácter  anterior n veces Desde el inicio Hasta el final El carácter  anterior n veces Cualquier dígito numérico
Validación de datos Expresiones regulares (IV)
Validación de datos Expresiones regulares (V)
Validación de datos Expresiones regulares (VI)
Validación de datos Expresiones regulares (VII)
Validación de datos Expresiones regulares (VIII)
Validación de datos Expresiones regulares (IX)
Validación de datos Expresiones regulares (X)
Validación de datos Expresiones regulares (XI)
Validación de datos Expresiones regulares (XII) Para utilizar expresiones regulares para validar cadenas deberemos: Crear un objeto Regex, pasándole la plantilla de caracteres a utilizar como parámetro del constructor. Llamar a los métodos Ismatch, Match o Matches del objeto Regex, pasándole la cadena a validar como parámetro. Si queremos utilizar los métodos estáticos de la clase Regex deberemos llamar a los métodos Regex.IsMatch, Regex.Match o Regex.Matches pasando la plantilla y la cadena a validar contra ella como parámetros.
Validación de datos Expresiones regulares (XIII) Para utilizar expresiones regulares para extraer datos de cadenas deberemos: Crear una expresión regular que incluya grupos de coincidencia. Crear un objeto Regex. Crear una instancia del objeto Match utilizando el método instance.Match Recuperar los datos accediendo a los miembrs de la colección Match.Groups. Si queremos utilizar los métodos estáticos deberemos efectuar lo mismo que arriba, ignorando el segundo paso y llamando a Regex.Match en el paso 3.
Validación de datos Codificación de texto Las páginas de código son los juegos de caracteres utilizados para representar datos de cadena. Todos los tipos de codificación siguen basados en las tablas ASCII, las cuales utilizan 7 bits para representar los caracteres, lo cual nos da 128 caracteres. Muchos fabricantes utilizan los valores restantes, del 128 al 255, pero cada uno utiliza un formato propio, lo cual desemboca en incompatibilidades de codificación. Esta situación forzó la adopción de las páginas de códigos estándar de ANSI llamadas Unicode, las cuales nos permiten unos 100.000 caracteres distintos en una única página.
Validación de datos Codificación de texto (II) La clase Encoding es la que nos suministra el sistema para lidiar con estas temas y tiene métodos para: Devolver y tipo de codificación para poder codificar textos. Convertir una cadena de entrada en una serie de bytes de un determinado código. Suministrar soporte para una amplia variedad de codificaciones ANSI e ISO. El método Encoding.GetBytes es que se utiliza para la conversión de cadenas. Encoding e = Encoding.GetEncoding("Korean") Byte[] EncodedString; EncodedString = e.GetBytes("¡Hola, mundo!"); [C# Dim e as Encoding = Encoding.GetEncoding("Korean") Dim EncodedString As Byte() EncodedString = e.GetBytes("¡Hola, mundo!“)    [VB]
Validación de datos Preguntas: ¿Qué es la validación de datos? Es el proceso de asegurar que los datos de la aplicación son correctos y están dentro de los rangos adecuados. ¿En que se diferencia la validación de datos de la de entrada de datos? La validación de entrada de datos se efectúa en la capa de presentación, en el momento en el que se efectúa introducción de información en el sistema. En cambio la validación de datos se efectúa en cualquier capa de la aplicación y se asegura que la información manejada es adecuada para el sistema. ¿Porqué es importante realizar validaciones en cada capa? Porque las aplicaciones se desarrollan cada vez más en forma modular, sin depender unas capas de otras, lo cual implica que no podemos confiar en que las validaciones hayan sido efectuadas en una capa anterior.
Validación de datos Preguntas: ¿Cuál es la diferencia entre validación implícita y explícita? La validación implícita se realiza control a control, pero la explícita se realiza a nivel de formulario, mediante una rutina llamada al pulsar un botón de acción. ¿Se puede utilizar la funcionalidad y sencillez de los validadores en el lado del cliente? Si, fijando la propiedad client-side validation a true. ¿En qué forma nos ayuda el control MaskedTextBox para la validación de datos? En que nos permite filtrar los datos introducidos siguiendo una plantilla establecida. ¿Cómo podemos evitar que se efectúen las validaciones por defecto al cerrar el formulario? Fijando la propiedad cancel a false en el evento form closing.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (8)

Loreidys gonzales fundamentos de visual basic
Loreidys gonzales fundamentos de visual basicLoreidys gonzales fundamentos de visual basic
Loreidys gonzales fundamentos de visual basic
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Fundamentos vb
Fundamentos vbFundamentos vb
Fundamentos vb
 
Maria Añez
Maria AñezMaria Añez
Maria Añez
 
Kairubys rodriguez
Kairubys rodriguezKairubys rodriguez
Kairubys rodriguez
 
Tema2 ado net
Tema2 ado netTema2 ado net
Tema2 ado net
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
Controles aspnet.
Controles aspnet.Controles aspnet.
Controles aspnet.
 

Similar a Framework .NET 3.5 08 Validación de datos

Seguridad en el ciclo de desarrollo del software
Seguridad en el ciclo de desarrollo del softwareSeguridad en el ciclo de desarrollo del software
Seguridad en el ciclo de desarrollo del softwareAnel Sosa
 
Validando las entradas de usuario
Validando las entradas de usuarioValidando las entradas de usuario
Validando las entradas de usuarioCinthia Vera
 
Controles de validación en asp
Controles de validación en aspControles de validación en asp
Controles de validación en aspMaria Tomalá
 
Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4tantascosasquenose
 
Presentación 3 eje tematico (3)
Presentación 3 eje tematico (3)Presentación 3 eje tematico (3)
Presentación 3 eje tematico (3)Janethbaquer85
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
Proyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De ReclamosProyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De Reclamosinvestigacionformativaut
 
Proyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De ReclamosProyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De Reclamosinvestigacionformativaut
 
U4_Aplicaciones Web.pdf
U4_Aplicaciones Web.pdfU4_Aplicaciones Web.pdf
U4_Aplicaciones Web.pdfVICTORMORO11
 
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xusGeneXus
 
UDA-Anexo gestión de validaciones
UDA-Anexo gestión de validacionesUDA-Anexo gestión de validaciones
UDA-Anexo gestión de validacionesAnder Martinez
 

Similar a Framework .NET 3.5 08 Validación de datos (20)

Desarrollo de aplicaciones web
Desarrollo de aplicaciones webDesarrollo de aplicaciones web
Desarrollo de aplicaciones web
 
Seguridad en el ciclo de desarrollo del software
Seguridad en el ciclo de desarrollo del softwareSeguridad en el ciclo de desarrollo del software
Seguridad en el ciclo de desarrollo del software
 
Validando las entradas de usuario
Validando las entradas de usuarioValidando las entradas de usuario
Validando las entradas de usuario
 
Controles de validación en asp
Controles de validación en aspControles de validación en asp
Controles de validación en asp
 
Verificación y Validación del Diseño
Verificación y Validación del DiseñoVerificación y Validación del Diseño
Verificación y Validación del Diseño
 
Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4Curso basicoseguridadweb slideshare4
Curso basicoseguridadweb slideshare4
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
Presentación 3 eje tematico (3)
Presentación 3 eje tematico (3)Presentación 3 eje tematico (3)
Presentación 3 eje tematico (3)
 
Intro Guía de Testing OWASP
Intro Guía de Testing OWASPIntro Guía de Testing OWASP
Intro Guía de Testing OWASP
 
EasyDev
EasyDevEasyDev
EasyDev
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Proyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De ReclamosProyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De Reclamos
 
Proyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De ReclamosProyecto De Analisis Y Sistema De Reclamos
Proyecto De Analisis Y Sistema De Reclamos
 
Drs u2 ea_fegc
Drs u2 ea_fegcDrs u2 ea_fegc
Drs u2 ea_fegc
 
U4_Aplicaciones Web.pdf
U4_Aplicaciones Web.pdfU4_Aplicaciones Web.pdf
U4_Aplicaciones Web.pdf
 
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
 
UDA-Anexo gestión de validaciones
UDA-Anexo gestión de validacionesUDA-Anexo gestión de validaciones
UDA-Anexo gestión de validaciones
 
Servicios web ITT
Servicios web ITTServicios web ITT
Servicios web ITT
 
Servicios web itt
Servicios web ittServicios web itt
Servicios web itt
 
Servicios web itt
Servicios web ittServicios web itt
Servicios web itt
 

Más de Antonio Palomares Sender

Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesAntonio Palomares Sender
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redAntonio Palomares Sender
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingAntonio Palomares Sender
 
Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasAntonio Palomares Sender
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netAntonio Palomares Sender
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosAntonio Palomares Sender
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeAntonio Palomares Sender
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Antonio Palomares Sender
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serializaciónAntonio Palomares Sender
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoAntonio Palomares Sender
 

Más de Antonio Palomares Sender (13)

Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de soluciones
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la red
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawing
 
Framework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 SeguridadFramework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 Seguridad
 
Framework .NET 3.5 10 Linq
Framework .NET 3.5 10 LinqFramework .NET 3.5 10 Linq
Framework .NET 3.5 10 Linq
 
Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebas
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Framework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .netFramework .NET 3.5 06 Operativa básica del framework .net
Framework .NET 3.5 06 Operativa básica del framework .net
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtime
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entorno
 

Último

Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 

Último (20)

Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 

Framework .NET 3.5 08 Validación de datos

  • 1. Validación de datos Introducción a la validación de datos. La validación de datos es el proceso mediante el que nos aseguramos de que los datos manipulados en la aplicación son correctos. Lo cual no solo implica que el tipo de datos sea el adecuado, sino que esté dentro de un rango válido para la aplicación. El 14 de julio de 1789 es una fecha válida, pero difícilmente será la fecha de nacimiento del titular de una cuenta corriente. La mayoría de las validaciones de datos actualmente realizadas son sólo validaciones de entrada de datos, en la introducción de los mismos en la aplicación desde el interfaz de usuario. Este planteamiento, válido hasta ahora, deberá cambiar con el desarrollo por capas, ya que cualquier capa que puede ser cambiada, por lo que ninguna puede asumir que esta validación haya sido efectuada en una capa anterior. Y no sólo en el sentido interfaz -> datos, ya que ¿de dónde vienen los datos que estamos presentando?
  • 2. Validación de datos Introducción a la validación de datos (II). Este planteamiento se integra dentro de las políticas de seguridad ya que un escenario habitual es el de un hacker probando hasta donde llega la validación de datos y aprovechando los huecos para introducir código malicioso. Hay diferentes técnicas de validación, pero es recomendable validar la corrección de los datos en lugar de intentar comprobar si los valores son erróneos. Normalmente las pruebas que realizamos no detectan todos los errores de validación ya que están orientadas a validar funcionalidades y no inconsistencias de datos. Por lo que es recomendable diseñar las pruebas teniendo esto en mente y añadir validación integral de datos como parte del proceso de prueba. La mayoría de desarrolladores no pensamos en los ataques maliciosos que puedan lanzarse con nuestras aplicaciones cuando las estamos probando, circunstancia obviamente aprovechada por los hackers en cuanto les damos la oportunidad. ¡Acordémonos de validar los rangos de los datos, no sólo su tipo!
  • 3. Validación de datos Introducción a la validación de datos (III). Ya se ha comentado que actualmente la validación de datos la efectuamos sólo en la capa de presentación, pero debemos realizarla en cada capa, ya que cuando diseñamos y desarrollamos la aplicación, no somos capaces de prever todos los usos que nuestra aplicación o módulo tendrán en un futuro. En cada capa se presentan necesidades de validación ya que no podemos esperar que la capa anterior haya realizado todas las validaciones pertinentes. Aunque inicialmente seamos nosotros o nuestro equipo los que desarrollen las capas adyacentes y tengamos claro el diseño de las mismas, en un futuro cualquiera de estas capas puede ser cambiada por otros desarrollos que no tengan el mismo detalle de diseño que las iniciales, con lo que podrían entrar datos incorrectos en nuestros procesos. Y no sólo en cuanto a la persistencia de los datos, a pesar de ser en esta capa donde mayor importancia cobra la validación de los datos a almacenar, no debiendo confiarse sólo en las validaciones que hayan podido efectuarse en la capa de presentación y/o las modificaciones aportadas en la capa de negocio.
  • 4. Validación de datos Introducción a la validación de datos (IV). Las técnicas de validación cambian según el tipos de dato, amén de las que realice el sistema en función del tipo de dato: Números: tamaño de la variable, el signo, la presencia de decimales y el rango. Cadenas: tamaño máximo y mínimo, la codificación (UTF-8/UTF-16), la presencia de caracteres especiales. Nombres de archivo: que sea una cadena, que sea un nombre archivo válido, que no contenga comodines. URL o URI: similares a los nombres de archivo. Archivos de entrada: a las de nombres de archivo se añadirá el validar si la fuente es de confianza, el formato del archivo, si es texto o binario, el contenido, la codificación, etc. Fechas: aunque se presenten como texto, las fechas son realmente números, pero los formatos de entrada son altamente sensibles a la cultura específica del cliente, el uso de los controles calendar, en lugar de TextBox, es altamente recomendable. El rango de las fechas es otra cosa a tener muy en cuenta. Clases: las específicas en cada caso. Las expresiones regulares (RegEx) son una herramienta muy poderosa y eficiente a la hora de procesar y validar texto.
  • 5. Validación de datos Validar aplicaciones Windows Forms – eventos de validación. La validación de un formulario Windows puede ser efectuada a dos niveles: Implícitamente: al nivel de control individual, especialmente útil cuando la validación de un control dependa de otra, aunque puede condicionar la secuencia de cumplimentación del formulario. Explícitamente: al nivel de formulario, al pulsar el botón de pasar adelante, útil si el orden de relleno de los campos no es importante y se quieren efectuar las validaciones por código y en bloque. Ambas técnicas pueden combinarse, en función de las necesidades. La mayoría de los controles de Windows Forms tienen un evento de validación, el cual se lanza cuando el usuario intenta salir del control y el mismo tiene su propiedad CausesValidation en true. Podemos añadir código al evento para implementar dicha validación o utilizar las validaciones del propio control. Los controles asociados a datos también tienen eventos de validación para asegurar la calidad del dato almacenado.
  • 6. Validación de datos Validar aplicaciones Windows Forms– Control MaskedTextBox. Este control está específicamente diseñado para poder efectuar validaciones de cadenas de caracteres sin tener que añadir código en el evento, mediante el uso de máscaras de edición para el texto para efectuar los siguientes tipos de validación: Caracteres requeridos. Caracteres opcionales. El tipo de dato esperado en determinada posición de la cadena. Los caracteres que deban aparecer en posiciones fijas (guiones, comas, …) Procesos especiales a aplicar a la cadena, por ejemplo la conversión automática a mayúsculas. Cadenas literales predefinidas incluidas dentro del texto a rellenar, que el control devolverá junto con lo introducido por el cliente.
  • 7. Validación de datos Validar aplicaciones Windows Forms – Omisión y retorno. Algunas veces las validaciones han de ser omitidas, por ejemplo al cerrar un formulario. Para ello utilizaremos el evento FormClosing del formulario y pondremos la propiedad e.cancel a false. Retorno (feedback) El efectuar las validaciones a distintos niveles añade complejidad ya que ¿cómo se informa al usuario de los errores? En la capa de presentación: es fácil, ya que estamos interactuando con el usuario y disponemos de varios mecanismos. En la capa de negocio: aquí la cosa se complica, ya que no hay interacción directa con el usuario y, además, desconocemos cuál es el tipo de interfaz utilizado. Aunque tenemos un par de mecanismos para solventar este problema: Generar códigos de retorno e información adicional para que el código cliente lo recupera y presente como sea necesario. Lanzar una excepción para que sea recogida desde el código cliente. En la capa de datos: nos encontramos con la misma situación que en el caso anterior, pudiendo lanzarse o sólo registrarse y devolver un código de retorno de error.
  • 8. Validación de datos Validar aplicaciones Windows Forms - Demostración. En esta demostración veremos la codificación y el funcionamiento de las validaciones implícitas y explícitas en formularios Windows. Utilizaremos la validación implícita con eventos de validación. Usaremos un evento FormClosing para cancelar la validación al cerrar el formulario. Efectuaremos validaciones explícitas. Utilizaremos el control MaskedTextBox. Efectuaremos validaciones en la capa intermedia. Evidentemente, para poder efectuar estas validaciones será necesario tener algo de código desarrollado y funcionalidades que aún no han sido introducidas, el objetivo es el de ver en acción las validaciones de Windows Forms, no el de explicar la tecnologías adicionales aquí utilizadas. La solución que utilizaremos es la DemoValidaciónWF.
  • 9. Validación de datos Validar aplicaciones ASP.NET En las aplicaciones ASP.NET es necesario tomar una decisión importante a la hora de enfocar el diseño de las mismas: ¿Dónde queremos efectuar las validaciones? ¿En el cliente o en el servidor? En la parte cliente, se realizará mediante el uso del lenguaje JavaScript, para que las validaciones se realicen directamente desde el propio browser del usuario, sin necesidad de envíos y respuestas al servidor. Sus principales características son: Ligero y rápido. Requiere un desarrollador experto en JavaScript. El código de validación está abierto para que cualquiera lo vea, aunque lo encriptemos, ya que es fácil de saltar. Si se han de validar datos contra listas de valores, estas deberán residir en la página o en una fuente externa descargada junto con la misma. En la parte servidor, como su nombre indica, las validaciones las realizaremos en el servidor. Sus principales características son: Requiere el envío de la página al servidor para su validación. El estado de los controles debe ser transferido en ambos sentidos, para mantener el estado de la página (viewstate) El cliente no puede ver el código de validación y éste se desarrollará con las mismas herramientas que el resto de la aplicación. Al ejecutarse el código en el servidor, las validaciones complejas o contra base de datos se pueden realizar sin ningún problema.
  • 10. Validación de datos Validar aplicaciones ASP.NET (II) - Validadores Estos son controles incluidos en Visual Studio 2008 y que se utilizan para la validación de datos en ASP.NET, tanto en la parte cliente como en la del servidor. Están asociados a otro control (ControlToValidate) y permiten indicar el tipo de validación que se ha de efectuar sobre éste primero. Los controles validadores son: RequiredFieldValidator: permite garantizar que el campo no está en blanco ni vacío. CompareValidator: permite comparar los valores de dos controles relacionados. RangeValidator: valida que el valor del campo esté en un rango. RegularExpressionValidator: permite efectuar la validación con una expresión regular, con toda la potencia que éstas tienen. CustomValidator: nos permite codificar nuestra propia validación, si las anteriores no nos satisfacen. ValidationSummary: es un resumen de las validaciones efectuadas. DynamicValidator: recoge las excepciones lanzadas desde el modelo de datos y las replica como eventos de validación en la página Web.
  • 11. Validación de datos Validar aplicaciones ASP.NET (III) - Demostración En esta demostración veremos las validaciones típicas en las aplicaciones Web de ASP.NET, mediante el uso de los controles validadores: RequiredFieldValidator. RangeValidator. RegularExpressionValidator. CustomValidatorControl. ValidationSummary. Como en la demostración anterior, no se trata aquí de ver a fondo todo el código desarrollado, sólo remarcar el uso de las validaciones en ASP.NET, el resto del código y sus particularidades se verán más adelante. La solución que utilizaremos es la DemoValidaciónASP.
  • 12. Validación de datos Manejo de texto y cadenas largas Al desarrollar aplicaciones nos encontraremos con la necesidad de procesar textos, para lo cual el Framework nos da herramientas para leer, almacenar y manipular cadenas de caracteres mediante String y StringBuilder, expresiones regulares (RegEx) y las páginas de códigos. Las características de la clase String son: Es una colección de caracteres Unicode. Implementada como un array de objetos Char. El valor del objeto String es el contenido de la colección. Es un tipo por referencia. Permite: Especificar reglas de formato para manejar el contenido. Operaciones sensibles a cultura para manejar la presentación del contenido. Efectuar búsquedas y sustituciones de sub-cadenas. Concatenar múltiples cadenas en una. Trocear cadenas largas en varias pequeñas. Todos los tipos de .NET tiene un método ToString, heredado de la clase Object, para generar un String con su contenido.
  • 13. Validación de datos Manejo de texto y cadenas largas (II) – Métodos de String
  • 14. Validación de datos Manejo de texto y cadenas largas (III) – Métodos de String
  • 15. Validación de datos Manejo de texto y cadenas largas (IV) – Miembros de String
  • 16. Validación de datos Manejo de texto y cadenas largas (V) Un objeto String es inmutable, es decir: Después de creado, no se puede modificar. Cualquier método que parece cambiar el String está devolviendo realmente un nuevo String, con el contenido cambiado. Para modificar el contenido es preciso utilizar la clase System.text.StringBuilder Esta clase: Representa una cadena de caracteres modificable. Se puede concatenar, eliminar, sustituir e insertar caracteres sin crear un nuevo objeto. La longitud máxima de 2.147.483.647 caracteres (Int.MaxValue). El tamaño inicial por defecto es de 16 caracteres, pero esta clase se expande dinámicamente al añadir contenido. El método ToString() devuelve el contenido completo del objeto StringBuilder como un String.
  • 17. Validación de datos Manejo de texto y cadenas largas (VI) – Miembros de StringBuilder
  • 18. Validación de datos Manejo de texto y cadenas largas (VII) Cómo usar StringBuilder C# StringBuilder cadena = new StringBuilder(); cadena.Append(“Primera parte de la cadena.”); cadena.AppendFormat(“{0} y {1} partes de la cadena.”, “Segunda”, “tercera”); VB Dim cadena as New StringBuilder() cadena.Append(“Primera parte de la cadena.”) cadena.AppendFormat(“ {0} y {1} partes de la cadena.”, _ “Segunda”, “tercera”) Resultado: "Primera parte de la cadena. Segunda y tercera partes de la cadena."
  • 19. Validación de datos Expresiones regulares Además de las operaciones de manipulación de cadenas vistas hasta ahora, en algunas ocasiones es necesario procesar la información contenida en las cadenas de caracteres o realizar validaciones sobre la misma. Por ejemplo, podríamos querer limitar el tipo de caracteres utilizados en un campo de contraseña introducido por el usuario, en cuanto a que deban o no contener caracteres especiales, mayúsculas, minúsculas y/o números. También es posible que tengamos que lidiar con información suministrada por un sistema antiguo, cuyo formato no sea totalmente compatible con los sistemas actuales. Estos requerimientos son bastante complejos de gestionar mediante código y requieren un montón de instrucciones para ello. Pero disponemos de las expresiones regulares (RegEx), desarrollados en los entornos UNIX y PERL durante décadas, las cuales son laboriosas de entender, pero extremadamente eficaces a la hora de realizar este tipo de operaciones.
  • 20. Validación de datos Expresiones regulares (II) Una expresión regular es una secuencia de caracteres (pattern string) con la que se puede: Comparar con un String para comprobar requerimientos de formato. Utilizar para sustituir o eliminar datos de una cadena. Comparar con apariciones repetitivas de datos. Utilizar para cambiar el formato de los datos o eliminar caracteres no válidos. Las expresiones regulares pueden ser extremadamente complejas La mayoría de los caracteres especiales son sensibles al contexto y tienen múltiples usos. Las expresiones regulares no tienen contexto de datos, habremos de gestionarlo nosotros en caso necesario. Un solo carácter erróneo en la expresión puede inutilizarla toda o producir resultados absolutamente aleatorios.
  • 21. Validación de datos Expresiones regulares (III) ^{3}-?{4}$ Cualquier carácter no vacío ni espacio El carácter anterior es opcional El carácter anterior n veces Desde el inicio Hasta el final El carácter anterior n veces Cualquier dígito numérico
  • 22. Validación de datos Expresiones regulares (IV)
  • 23. Validación de datos Expresiones regulares (V)
  • 24. Validación de datos Expresiones regulares (VI)
  • 25. Validación de datos Expresiones regulares (VII)
  • 26. Validación de datos Expresiones regulares (VIII)
  • 27. Validación de datos Expresiones regulares (IX)
  • 28. Validación de datos Expresiones regulares (X)
  • 29. Validación de datos Expresiones regulares (XI)
  • 30. Validación de datos Expresiones regulares (XII) Para utilizar expresiones regulares para validar cadenas deberemos: Crear un objeto Regex, pasándole la plantilla de caracteres a utilizar como parámetro del constructor. Llamar a los métodos Ismatch, Match o Matches del objeto Regex, pasándole la cadena a validar como parámetro. Si queremos utilizar los métodos estáticos de la clase Regex deberemos llamar a los métodos Regex.IsMatch, Regex.Match o Regex.Matches pasando la plantilla y la cadena a validar contra ella como parámetros.
  • 31. Validación de datos Expresiones regulares (XIII) Para utilizar expresiones regulares para extraer datos de cadenas deberemos: Crear una expresión regular que incluya grupos de coincidencia. Crear un objeto Regex. Crear una instancia del objeto Match utilizando el método instance.Match Recuperar los datos accediendo a los miembrs de la colección Match.Groups. Si queremos utilizar los métodos estáticos deberemos efectuar lo mismo que arriba, ignorando el segundo paso y llamando a Regex.Match en el paso 3.
  • 32. Validación de datos Codificación de texto Las páginas de código son los juegos de caracteres utilizados para representar datos de cadena. Todos los tipos de codificación siguen basados en las tablas ASCII, las cuales utilizan 7 bits para representar los caracteres, lo cual nos da 128 caracteres. Muchos fabricantes utilizan los valores restantes, del 128 al 255, pero cada uno utiliza un formato propio, lo cual desemboca en incompatibilidades de codificación. Esta situación forzó la adopción de las páginas de códigos estándar de ANSI llamadas Unicode, las cuales nos permiten unos 100.000 caracteres distintos en una única página.
  • 33. Validación de datos Codificación de texto (II) La clase Encoding es la que nos suministra el sistema para lidiar con estas temas y tiene métodos para: Devolver y tipo de codificación para poder codificar textos. Convertir una cadena de entrada en una serie de bytes de un determinado código. Suministrar soporte para una amplia variedad de codificaciones ANSI e ISO. El método Encoding.GetBytes es que se utiliza para la conversión de cadenas. Encoding e = Encoding.GetEncoding("Korean") Byte[] EncodedString; EncodedString = e.GetBytes("¡Hola, mundo!"); [C# Dim e as Encoding = Encoding.GetEncoding("Korean") Dim EncodedString As Byte() EncodedString = e.GetBytes("¡Hola, mundo!“) [VB]
  • 34. Validación de datos Preguntas: ¿Qué es la validación de datos? Es el proceso de asegurar que los datos de la aplicación son correctos y están dentro de los rangos adecuados. ¿En que se diferencia la validación de datos de la de entrada de datos? La validación de entrada de datos se efectúa en la capa de presentación, en el momento en el que se efectúa introducción de información en el sistema. En cambio la validación de datos se efectúa en cualquier capa de la aplicación y se asegura que la información manejada es adecuada para el sistema. ¿Porqué es importante realizar validaciones en cada capa? Porque las aplicaciones se desarrollan cada vez más en forma modular, sin depender unas capas de otras, lo cual implica que no podemos confiar en que las validaciones hayan sido efectuadas en una capa anterior.
  • 35. Validación de datos Preguntas: ¿Cuál es la diferencia entre validación implícita y explícita? La validación implícita se realiza control a control, pero la explícita se realiza a nivel de formulario, mediante una rutina llamada al pulsar un botón de acción. ¿Se puede utilizar la funcionalidad y sencillez de los validadores en el lado del cliente? Si, fijando la propiedad client-side validation a true. ¿En qué forma nos ayuda el control MaskedTextBox para la validación de datos? En que nos permite filtrar los datos introducidos siguiendo una plantilla establecida. ¿Cómo podemos evitar que se efectúen las validaciones por defecto al cerrar el formulario? Fijando la propiedad cancel a false en el evento form closing.