Programacion de aplicaciones Web con ASP.NET

139
Visual Studio .NET 2008 ASP .NET Programación ASP.NET 1 Javier Roig Garro [email protected] dunbit.blogspot.com dunbitFormacion.blogspot.com dunbitTecnico.blogspot.com

description

Conceptos básicos del entorno, los controles y la programación necesaria para crear páginas web

Transcript of Programacion de aplicaciones Web con ASP.NET

Page 1: Programacion de aplicaciones Web con ASP.NET

Visual Studio .NET 2008ASP .NET

Programación ASP.NET

1

Javier Roig [email protected]

dunbit.blogspot.comdunbitFormacion.blogspot.com

dunbitTecnico.blogspot.com

Page 2: Programacion de aplicaciones Web con ASP.NET

1. Introducción. El FrameWork de .NET. 2. El entorno de Desarrollo, características 3. Creación de Formularios Web. 4. Codificación en Formularios Web. 5. Depuración de Aplicaciones Web. 6. Validación de la Entrada de datos. 7. Conceptos básicos de acceso a datos con

ADO.NET 8. Servicios Web XML 9. Manejo de Estado en las Aplicaciones Web

ASP .NET. 10. Configuración, Optimización y Distribución de

Aplicaciones Web ASP .NET. 11. Configuración de la seguridad de las

Aplicaciones Web ASP .NET.

Programación ASP.NET

2

Page 3: Programacion de aplicaciones Web con ASP.NET

Introducción.NET FrameWork

Commond Laguage RuntimeBiblioteca de clases

ADO .NETASP .NET

User InterfaceConclusión

Programación ASP.NET

3

Page 4: Programacion de aplicaciones Web con ASP.NET

Definición Modelo de programación consistente para

todas las plataformas Interoperabilidad entre tecnologías Fácil migración Soporte HTML, XML, SOAP

Programación ASP.NET

4

Page 5: Programacion de aplicaciones Web con ASP.NET

Servicios comunes para ejecutara aplicaciones .net Simplifica la programación de objetos COM+, ya no es

necesario programar el comportamiento entre aplicaciones. .NET Soporta clases, herencia, métodos, propiedades,

eventos, polimorfismo, constructores Commond Languaje Specification. Base compatible para

implementar código con cualquier lenguaje. Visual Studio .NET. Entorno de desarrollo multilingüe.

Programación ASP.NET

5

Page 6: Programacion de aplicaciones Web con ASP.NET

Commond Languaje Runtime (CLR) . NET Framework library ADO .NET ASP .NET Interfaz de usuario

Programación ASP.NET

6

Page 7: Programacion de aplicaciones Web con ASP.NET

Descripción Simplifica desarrollo

por un entorno robusto

Soporta múltiples lenguajes

Proporciona un entorno gestionado (Garbage collection, seguridad)

Programación ASP.NET

7

Page 8: Programacion de aplicaciones Web con ASP.NET

Class Loader. Carga en memoria y prepara para su ejecución MSIL (Microsoft Intermediate Languaje). Convierte MSIL a código

nativo justa antes de ejecutar Code Manager. Gestiona la ejecución del código Garbage Collection. Controla el ciclo de vida de todos los

objetos Security Engine. Permite tener seguridad por el origen del

código y por el usuario Debug Engine. Depurar y realizar trazas del código Type Checker. Evita uso incorrecto de variables no inicializadas Excepcion Manager. Estructura de manejo de excepciones. Thread Suport. Programación multihilo. Com Marshaled. Gestion de comunicación de objetos com .NET FrameWork Class Library Support.

Programación ASP.NET

8

Page 9: Programacion de aplicaciones Web con ASP.NET

Namespace. Organización Lógica de tipos y clases base relacionadas. Un namespace puede agrupar otros namespaces

System. Contienen definición de las clases fundamentales Sytem.Collections. Ordenación de listas, agrupación de datos System.IO. Entrada y salidad de datos a ficheros, streams. System.NET. Protocolo TCP/IP y control de socket ..... .NET Framework SDK Documentation

Programación ASP.NET

9

Page 10: Programacion de aplicaciones Web con ASP.NET

Nueva generación de ActiveX Data Object Soporta programación desconectada Provee soporte para XML System.Data. Namespace que contiene la clase

DataSet System.XML Namespace que soporta XML según la

compilación W3C. System.XML.Xsl, soporta transformaciones. System.XML.Serializacion, contiene la base para los

Servicios Web

Programación ASP.NET

10

Page 11: Programacion de aplicaciones Web con ASP.NET

Apartado del framework que permite desarrollar potentes aplicaciones Web

Elementos ASP .Net Web Forms, permite desarrollar interfaces de usuario ASP .NET Web Services, estructura para construir aplicaciones

web distribuidas ASP .NET Web Services, se basan en protocolos estándar de

internet (HTTP, XML,SOAP) System.Web, clases básicas para el cacheado, seguridad,

configuración System.Web.Services, gestiona los servicios web System.Web.UI, contiene los controles Html (HTMLControls) y

los controles web (WEBControls)

Programación ASP.NET

11

Page 12: Programacion de aplicaciones Web con ASP.NET

Evolución más flexible de ASP Páginas Web Dinámicas que pueden acceder los

recursos del Servidor Procesamiento del lado del Servidor de Formulario

Web Servicios Web XML que permiten crear

Aplicaciones Web distribuidas Independiente del navegador Independiente del Lenguaje

Programación ASP.NET

12

Page 13: Programacion de aplicaciones Web con ASP.NET

Uso de herencia, constructores, destructores, sobrecarga, polimorfismo permitiendo la potencia de C#

Estructura de gestión de excepciones anidadas Programación multihilo (multithreading) Garbage Collection, evita que se queden objetos en

memoria sin utilizar. Creación web forms facilmente, programando eventos de los

controles como en formularios clientes Creación de Servicios Web rápidamente a modo de la

creación de componentes de VB 6

Programación ASP.NET

13

Page 14: Programacion de aplicaciones Web con ASP.NET

El Entorno de DesarrolloSoporte de múltiples lenguajes

Ensamblados y referenciasCompilación y ejecución

Espacios de Nombre - Namespaces

Programación ASP.NET

14

Page 15: Programacion de aplicaciones Web con ASP.NET

IDE (Integrated Development Evironment) Elementos de un proyecto Uso de las características del entorno Depuración de un proyecto Compilación en .NET

Programación ASP.NET

15

Page 16: Programacion de aplicaciones Web con ASP.NET

Solo un entorno para todas las herramientas de desarrollo

Una solución puede contener múltiples lenguajes Una solución puede contener múltiples proyectos Personalizar el entorno de trabajo Visor de Internet integrado Depuración de código

Programación ASP.NET

16

Page 17: Programacion de aplicaciones Web con ASP.NET

Aplicación Windows, Aplicación estándar Librería de Clases, a modo de dll de vb 6 Windows Control Library, Controles definidos por el usuario. ASP .NET Web Aplication, aplicación que se va a ejecutar en un

Internet Information Server. ASP. Web Services, aplicación que va a proveer de servicios XML a

aplicaciones clientes Web Control Library, Controles de usuario para aplicaciones web. Aplicación de consola, se ejecuta en la línea de comandos Otras (Servicios Windows, proyectos vacíos..)

Programación ASP.NET

17

Page 18: Programacion de aplicaciones Web con ASP.NET

Editor Modo diseño Modo Edición

Explorador de soluciones Mostrar “todos los ficheros” Anidar Elementos relacionados Copiar Sitio Propiedades sitio web

Ayuda Dinámica Propiedades Lista de Tareas

Personalizar elementos Explorador de servidores Caja Herramientas

Data, Web Forms, Components, HTML

Programación ASP.NET 18

Page 19: Programacion de aplicaciones Web con ASP.NET

Facilita la anotación de temas pendientes Mostrar la ventana

Ver Lista de Tareas CTRL + º, + T

Crear tareas directamente en la lista Se muestran en la sección Tareas de usuario

Crear tareas mediante comentarios en el código Se muestran en la sección comentarios ‘TODO texto de prueba Editar la lista de palabras claves desde: Herramientas

Opciones (Activar la casilla) Mostrar todas las configuraciones Entorno Lista de Tareas

Pulsando doble clic sobre la tarea va a la posición del código asociada

Programación ASP.NET

19

Page 20: Programacion de aplicaciones Web con ASP.NET

Especificaciones Crear un nuevo proyecto Crear la interfaz Escribir el código Compilar el proyecto Testar y depurar Distribuir / implantar el proyecto

Programación ASP.NET 20

Page 21: Programacion de aplicaciones Web con ASP.NET

Carpeta para la solución (.sln) Utilizando localhost

◦ Carpeta para los archivos web dentro de inetpub\wwwroot .vbproj, .aspx, web.config, global.asax. Asmx .ascx

◦ Carpeta para el ensamblado inetpub\wwwroot\proyecto\bin◦ .dll

Utilizando sistema de archivos◦ Carpeta para los archivos web dentro de la

ruta del sitio .vbproj, .aspx, web.config, global.asax .asmx .ascx

◦ Carpeta para el ensamblado ruta del sitio\proyecto\bin◦ .dll

Programación ASP.NET 21

Page 22: Programacion de aplicaciones Web con ASP.NET

Desde el explorador de soluciones Bin .dll App_Browsers .browser App_Code .cs, .vb, .xsd App_Data .mdb, .mdf, .xml App_GlobalResources .resx App_LocalResources .resx App_Themes .skin, .css, .xsl App_WebReferences .wsdl

Programación ASP.NET 22

Page 23: Programacion de aplicaciones Web con ASP.NET

Establecer puntos de ruptura Propiedades Ventanas Depuración

Variables locales Resultado de la compilación Ventana de Inspección Pila Puntos de Ruptura

Ventana de Comando Cmd, immed

Programación ASP.NET

23

Page 24: Programacion de aplicaciones Web con ASP.NET

Ensamblados (.dll , .exe y ficheros auxiliares) .Net FrameWork tiene ensamblado predefinidos Se crean automáticamente cuando se construye un

proyecto Referencias a elementos externos del proyecto.

.NET COM Proyectos

Menú Proyecto Agregar Referencia Botón derecho en el proyecto Agregar Referencia

Programación ASP.NET

24

Page 25: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

25

Compilación automática Proceso mejorado ASP NET 2.0 Eliminación pre compilación en el IDE Proveedores de construcción

personalizados Compilación dinámica en dos pasos

Analizar sintácticamente los archivos Compilarlos

Precompilación sobre la marcha

Page 26: Programacion de aplicaciones Web con ASP.NET

Organización lógica de objetos relacionados Crea Nombres perfectamente identificados para los objetos

Evita ambigüedad Evita conflicto con nombres entre clases

Uso de Import facilita la lectura del proyectoImports MiProyecto.Superior.EnSuperior....Dim y as New Interior()

Se puede acceder a cualquier elemento en un ensamblado mediante su nombre cualificado

Programación ASP.NET

26

Page 27: Programacion de aplicaciones Web con ASP.NET

Qué es un web FormCrear ASP

Actualizar Html -> ASPTipos de controles Servidor

_VIEWSTATEControles HTMLControles WEB

Controles Personalizados

Programación ASP.NET

27

Page 28: Programacion de aplicaciones Web con ASP.NET

Combinación de código HTML + controles que se ejecutan en el servidor

Diferencia con ASP tradicional Extensión .aspx Pueden coexistir con páginas .asp

o .html Ficheros .aspx.vb /.aspx.cs contienen el

código asociado

Programación ASP.NET

28

Page 29: Programacion de aplicaciones Web con ASP.NET

Tres niveles de atributos Page, Definen funciones globales <%@ Page Languaje=“vb” CodeFile=“WebForm1.aspx.vb” SmartNavigation=“true” %><%@ Page Languaje=“c#” CodeFile =“WebForm1.aspx.cs”

SmartNavigation=“true” %> Código, gestión de eventos del formulario

<script> </script> LayOut, presentación de los datos

Body, Como se va a mostrar la página< body>....</body>

Form, como se procesan grupos de control< form id=“Form1” method “post” runat=“server”>....</form>

Programación ASP.NET

29

Page 30: Programacion de aplicaciones Web con ASP.NET

Languaje Lenguaje en el que está escrita Vb, c#, jscrip

CodeFile Qué página contiene el código

Inherits Clase con la que va a trabajar

AutoEventWireup Si hay que especifiacar los procedimientos para los

eventos o los toma dependiendo del nombre del procedimientos

Programación ASP.NET

30

Page 31: Programacion de aplicaciones Web con ASP.NET

Código para ejecutar eventos del cliente <script runat=“server”> el evento se ejecuta en

el servidor Se recomienda programar los eventos de servidor

en el fichero de código asociado para diferenciarlo del código que va a interpretar el navegador

Programación ASP.NET

31

Page 32: Programacion de aplicaciones Web con ASP.NET

No tiene que ver con el concepto de formulario Puedes tener varios <form> .. </form> en una web pero

solo uno que se ejecute en el lado servidor Method, como se envian los valores al servidor

Post, datos se envian en parejas nombre/valor dentro de la peticion http

Get, datos se pasan como un estring Runat,identifica si se devuelve información al servidor

Runat=“server”, envia la información al servidor No tiene, se ejecuta como un formulario HTML

Programación ASP.NET

32

Page 33: Programacion de aplicaciones Web con ASP.NET

Nueva Sitio Web Crea por defecto Default.aspx

Añadir un nuevo formulario Mediante la opción añadir nuevo elemento

Actualizar un formulario existente html Renombrando el archivo a .aspx

Programación ASP.NET

33

Page 34: Programacion de aplicaciones Web con ASP.NET

HTML server controls Añadir runat=“server” para tratarlo en el modo servidor

Web server controls Integrados, equivalentes a los controles HTML Validación, testar los datos introducidos Enriquecidos, funcionalidad avanzada Enlazados a datos Controles Web, presentación de datos en navegadores

Programación ASP.NET

34

Page 35: Programacion de aplicaciones Web con ASP.NET

Acceso desde el lado de servidor Las propiedades son todas tipo String, por lo que

solo se detecta los errores cuando se ejecuta Esta dentro de una etiqueta <Form ...

Runat=“server”> Interesa cuando utilizan funciones de java Permite actualizar rápidamente una página html

con nuevas funcionalidades<input type=“text” id=“textname” runat=“server”>

Programación ASP.NET

35

Page 36: Programacion de aplicaciones Web con ASP.NET

Creados para ASP.NET No tienen funcionalidad si no tienen

una etiqueta runat=“server” Propiedades son tipadas, permite

detectar errores antes de compilar Namespace

System.Web.UI.WebControls

Programación ASP.NET

36

Page 37: Programacion de aplicaciones Web con ASP.NET

Cada vez que se pide una página se construye la página y todos sus controles y se destruye después de que se envié al navegador para aumentar la capacidad del servidor

Soluciona el problema de que se limpien los controles cuando viaja entre el servidor y el cliente.

Control oculto _VIEWSTATE, guarda el estado dentro de una sección <form ... Runat=“server”>

Contiene un string de pares nombre-valor, con los nombres de cada control y el último valor

Cada petición se actualiza el control Habilitar viewState a nivel de @Page o a nivel de

control<%@ Page EnableViewState=“true” %><asp:ListBox id=“ListName” EnableViewState=“true”

runat=“server”></asp:listbox>

Programación ASP.NET

37

Page 38: Programacion de aplicaciones Web con ASP.NET

Creación en tiempo de Diseño Desde la barra de herramientas de controles Creación del código HTML de forma directa

Posicionamiento Absoluto o relativo Herramientas Opciones Diseñador HTML Posición CSS

PostBack Hay controles que automáticamente generan un postback

(button) Otros controles (textbox) no lo tienen y sus eventos se

disparan cuando uno que si lo tiene se ejecuta Se puede modificar el comportamiento modificando la

propiedad AutoPostBack a True del control

Programación ASP.NET

38

Page 39: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

39

Control de servidor Equivalente HTML Función

<asp:button> <input type=submit> Crea un botón que envia una petición al servidor

<asp:checkbox> <input type=checkbox> Casilla de verificación

<asp:hyperlink> <a href=“...”> </a> Hiperenlace a una etiqueta HTML

<asp:image> <img srec=“...” > Crea un área para mostrar una imagen

<asp:imagebutton> <input type=image> Botón con imagen en vez de texto

<asp:LinkButton> No tiene Botón con apariencia de hiperenlace

<asp:label> <span> </span> Texto que no puede modificar el usuario

<asp:listbox> <select size=“5”></select>

Lista de elementos de selección múltiple

Page 40: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

40

Control de servidor Equivalente HTML Función

<asp:panel> <div></div> Panel contenedor de controles

<asp:radiobutton> <input type=radiobutton>

Botón de radio

<asp:table> <table> </table> Crea una tabla

<asp:textbox> <input type=text> Cuadro de texto

<asp:literal> No tiene Texto

Page 41: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

41

Control Función

CompareValidator La entrada tiene que coincidir con otra entrada

CustomValidation La entrada tiene que cumplir un criterio

RangeValidator La entrada tiene que estar en un rango

RegularExpressionValidator

Tiene que cumplir un patrón

RequiredFieldValidator Usuario tiene que entrar un valor antes de que se procese el control

ValidationSummary Recoge todos los mensajes de error de los controles de validación para mostrarlos centralizados

Page 42: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

42

Control Función

AdRotator Secuencia de imágenes, aleatorias o no

Calendar Muestra un calendario

Page 43: Programacion de aplicaciones Web con ASP.NET

Programación ASP.NET

43

Control Función

CheckBoxList Columna de valores en formato checkbox

Repeater Muestra información de un dataset utilizando un conjunto de controles HTML, se repite para cada valor del dataset

DataList Similar al repeater pero en formato lista

DataGrid Muestra la información de un dataset en columnas

DropDownList Muestra los datos en un desplegable

ListBox Muestra los datos en una ventana

RadioButtonList Muestra una columna de botones de opción

GridView Versión avanzada del Data grid

Page 44: Programacion de aplicaciones Web con ASP.NET

Label, Muestra información que se puede modificar desde el código

del servidor Para texto fijo mejor utilizar el control literal de HTML Utilizar la propiedad text para escribir el valor

TextBox Muestra y recoge información del usuario Propiedad text contiene el texto del textbox TextMode, Formato del cuadro de texto

SingleLine, Multiline, Password Columns, Rows, máximo ancho y largo del cuadro de texto MaxLength, número de caracteres máximo

Programación ASP.NET

44

Page 45: Programacion de aplicaciones Web con ASP.NET

Button Boton que genera un postback al servidor Tipo submit (por defecto), solo genera un postback

al servidor Tipo command, indicar el nombre de la acción en la

propiedad commandName. Se gestiona con el evento command

Propiedad CausesValidation, por defecto true, hace que se valide el formulario

CheckBox Permite seleccionar entre cierto y falso Checked indica su estado Text, el literal que muestra Evento CheckedChange se ejecuta cuando hay un

cambio en la propiedad check. Autopostback por defecto es false

Programación ASP.NET

45

Page 46: Programacion de aplicaciones Web con ASP.NET

RadioButton Seleccionar opciones de forma exclusiva

en un grupo GroupName, todos los que tengan el

mismo valor se validan juntos Text, contiene el título Checked, indica si está activo o no

Programación ASP.NET

46

Page 47: Programacion de aplicaciones Web con ASP.NET

Trabajar con imágenes <img src=rutainmagen /> Controles Asp.net

Image Muestra una imagen en la web Imageurl, indica la dirección de la imagen AlternateText, texto que muestra si no se carga la imagén, y en

el texto de ayuda GenerarteEmptyAlternateText, indica si queremos que se

genere texto alternativo de forma automática No tiene evento Click

Programación ASP.NET

47

Page 48: Programacion de aplicaciones Web con ASP.NET

ImageButton Muestra una imagen que si que tiene evento Click ImageUrl, dirección de la imagen Eventos Click y command iguales al del boton

ImageMapcontrol Similar al imagebutton pero puedes definir un área para que

sea clickeable ImageUrl, es la imagen a mostrar HotSpotArea, comportamiento cuando se pincha en un área de

la imagen PostBack, generar un postback al servidor pudiendo pasar un

texto como parámetro Inactive, no hace nada

Programación ASP.NET

48

Page 49: Programacion de aplicaciones Web con ASP.NET

Table Muestra una tabla que se puede modificar en tiempo de

ejecución añadiendo TableRow y TableCell Hay que redibujar el control cada vez que sucede un postback

Calendar◦ Presenta un calendario, donde el usuario puede seleccionar

fechas◦ SelectionChanged genera un postback◦ Evento DayRender, poner texto cuando se cambia de día◦ VisibleDate, mes que se quiere mostrar◦ SelectionMode, como queremos seleccionar la información del

control FileUpload

◦ Muestra los controles para subir un archivo a internet◦ Hay que programar si queremos guardar el fichero◦ No genera un postback, por lo que hay que utilizar otro control◦ HasFile, indica si es un fichero lo que se ha selccionado◦ SaveAs, metodo para guardar el fichero

Programación ASP.NET

49

Page 50: Programacion de aplicaciones Web con ASP.NET

Web.SiteMap XML con la representación del sitio web

SiteMapPath Representa web.sitemap

SiteMapDataSource Enlaza con el XML y permite utilizarlo con otros controles StartingNodeOffset

TreeView Representación de un SiteMapDataSource Formado por TreeNode Permite colapsarse o expandirse

Menu Representación de un SiteMapDataSource Formado por MenuItem Permite programar eventos servidor o redirección a páginas

Programación ASP.NET

50

Page 51: Programacion de aplicaciones Web con ASP.NET

ListBox, lista de datos Utiliza la colección Items que contiene todos los

elementos Cada uno tiene la propiedad Text que es lo que muestra y

Value que es lo que devuelve al servidor Se enlaza a un DataSource y a un DataMember SelectedIndex, SelectedItem, SelectedValue es la forma

de acceder al elemento seleccionado DropDownList

Similar al listBox, pero solo muestra los valores cuando se despliega la lista

Programación ASP.NET

51

Page 52: Programacion de aplicaciones Web con ASP.NET

CheckBoxList Similar al listbox donde se puede hacer la selección

marcando las casillas RepeatDirection y RepeatColumns son propiedades para

indicar como rellenar el control con los valores Selected, indica si el item está seleccionado

RadioButtonList Similar al chekboxList pero solo se puede seleccionar una

opción

Programación ASP.NET

52

Page 53: Programacion de aplicaciones Web con ASP.NET

AdRotator Muestra una lista de imágenes de forma aleatoria Obtiene la información de una base de datos o de un

fichero xml ImageUrl, dirección de la imagen NavigateURL, la dirección donde se va al pulsar Impressions, frecuencia con la que se muestra Height, altura de cada anuncio Widt, anchura de los anuncios Recomendable dejar las imágenes dentro de la carpeta

App_Data

Programación ASP.NET

53

Page 54: Programacion de aplicaciones Web con ASP.NET

Simplifica la reutilización de código y componentes del entorno de usuario.

Es un fichero .ascx Se compilan la primera vez que se llaman y se almacenan en la

caché de ensamblados Tienen que estar integrados en un formulario, no puede contener

etiquetas <HTML>, <BODY>,<FORM> Tiene código asociado, se identifica en el apartado @control en vez

de @Page<@ control Language=“vb” CodeFile=“WebUserControl1.ascx.vb”

inherits=“test.webuserControl1” %>

Se puede escribir en distinto lenguaje que el formulario

Programación ASP.NET

54

Page 55: Programacion de aplicaciones Web con ASP.NET

Creación a partir de Visual Studio .NET Las páginas interactúan con el control

mediante propiedades Recomendable el uso de flow layout Añadir los elementos de la interfaz de

usuario Añadir los procedimientos que interactúen

con el Webform que lo albergue

Programación ASP.NET

55

Page 56: Programacion de aplicaciones Web con ASP.NET

Quitar las etiquetas <HTML>, <BODY>,<FORM> Si existe la directiva @page, sustituirla por una

@control Renombrar la página de .aspx a .ascx En la clase indicar

inherits=System.web.UI.UserControl Crear las propiedades ya que el webform no

puede comunicarse directamente con los controles que forman el control de usuario

Programación ASP.NET

56

Page 57: Programacion de aplicaciones Web con ASP.NET

<%@ Register TagPrefix=“demo” TagName=“NumeroValido” Src=“CajaNumero.ascx %>

Se situa en un web form igual que cualquier otro control @register, se utiliza para incluirlo en un formulario TagPrefix, identifica un espacio de nombres, permite tener

varios controles sin conflicto TagName, nombre único para cada control Src, identifica el control No podemos utilizar posicionamiento absoluto con DHTML,

si lo queremos hacer tenemos que ponerlo dentro de un panel

Programación ASP.NET

57

Page 58: Programacion de aplicaciones Web con ASP.NET

Definir las propiedades del control, haciendo referencia a los controles internos

Public Property pnum() as integerGet

Return cint(txtnum.text)End GetSet (byval value as Integer)

Txtnum.text =value.tostring()End Set

End Property Uso de las propiedades del control, desde el WebForm que lo contiene

Protected Num1 as CajaNumeroLblsum.text=Num1.Nnum.ToString()Num1.Pnum=5

Programación ASP.NET

58

Page 59: Programacion de aplicaciones Web con ASP.NET

Definición Página Maestra estructura heredable Página Contenido personalizas cada página

Beneficios Sitio web con entorno consistente Ahorro de tiempo de programación Podemos tener varias páginas maestras en un proyecto

Añadir una página Maestra Añadir desde Explorador de Soluciones un nuevo archivo index.Master

Añadir una página de Contenido Añadir desde el explorador de soluciones un nuevo archivo del tipo

Web.Form activando la casilla Seleccionar página maestra

Programación ASP.NET

59

Page 60: Programacion de aplicaciones Web con ASP.NET

Páginas de código-behindEventos en Controles Web Server

Eventos de PáginaConcepto de PostBack

Ejemplos de código

Programación ASP.NET

60

Page 61: Programacion de aplicaciones Web con ASP.NET

En el mismo fichero, entre el HTML Difícil, seguir el código Utiliza en ASP Pueden utilizar varios idiomas

En el mismo fichero, en una sección aparte Separado en una sección SCRIPT<SCRIPT Languaje=“vb” runat=“server”>

Sub btn_click(s As Object, e As EventArgs)_ Handles btn.Click....End Sub

</SCRIPT> En un fichero separado

En la página de código asociado Cada fichero sólo puede contener un idioma

Programación ASP.NET

61

Page 62: Programacion de aplicaciones Web con ASP.NET

Acción que responde a una actuación del usuario con un control de la página

Tipo de evento por área de ejecución Eventos de servidor Eventos de cliente

Ejemplo de evento Pulsar un botón Submit

Programación ASP.NET

62

Page 63: Programacion de aplicaciones Web con ASP.NET

Se ejecuta en el equipo cliente, no se envía información al servidor

Solo para controles HTML Ejecutan inmediatamente Eventos tipo onChange y mouse Keys Sintaxis

<SCRIPT languaje=“javascrip”>

Programación ASP.NET

63

Page 64: Programacion de aplicaciones Web con ASP.NET

Se ejecuta en el equipo servidor, la petición se envía al servidor para su proceso

Los procedimientos de evento es código compilado que está en el servidor

Sirve para controles HTML y Web Soporta un número menor de eventos, por la demora del

envío de la información Algunos OnChange NO soporta MouseKeys

Sintaxis<SCRIPT languaje=“vb” runat=“server”><SCRIPT languaje=“c#” runat=“server”>

Programación ASP.NET

64

Page 65: Programacion de aplicaciones Web con ASP.NET

Acceso a los eventos Al hacer doble clic sobre un control, se crea un evento

con el mismo Id que el control Seleccionar el evento de la lista Seleccionar el botón eventos en las propiedades del

control Argumentos

El objeto que envía el evento (sender) Una instancia del evento (e)

Tipo EventArgs, sin informacion adicional Imágenes ImageClickEventArgs, información

de coordenadas Utilizar Ctype para convertir sender

Programación ASP.NET

65

Page 66: Programacion de aplicaciones Web con ASP.NET

AutoEventWireup Si hay que especificar los procedimientos para los

eventos o los toma dependiendo del nombre del procedimientos

Gestionar varios controles con HANDLED Procedimientos de eventos personalizados

AddHandler AddressOf

Programación ASP.NET

66

Page 67: Programacion de aplicaciones Web con ASP.NET

Orden de generación de los eventos Page_init Page_Load Eventos de Control Page_Unload

Hay eventos de control que no se ejecutan hasta que el Web Form se envía al servidor (Change)

PostBack, envío de información al servidor Se puede forzar si el control tiene la propiedad

AutoPostBack=true

Programación ASP.NET

67

Page 68: Programacion de aplicaciones Web con ASP.NET

El evento Page_Load se ejecuta cada llamada Propiedad page.isPostBack, determina si ya se ha

enviado al servidorIf not Page.IsPostBack then

‘ Ejecuta solo la primera vez

End IfIf (!Page.IsPostBack){

//ejecuta la primera carga}

Programación ASP.NET

68

Page 69: Programacion de aplicaciones Web con ASP.NET

Acceso a los controles de una página web Objeto Me Colección de controles

Escribir información Asignar la información según el tipo

control.propiedad=valor Leer información

Almacenar la información en una variable Utilización en una función

Variable=control.propiedad If control.propiedad then..

Programación ASP.NET

69

Page 70: Programacion de aplicaciones Web con ASP.NET

Asignar la imagen en tiempo de ejecución Propiedad imgUrl Objeto Application.MapPath Identificar la ruta a partir de la raiz “~” (alt 126)

Crear imágenes de distinto tamaño en tiempo de ejecución Clase Bitmap

Gestiona mapa de bits Permite Guardar en formato bmp, jpg, gif, png con método save GetThumbnailImage

Programación ASP.NET

70

Page 71: Programacion de aplicaciones Web con ASP.NET

Colecciones de elementos Propiedad items

Escribir información Método ADD de la propiedad items Asignar a un origen de datos

Leer información Elemento Seleccionado Recorrer la colección items

Programación ASP.NET

71

Page 72: Programacion de aplicaciones Web con ASP.NET

Crear menús en tiempo de ejecución Crear el nodo o el elemento Añadir el nodo al menú o al árbol Propiedad Items y ChildItems en los menús Propiedad Nodes en losTreeview

Leer información Recorrer el menú/árbol mediante los nodos

Responder al Evento Propiedades SelectedNode,

SelectedMenuItem

Programación ASP.NET

72

Page 73: Programacion de aplicaciones Web con ASP.NET

Propiedades Se definen en el fichero de código adjunto Especificar el apartado Get y Set

Escribir información Ejecuta el código del apartado Set Desde la página se utiliza control.propiedad=valor

Leer información Ejecuta el código del apartado Get Desde la página se utiliza Variable=control.propiedad

Eventos Se programan en el control de usuario

Programación ASP.NET

73

Page 74: Programacion de aplicaciones Web con ASP.NET

Desde la página Maestra Trabajar como una página normal Se ejecutan en el código de master.vb

Desde las páginas de Contenido Personalizar la ejecución del evento según la página Gestionar el evento de un control

Hacer accesible el control con una propiedad master.vb

Gestionar el evento desde la content aspx.vb Gestionar con eventos personalizados genéricos

Crear un evento personalizado Lanzar desde la master el nuevo evento master.vb Consumir el evento desde la content aspx.vb

Programación ASP.NET

74

Page 75: Programacion de aplicaciones Web con ASP.NET

Información en tiempo de ejecuciónActivar la Traza

Utilizar el objeto TRACEUso de Traza a nivel de Aplicación

Página de Error Personalizada

Programación ASP.NET

75

Page 76: Programacion de aplicaciones Web con ASP.NET

Activar modo depuración De forma automática Mediante la herramienta de configuración Añadiendo debug=true en web.config

Establecer puntos de ruptura Pausar el código al ejecutar la sentencia marcada Se puede establecer condiciones

Ventanas Depuración Variables locales Ventana de Inspección Puntos de Ruptura

Programación ASP.NET

76

Page 77: Programacion de aplicaciones Web con ASP.NET

Volcar información mediante objetos Debug y Trace Tipos de información

Mostrar valores de variables Determinar cuando se cumple una condición con Trace.Writeif Seguir el proceso de ejecución

Las sentencias Trace no se muestra sino se activa en web.config o en la cabecera @page No es necesario quitar o comentar todo el código

El objeto Debug solo se muestra cuando se ejecuta en modo depuración

Programación ASP.NET

77

Page 78: Programacion de aplicaciones Web con ASP.NET

A nivel de página, solo muestra información de traza en la página en la que se activa

<%@Page Languaje=“vb” Trace=“true” %> Se añade la información de traza al final de la página Todos las sentencias Trace.Write serán visibles

Si se activa la traza a nivel de aplicación, también se muestra la información de página

Programación ASP.NET

78

Page 79: Programacion de aplicaciones Web con ASP.NET

Trace.Write y Trace.Warn son iguales salvo que Warn muestra el mensaje en rojo.

Muestran mensajes en la traza Sintaxis

Trace.Write(“Categoria”,”Mensaje”) Categoría, sirve para agrupar los mensajes

EjemploTrace.Write(“Mi traza”, “Empieza el código de usuario”)

Trace.IsEnabled indica si la traza está activa Se puede modificar en tiempo de ejecución

Trace.IsEnabled=False ‘ Desactiva la traza

Programación ASP.NET

79

Page 80: Programacion de aplicaciones Web con ASP.NET

Muestra la información al final de la página Divide la información

Información de la solicitud Información de Seguimiento, datos tanto estándar como los generados

por el objeto TRACE Árbol de Control, los elementos y su tamaño Estado de la sesión, variables de sesión Estado de la aplicación, variables globales Lista de Cookies, lista de cookies utilizadas en metodos recuest Lista de Cookies de respuesta, lias de cookies en métodos response Colección de encabezados, información de la cabecera HTML Colección de formularios, valores devueltos al servidor Colección de cadenas de respuesta,valore sen querystring Variables de servidor, las variables del servidor

Programación ASP.NET

80

Page 81: Programacion de aplicaciones Web con ASP.NET

Aplica la traza a todas las páginas del proyecto Menú Sitio Web Configuración ASP .NET Aplicación Depuración y

Seguimiento Capturar información de seguimiento Modificar el fichero web.config

<trace enabled=“true” pageOutPut=“true” LocalOnly=“true”/> Relación con el atributo trace de @page.

Si está activo en @page, se muestra siempre Si no está definido se muestra siempre Si está a false no se muestra la traza

Mostrar seguimiento.. (PageOutPut), indica si se muestra la información en la página o si se almacena en memoria

Cuando está en memoria ejecutar \\servidor\proyecto\trace.axd Mostrar resultado para.. (LocalOnly), solo se muestra la traza en la máquina

local. No se puede acceder desde otra máquina

Programación ASP.NET

81

Page 82: Programacion de aplicaciones Web con ASP.NET

Redirigir el error ha una página amigable para el usuario

Se define en el web.config Directamente editando el fichero Desde la herramienta de configuración de la aplicación

Podemos utilizar cualquier página del proyecto Atributos

CustomErrorPage la página a mostrar LocalOnly si se ven los errores en local o no

Programación ASP.NET

82

Page 83: Programacion de aplicaciones Web con ASP.NET

Utilidad de los controles de validaciónTipos de controles

Propiedades comunesControl personalizado

Page.IsValid

Programación ASP.NET

83

Page 84: Programacion de aplicaciones Web con ASP.NET

Verifican que los datos son “válidos” o que se han introducido todos los valores necesarios

Evitan Datos incorrectos antes de que se procesen en el servidor Spoofing, sustitución de código HTML en el cliente, mediante la

verificación de los datos en los dos lados cliente/servidor Código malicioso, provocar desbordamiento del servidor con cadenas

de texto muy largas y SQLInyection mediante los input box Verificación en el lado cliente y servidor

Cliente, comprueba cuando se pulsa un botón submit, si no se cumple no envía la información al servidor

Servidor, se vuelve a validar la información

Programación ASP.NET

84

Page 85: Programacion de aplicaciones Web con ASP.NET

CompareValidator, compara el contenido de ese control con el de otro control del mismo WebForm.

Type indica el tipo de datos a comparar Operator, tipo de comparacion

CustomValidator, código de comprobación personalizado RangeValidator, Comprueba que el valor esta dentro de un

rango. Type indica el tipo de datos a validar Hay que indicar MinimunValue, MaximumValue

RegularExpressionValidator, el contenido tiene que cumplir un formato determinado

www.regular-expressions.info RequiredFieldValidator, Obliga a introducir un valor en el

campo, se puede usar junto con los otros controles ValidationSummary, resumen de los errores de los

controles de validación de la página

Programación ASP.NET

85

Page 86: Programacion de aplicaciones Web con ASP.NET

Todos los controles de validación menos el ValidationSummary tienen propiedades especificas comunes◦ Controltovalidate, control de la página a validar◦ EnableClientScript, validar los datos en el cliente◦ ErrorMenssage, texto que va a mostrar si no se cumple el

criterio en el control ValidationSummary.◦ Text, mensaje que muestra en el caso de error, si se deja en

blanco muestra el texto que haya en ErrorMenssage◦ Display, comportamiento de los controles en el caso de

FlowLayout Static, reserva espacio para las etiquetas aunque no se muestren Dynamic, no reserva espacio, cuando se muestra el error, se ajusta

el formulario None, no muestra errores

Programación ASP.NET

86

Page 87: Programacion de aplicaciones Web con ASP.NET

Se ejecuta en el lado del cliente y servidor Permite programar código Propiedades propias

ClienteValidationFunction, nombre del script que se ejecuta en el cliente

OnServerValidate, nombre del que se ejecuta en el servidor

Programación ASP.NET

87

Page 88: Programacion de aplicaciones Web con ASP.NET

Propiedad del objeto Page que es true si todos los controles de validación son correctos

Cuando se ejecuta se muestra el control ValidationSummary si es el caso

If Page.IsValid then

lblResultado=“Correcto”End If

Programación ASP.NET

88

Page 89: Programacion de aplicaciones Web con ASP.NET

PresentaciónControles Enlazados

DataBinding

Programación ASP.NET

89

Page 90: Programacion de aplicaciones Web con ASP.NET

Modelo ASP 2.0 vs ASP 1.1 Nuevos controles

Más ligeros Más fáciles de utilizar Menos código para obtener los mismos resultados

DataBindig Enlazar controles a un origen de datos Simple, enlaza un control a un campo del origen de datos. Compleja, enlazar un control a varios campos de un origen de

datos App_Data

Carpeta por defecto para establecer los orígenes de datos Puede contener Access (mdb), SQL Express (mdf), XMl

Programación ASP.NET

90

Page 91: Programacion de aplicaciones Web con ASP.NET

Tipos Específicos para enlazar a origen de datos GridView Generales, se pueden enlazar aunque con limitaciones TextBox Mixtos, permiten trabajar con un origen de datos o

independientes ListBox Controles de Acceso a datos, no son visibles pero permiten enlazar

a otros controles SQLDataADapter

Cadenas de conexión Genera automáticamente en función del origen de datos Muestra por defecto el contenido de App_Data Permite guardarlas en web.config

DataSource vs DataSourceid DataSourceId, indica el control de origen de datos, en

cambio Datasource indica el objeto de origen de datos

Programación ASP.NET

91

Page 92: Programacion de aplicaciones Web con ASP.NET

SqlDataSource Enlaza con un origen de datos SQL (no solo SQL Server) Especificar base de datos, consulta/ tabla, filtros,

ordenacion AcessDataSource

Enlaza con bases de datos Access Igual que el anterior pero más limitado

ObjectDataSource Enlaza con objetos de negocio definidos en una clase Seleccionar el objeto y los métodos a utilizar

XmlDataSource Enlaza con un origen de datos XML Especificar archivo, el archivo de transformación (si es necesario) y

xPath para indicar el tipo de nodo a mostrar SiteMapDataSource

Enlaza con web.sitemp para crear la estructura de navegación del sitio

Programación ASP.NET

92

Page 93: Programacion de aplicaciones Web con ASP.NET

ListBox, DropDownList, CheckBoxList, RadioButtonList, BulletedList

Permiten trabajar enlazados a datos o de forma independiente

Tienen propiedades comunes para el enlace a datos DataSourceId, identificador del control origen de datos de

donde van a cargar la información DataValueField, nombre del campo con el que se rellena la

propiedad value de cada item DataTextField, nombre del campo con el que se rellena la

propiedad text DataMemeber, en el caso de que el origen de datos tenga

varios conjuntos de resultados, indicar el que se va a utilizar

Programación ASP.NET

93

Page 94: Programacion de aplicaciones Web con ASP.NET

Repeater Muestra información de cada registro del origen de datos en

una fila Hay que especificar los campos que se quieren mostrar desde

la ventana de código DataList

Muestra la información de cada registro del origen de datos en una fila del control

Permite indicar que campos queremos mostrar mediante plantillas

Es la versión avanzada de Repeater

Programación ASP.NET

94

Page 95: Programacion de aplicaciones Web con ASP.NET

GridView Muestra información en formato tabla Esta formado por una colección de GridViewRow (Filas) y

DatacontrolField (Columnas) que dan lugar a DataControlFieldCell (Celdas)

Cada Fila contiene una colección de celdas (cell) Formato se puede dar mediante el asistente

DetailsView Muestra únicamente un registro de un origen de datos Permite navegar por los registros con la propiedad AllowPaging Se utiliza junto a Gridview para crear formularios

“maestro/detalle” FormView

Similar a Details View, pero con más funcionalidad Permite la edición de plantillas para los distintos modos,

selección, edición e inserción

Programación ASP.NET

95

Page 96: Programacion de aplicaciones Web con ASP.NET

Enlazar controles a un origen de datos Propiedad DataSource, identifica el origen de datos

puede ser un dataSet, Propiedad DataSouerceID, indica el control origen de

datos que está vinculado a los datos Propiedad DataMember, dentro de un origen de

datos con múltiples tablas puede especificar la tabla o la vista que queramos asociar

Propiedad DataKey, el campo clave del control cuando se selecciona un elemento del mismo

Metodo DataBind, actualiza los datos que recibe a través de la propiedad DataSource.

Programación ASP.NET

96

Page 97: Programacion de aplicaciones Web con ASP.NET

PresentaciónIntegración con DataSet de ADO

XMLDataDocumentXMlDataTransform

Control Web XMLServicios Web

Programación ASP.NET

97

Page 98: Programacion de aplicaciones Web con ASP.NET

Método uniforme de intercambiar datos entre ordenadores Están definidos tanto los datos como la estructura La estructura es independiente de los datos y se puede

ampliar en cualquier momento Concepto de XML Bien Formado XML Válido si el vocabulario cumple con el formato del

esquema XSD, Schema Definition Language, norma recomendada por

W3C para validar XML

Programación ASP.NET

98

Page 99: Programacion de aplicaciones Web con ASP.NET

XSD, estándar de definición de lenguajes XSLT, Extensible Stylesheet Transformation,

lenguaje para transformar ficheros XMl XPath, Lenguaje para recorrer elementos de un

XML mediante un árbol de nodos DOM, Document Object Model, es una

representación en memoria de un XMl que se puede navegar por él mediante nodos

XQuery, permite extraer e interpretar información XML

Programación ASP.NET

99

Page 100: Programacion de aplicaciones Web con ASP.NET

Estándar de internet. World Wide Web Consortium (W3C) XML 1.0 - http://www.w3.org/TR/1998/REC-xml-19980210 -

including DTD support. XML Namespaces - http://www.w3.org/TR/REC-xml-names/ -

both stream level and DOM. XSD Schemas - http://www.w3.org/2001/XMLSchema XPath expressions - http://www.w3.org/TR/xpath XSLT transformations - http://www.w3.org/TR/xslt DOM Level 1 Core - http://www.w3.org/TR/REC-DOM-Level-1/ DOM Level 2 Core - http://www.w3.org/TR/DOM-Level-2/

En el Framework es el espacio de nombres System.Xml

Programación ASP.NET

100

Page 101: Programacion de aplicaciones Web con ASP.NET

Cargar información en un dataset desde un fichero xml ReadXML, lee los datos y el esquema y lo pasa a un data

set Lee desde un objeto xmlReader (string, filestring)Dim xmlFilename As String = "XmlDocument.xml" Dim fsReadXml As New System.IO.FileStream _ (xmlFilename,

System.IO.FileMode.Open) Dim xmlReader As New System.Xml.XmlTextReader(fsReadXml) Dim ds As New DataSet("New DataSet") ds.ReadXml(xmlReader)

Programación ASP.NET

101

Page 102: Programacion de aplicaciones Web con ASP.NET

Exportar el contenido de un data set a un fichero XML WriteXML, escribe los datos y el esquema a

un objeto stream, string, TextWriter, xmlWriter

xmlWriter, escribe sobre un fichero XMLDim ds As DataSetDim writer As new XmlWriter (Server.MapPath(“export.Xml”))

ds.WriteXml(writer)

Programación ASP.NET

102

Page 103: Programacion de aplicaciones Web con ASP.NET

Metodos de DataSet ReadXmlSchema,Leer el esquema de un

data set de un fichero XML. No los datos WriteXmlSchema,Escribir el esquema en

un fichero, no los datosDim ds As DataSetDim writer As XmlWriter

ds.WriteXmlSchema(writer)

Programación ASP.NET

103

Page 104: Programacion de aplicaciones Web con ASP.NET

Muy ligado a los DataSet, permite manipular los datos directamente o a través del dataSet

Permite navegar mediante nodos Podemos utilizar como elemento para la trasformación de

XML con xmlTransform Load, cargar la información directamente del documento

XMLDataDocument doc = new XmlDataDocument;Doc.Load(server.MapPath(“file.xml”));

ReadXML, carga el documento en un datasetDim doc as XmlDataDocument = new XmlDataDocument() doc.DataSet.ReadXML(Server.MapPath("store.xml”))

Programación ASP.NET

104

Page 105: Programacion de aplicaciones Web con ASP.NET

El DataSet del objeto es la representación en ADO de la estructura del XML

Asignar a un control el origen de datosDg.DataSource = xmlDoc.DataSet

Extraer informaciónDim elem as XmlelementElem= xmlDoc.getElementFromRow(ds.Tables(0).rows(1))

Programación ASP.NET

105

Page 106: Programacion de aplicaciones Web con ASP.NET

Permite escribir un fichero XML o mostrar información XML en el WebForm

La información se muestra donde está ubicado el control

Crear un control Llevándolo desde la barra de controles Escribiendo <asp:XML id=“xmldoc” runat=“server”/>

Programación ASP.NET

106

Page 107: Programacion de aplicaciones Web con ASP.NET

Cargar datos al control Propiedad DocumentSource, indicando la ruta del xml En el evento Page_Load, asignar la ruta a la propiedad

Document. Introducir el texto entre la etiquetas < >

TransformSource, permite asignar un fichero de esquema control

Crear un objeto XML y asignarlo a un control

Programación ASP.NET

107

Page 108: Programacion de aplicaciones Web con ASP.NET

Similar a los componentes de programación Lenguaje independiente que el del web form Independiente de la plataforma de desarrollo. Basado en estandares de W3C Se utiliza para compartir elementos de

programación entre aplicaciones.

Programación ASP.NET

108

Page 109: Programacion de aplicaciones Web con ASP.NET

Universal Description, Discovery and Integration (UDDI) protocol www.uddi.org, uddi.microsoft.com Especificaciones para ubicar servicios web a través de

internet Ficheros descubrimiento .disco .vsdisco, contienen

la información de donde encontrar servicios. Se crean automáticamente cuando se programa el servicio

Ficheros de descripción .wsdl, tiene las especificaciones del servicio web

Programación ASP.NET

109

Page 110: Programacion de aplicaciones Web con ASP.NET

Acceder a la página web del servicio. WsdlHelpGenerator.aspx

Seleccionar el servicio de la lista Rellenar los parámetros si es caso y

clicar en Invocar El servicio devuelve la información en

XML

Programación ASP.NET

110

Page 111: Programacion de aplicaciones Web con ASP.NET

Añadir la referencia Web al proyecto Crear un objeto a partir de la referencia

Dim ws as new prueba.localhost.servicio1

Utilizar los métodos del servicio web a través del objeto Lbltitulo.text=ws.escribirHolaMundo

Programación ASP.NET

111

Page 112: Programacion de aplicaciones Web con ASP.NET

Crear un proyecto utilizando la plantilla Servicio Web. Archivo .asmx

@web Service, el nombre del archivo Languaje, en que está escrito Codebehaind page, código del archivo Class, la clase del servicio

El código se escribe igual salvo que se pone <webmethod> delante de la función que queremos compartir <WebMethod(Description:= “texto descripción”)>, La

descripción del servicio web

Programación ASP.NET

112

Page 113: Programacion de aplicaciones Web con ASP.NET

Introducción al estado de las aplicacionesGlobal Asax

Cookies

Programación ASP.NET

113

Page 114: Programacion de aplicaciones Web con ASP.NET

Cada página se destruye en cada petición, necesario un sistema para mantener la información globalmente

Lado del servidor Application, la información es accesible para todos los usuarios Session, la información solo es accesible para un usuario en

concreto SQL, almacenar la información en una base de datos Objeto Caché, guarda la información a nivel de aplicación

Lado del cliente Cookies, fichero de texto en el equipo del cliente Propiedad, ViewState, automáticamente retine los valores Query String, se añade la información a la URL

Programación ASP.NET

114

Page 115: Programacion de aplicaciones Web con ASP.NET

Todas las aplicaciones tienen un global.asax

Se almacena en el directorio virtual de la aplicación

Gestiona eventos de inicio y fin de aplicación y de sesión

Es opcional

Programación ASP.NET

115

Page 116: Programacion de aplicaciones Web con ASP.NET

Eventos más usuales Applcation_Start, cuando se inicia la aplicación Application_End, cuando se finaliza Session_Start, cuando inicia un usuario Session_End, cuando Finaliza un usuario Application_Error, Cuando se da un error que no ha sido canalizado

Inicialización de Variables Objeto Application, comparte información para toda la aplicación Objeto Sessión, solo sobre el usuario Se define la variable identificando el objeto y el nombre que queremos

darleSession(“Fondo”)=“beige”Application[“numeroVisitas”]=0;

Programación ASP.NET

116

Page 117: Programacion de aplicaciones Web con ASP.NET

Establecer valor a la variableSession(“Fondo”)=“beige”

Bloqueos, evitar concurrencia Application.Lock Application.Unlock

Application.LockApplication[NumeroVisitas]+=1(int)Application[“NumeroVisitas”]=(int)Application[“NumeroVisitas”]+1;

Application.Unlock

Leer las variables, asignar el valor a un objeto o controlFondoControl=Session(“Fondo”)lblNVisitas.text=Application[“NumeroVisitas”].to string

Programación ASP.NET

117

Page 118: Programacion de aplicaciones Web con ASP.NET

Almacena automáticamente el estado de los controles de la página

Se puede desactivar desde la directiva @page ViewState=“False” Almacena la información en objetos StateBag que se pasa como

control oculto en las peticiones http Podemos utilizarlo para almacenar información entre páginas Se puede cifrar con viewStateEncryptionMode =Always

Programación ASP.NET

118

Public Property Indice() As Integer Get Dim o As Object = ViewState("Indice") If (IsNothing(o)) Then Return -1 Else Return CStr(o) End If End Get Set(ByVal value As Integer) ViewState("Indice") = value End Set End Property

public int Indice { get { object o = ViewState[“Indice"]; return (o == null)?-1 :(int)o; } Set { ViewState[“Indice"] = value; } }

Page 119: Programacion de aplicaciones Web con ASP.NET

Crear cookies Con la propiedad Cookie de los objetos Response y

Request Generan un objeto HttpCookiecollection

Cookies Temporales Se crea el objeto pero no se guarda en disco. Se borra cuando acaba el tiempo de sesion o cuando se

cierra el navegador Cookies Permanentes

Se guardan en disco

Programación ASP.NET

119

Page 120: Programacion de aplicaciones Web con ASP.NET

Crear un cookieDim objCookie as new httpCookie(“miCookie”)Dim now as datetime=dateTime.Now

Añadir elementos y asignar valoresobjCookie.Values.Add(“hora”, now. To string)objCookie.Values.Add(“Fondo”,”green”)

Establecer tiempo de expiración PersistenteobjCookie.Expires=now.addHours(1)

Añadimos el cookie a la colección Response.cookies.add(objCookie)

Programación ASP.NET

120

Page 121: Programacion de aplicaciones Web con ASP.NET

Primero leer el cookieDim objCK as httpCookie=Request.Cookies(“myCookie”)httpCookie objCK=Request.cookies[“myCookie”];

Segundo leer el par clave – valorlblTime.text=objCK.Values(“hora”)lblTime.BackColor=System.Drawing.Color.FromName(obkCK.Values(“Fondo”))Lbltime.text=objCK.values[“hora”]lblTime.backColor=System.Drawing.Color.FromName(obkCK.Values[“Fondo”]);

Programación ASP.NET

121

Page 122: Programacion de aplicaciones Web con ASP.NET

Objeto CachéOutPut Cache

Implantación del proyecto

Programación ASP.NET

122

Page 123: Programacion de aplicaciones Web con ASP.NET

Cada aplicación tiene un objeto Permite almacenar elementos en memoria la primera vez

que se utilizan y a partir de ese momento volver a utilizarlos El objeto Cache no contiene información solo la referencia al

objeto y sus dependencias Podemos usarlo para pasar valores entre páginas de la

aplicación ya que permite almacenar variables a nivel de aplicación

Tiene bloqueos incorporados para el uso de los objetos Se eliminan automáticamente los objetos de la caché, junto

con sus dependencias

Programación ASP.NET

123

Page 124: Programacion de aplicaciones Web con ASP.NET

Crear una variable de forma implicitaCache(“mivariable”)=valorCache[“mivariable”]=valor;

Crear variables de forma explicita con Insert y parámetros

Cache.Insert(“miVariable”,valor, Dependency, AbsoluteExpiration, SlidingExpiration, CacheItemRemoveCallBack)

Utilizar la variableLblvalor.text=cache(“mivariable”)Lblvalor.text=cache[“mivariable”];

Programación ASP.NET

124

Page 125: Programacion de aplicaciones Web con ASP.NET

Cuando se queda sin memoria se eliminan de forma automática los objetos más viejos

AbsoluteExpiration, propiedad datetieme en la que expira el objeto de la caché

Cache.insert(“mivariable”,valor,Nothing,Datetime.Now.AddMinutes(5),nothing) SlidingExpiration, propiedad timeSpan tiempo que expira en función

del último accesoCache.Insert(“miVariable”,valor,null,null,TimeSpan.FromSeconds(20)); Dependencies, identifica de que objeto depende. Cuande se elimine o

expire ese objeto se eliminan todas sus dependenciasCache.Insert(“miVariable”,valor,new CacheDependency(“mydoc.xml”) CachéItemPriority, los que tengan más prioridad son los últimos en

eliminarse en caso de que tenga poca memoriaCache.Insert(“miVariable”,valor,null,null,CacheItemPriority.High, onremove);

Programación ASP.NET

125

Page 126: Programacion de aplicaciones Web con ASP.NET

Mejorar rendimiento cacheando una página o partes de una página

Tipos de Output Cache Página, almacena todo un web form Parcial, almacenar controles estáticos de una página

como controles de usuarioEn el fichero .ascx

<%@ OutputCache Duration =“120” %> Web Services, almacena el resultado del web service sin

volver a llamarlo<WebMethod(cacheDuratio:=300)>…[WebMethod(cacheDuratio:=300)]…

Programación ASP.NET

126

Page 127: Programacion de aplicaciones Web con ASP.NET

Compilación Dinámica Precompilación

Copiar los archivos al servidor web No Necesarios

Archivos de solución (.vbproj…) Archivos de recursos .resx, ya están compilados en las dll Páginas de código .vb, ya están compilados

Necesarios \bin y su contenido Web Form, Controles de Usuario y Servicios Web(.aspx,.asmx.ascx) Ficheros de configuración Archivos complementarios (imágenes, xml…)

Identificar en el IIS el proyecto como aplicación Permisos para Network Service No es necesario registrar el contenido de /bin Poner el sitio fuera de linea con APP_OFFLINE.HTM

Programación ASP.NET

127

Page 128: Programacion de aplicaciones Web con ASP.NET

IntroducciónAutenticación - Autorización

Seguridad integrada IISSeguridad Forms

Programación ASP.NET

128

Page 129: Programacion de aplicaciones Web con ASP.NET

Establecer diferentes sistemas para asegurar las aplicaciones web

Sistema complementario a la seguridad de la base de datos IIS permite establecer distintos niveles de seguridad de

forma automática Establecer la comunicación con SSL para asegurar la

transmisión de los datos

Programación ASP.NET

129

Page 130: Programacion de aplicaciones Web con ASP.NET

Autentificación Autentificarse, identificarse en el sistema Validarse contra el sistema

Autorización Proceso posterior a la autenticación Verificar el nivel de acceso a un recurso en

concreto

Programación ASP.NET

130

Page 131: Programacion de aplicaciones Web con ASP.NET

Basada en Windows Utiliza la seguridad de IIS Util para intranets ya que utiliza la estructura de windows No es muy útil para la mayoría de aplicaciones web

Basada en Formularios Codificar manualmente la validación Si es correcta el sistema envía un cookie al usuario Útil para cualquier aplicación Soporta todo tipo de clientes Problemático por usar cookies

Microsoft Passport Servicio Web de Microsoft Una sola validación para multiples aplicaciones Tiene coste Utiliza cookies

Programación ASP.NET

131

Page 132: Programacion de aplicaciones Web con ASP.NET

Niveles Autentificacion IIS Anónimo, no hay autentificación Básica

Se envía usuario y contraseña en modo texto Se puede encriptar con SSL

Texto Se envía la información codificada Requiere Directorio Activo

Integrada Utiliza Kerberos Bueno para intrantet, malo para internet Problemas con cortafuegos

Programación ASP.NET

132

Page 133: Programacion de aplicaciones Web con ASP.NET

Configurar la seguridad en el IIS Desde la consola de administración escoger el nivel de

seguridad Básica Texto Integrada

Establecer la autentificación en Web.Config<system.web>

<authentication mode=“windows” />

</system.web>

Programación ASP.NET

133

Page 134: Programacion de aplicaciones Web con ASP.NET

Establecer la autorización en Web.Config Establecer una sección <Location> que indique que páginas son las

que hay que autorizar Se pueden establecer varias secciones <Location> Se puede indicar una carpeta o una página

<location path=“consulta.aspx”><system.web>

<authorization><deny user=“?” />

</authorization></system.web>

</location path> Deny user, niega el acceso a un usuario en concreto

?, a acceso anónimo * todos los accesos

Allow User, permite a un usuario en concreto

Programación ASP.NET

134

Page 135: Programacion de aplicaciones Web con ASP.NET

Ejecutar el código con usuario predeterminado usando la clave <identity>

<identity impersonate=“true”username=“usuario”password=“contraseña” />

IIS pide la información de registro al usuario Cuando se accede a una página con seguridad se muestra

automáticamente la ventana de validación del usuario y contraseña.

Si es correcta la validación se reenvía automáticamente a la página solicitada

Programación ASP.NET

135

Page 136: Programacion de aplicaciones Web con ASP.NET

Después de autentificarse se puede acceder a la información con el objeto User.Identity

User.Identity.Name User.Identity.AuthenticationType User.Identity.IsAuthenticated

Lblnombre.text=User.Identity.NamelblTipo.text=User.Identity.AuthenticationTypelblEsAutorizado= User.Identity.IsAuthenticated

Programación ASP.NET

136

Page 137: Programacion de aplicaciones Web con ASP.NET

EL usuario pide una página IIS pasa la petición a ASP.NET ya que accede en modo

anónimo ASP.NET valida si existe un cookie de seguridad Si no hay cookie, reenvia la petición a la página definida

para validar las credenciales Mediante código chequea las credenciales y si la cumple

genera el cookie Sino es correcta genera un mensaje de acceso denegado

Programación ASP.NET

137

Page 138: Programacion de aplicaciones Web con ASP.NET

Configurar IIS para acceso anónimo Establecer la autentificación en el web.config

Indicar el formulario que va a validar a los usuarios .name

<system.web><authentication mode=“Forms”>

<forms name=“.namesuffix” loginUrl=“login.aspx” /></authentication>

</system.web> Establecer la autorización

Modificar el fichero web.config igual que en el caso de autorización de windows

Programación ASP.NET

138

Page 139: Programacion de aplicaciones Web con ASP.NET

Crear un formulario de Logon Permite Introducir usuario y contraseña Utilizar el objeto FormsAuthentication En el botón de validación utilizar el método

RedirectFromLoginPage que reenvía a los usuarios a la url solicitada

Una vez validado podemos acceder a la información con el objeto User.Identity

Programación ASP.NET

139