Documente Academic
Documente Profesional
Documente Cultură
Introduccin a ASP.NET
Rodrigo Salinas
Consultor Independiente .NET, J2EE y Business Intelligence Relator de Microsoft Consultor.net@gmail.com
Agenda
Hypertext Transfer Protocol (HTTP) HTML Forms Procesamiento en el Servidor ASP vs ASP.NET Aplicaciones ASP.NET ASP.NET WebForms Controles de Servidor y de Usuario Administracin de Estado Seguridad en ASP.NET Optimizacin y Distribucin en ASP.NET
Servidor
HTTP Request
www.cursoaspnet.com IP = 66.45.26.25
HTTP Response
HTML Forms
En el corazn de toda aplicacin Web genuina estn los HTML Forms Un HTML Form es la porcin de un documento HTML que aparece entre las etiquetas <form></form>
Suma.html
<html> <body> <form> <input type="text" name="op1" /> + <input type="text" name="op2" /> <input type="submit" value=" = " /> </form> </body> </html>
Cmo el HTML Form es enviado, depender del atributo Method del form:
Si el atributo Method del form no est presente o tiene el valor GET, el navegador enviar al servidor un comando HTTP GET Si el atributo Method del form tiene el valor POST, el navegador enviar al servidor un comando HTTP POST
Ejemplo >>
Method = POST
<form method=post"> ... </form>
POST /suma.html HTTP/1.1 . . Content-Type: ... Content-Length: 11 [blank line] op1=2&op2=2
</form>
GET /suma.html?op1=2&op2=2 HTTP/1.1 . . . Connection: Keep-Alive [blank line]
Cualquiera sea el mtodo utilizado, es decir GET o POST, cuando un form es enviado al servidor, decimos que se produjo un POSTBACK
Procesamiento en el Servidor
Construir la parte del cliente es fcil, slo es HTML La parte difcil es la construccin de la lgica del lado del servidor. Algo en el servidor, tiene que interpretar las entradas del usuario enviadas junto con el form y generar la correspondiente salida.
Suma.html
<html> <body> <form> <input type="text" name="op1" /> + <input type="text" name="op2" /> <input type="submit" value=" = " /> </form> </body> </html>
Que es ASP.NET
ASP.NET es el framework de programacin web dentro de .NET Permite desarrollar aplicaciones Web con un modelo similar al utilizado para aplicaciones Windows El componente fundamental de ASP.NET es el WebForm Independencia del cliente (navegador, S.O., dispositivo fsico, etc.) Permite utilizar cualquier lenguaje .NET Permite desarrollar Servicios Web XML
ASP.NET - Ventajas
La parte ejecutable de una aplicacin ASP.NET es COMPILADA
Inicio.aspx
http://localhost/inicio. aspx
Memoria Cliente
HTTP Runtime
Assembly Cache
Assembly en Assembly en MSIL MSIL
Servidor
Inicio.aspx
http://localhost/inicio. aspx
Memoria Cliente
HTTP Runtime
Assembly Cache
Assembly en Assembly en MSIL MSIL
Servidor
Archivos Code-Behind
Archivos asociados a WebForms que contienen cdigo del lado del servidor (Ej. VB.NET, C#, etc.)
Global.asax
Eventos a nivel de aplicacin
Mecanismo de Caching
Permite responder al cliente de manera ms rpida despus de la primera solicitud
Global.asax
Output Cache
WebForm1.aspx.vb
Web.config
WebForm2.aspx
Internet
BIN
WebForm2.aspx.vb
Comp. Comp.
http://localhost/MiAplicacion C:\Inetpub\wwwroot\MiAplicacion
Podemos usar IIS para definir un directorio virtual donde alojar nuestras aplicaciones Web, diferente al predeterminado
El permetro de la aplicacin termina en su ltimo directorio o cuando se encuentra el directorio raz de otra aplicacin Web
Etapa de distribucin/implementacin
Bajo IIS deberemos configurar la pgina a mostrar cuando el usuario omita en la URL el nombre de alguna pgina, por ej. cuando escriba http://localhost/MiApp en vez de http://localhost/MiApp/inicio.aspx
ASP.NET + IIS
Cuando IIS recibe una solicitud sobre una pgina ASPX, IIS utiliza aspnet_isapi.dll para invocar al ASP.NET Worker Process (aspnet_wp.exe) El ASP.NET Worker Process ejecuta el assembly de la aplicacin y destina un espacio de memoria (Application Domain) ASP.NET asla cada aplicacin mediante los Application Domains Por lo tanto El nivel de aislamiento configurado en IIS, NO TIENE EFECTO sobre las aplicaciones ASP.NET (Usado con ASP)
Archivos de proyecto
Contienen enlaces a todos los items (Clases, WebForms, archivos de configuracin, etc.) que conforman al proyecto. Sus extenciones son .vbproj (VB.NET) y .csproj (C#)
wwwroot
ProyectoA
ProyectoA
ProyectoA.sln
Desarrollo
Assemblies
Generar aplicacin
ProyectoA.dll
ASP.NET WebForms
La clase Page
Cada WebForm es compilado a una clase en runtime La clase es del tipo System.Web.UI.Page Por lo que cada WebForm termina siendo en runtime un objeto de la clase Page Este objeto contiene propiedades, mtodos, eventos; igual a cualquier otro objeto Como cualquier objeto, Page tiene etapas de procesamiento como Inicio Carga Descarga Estas etapas las realiza cada vez que se solicita la pgina
Page_Load
Textbox1_Changed Button1_Click Page_Unload
Objeto Page eliminado
Postbacks
En ASP.NET los WebForms estn diseados para enviar informacin hacia al servidor para su procesamiento Esa operacin es denominada POSTBACK Como se produce un postback?
Cuando el usuario hace clic en un control Button Especificando en la propiedad AutoPostBack, de un control de servidor, el valor True
Directivas de pginas
La directivas de pginas permiten establecer atributos a los webforms que controlan de alguna forma su generacin Por lo gral. se ubican al comenzar el webform Algunas de las directivas ms importantes son:
@Page @Import @Register @Assembly @OutputCache
Directiva @Page
Influye en como el parser y el compilador generan la pgina ASP.NET Sus atributos ms importantes son:
Inherits: la clase code-behind del webform Codebehind: nombre del archivo de clase codebehind Language: que lenguage .NET es usado EnableSessionState: acceso al objeto Session. True/False/ReadOnly EnableViewState: usar o no ViewState
Directiva @Register
Se utiliza cuando usamos controles de servidor de terceras partes o propios (Custom Controls, assemblies .dll) y controles de usuario .ascx Ejemplo WebForm1.aspx
<%@Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=9.1.5000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %> <%@Register TagPrefix="uc1" TagName="Copyright" Src="Copyright.ascx" %>
Directiva @OutputCache
Determina como el webform es mantenido en el cache El webform se compila y almacena en el OutputCache Prximas solicitudes son servidas directamente Aumento de la performace de la aplicacin Ejemplo
Inline
El cdigo C# o VB.NET, y el HTML, en el mismo archivo ASPX pero en una seccin <script> separada
<SCRIPT Language="vb" runat="server">...</SCRIPT>
Code-Behind
El cdigo C# o VB.NET, y el HTML, separados en archivos diferentes
WebForm1.aspx (Codigo HTML, Controles de servidor, etc) WebForm1.aspx.vb o WebForm1.aspx.cs (Cdigo .NET)
Controles de Servidor
Equivalencias de Controles
Botn HTML
<INPUT type="button" value="Buscar">
ViewState
HTTP es un protocolo sin-estado y por consiguiente tambin lo son los WebForms ASP.NET resuelve este problema usando un campo oculto denominado ViewState
Se generan dentro de un webform (runat=server) Mantiene la informacin de los controles de servidor entre idas y vueltas al servidor <input type="hidden" name="__VIEWSTATE" value="dDw3NzE0MTExODQ7Oz4=" />
Intrnsecos
WebControl <asp:button>
<asp:checkbox> <asp:hyperlink> <asp:image> <asp:imagebutton> <asp linkButton> <asp:label> <asp:panel> <asp:radiobutton> <asp:table> <span> </span> <div> </div> <input type=radiobutton> <table> </table>
<asp:textbox>
<asp:listbox>
<input type=text>
<select size="5"> </select>
De Validacin
Son elementos ocultos que validan las entradas de datos contra algn patrn El proceso de validacin puede ser llevado en:
Cliente
El browser cliente debe soportar lenguaje script
Le da al usuario un feedback inmediato Reduce el nmero de postbacks
Servidor
Repite la validacin del lado del cliente Permite validar contra datos almacenados por ej. en una base de datos
De Validacin (Cont.)
ASP.NET proporciona 6 controles
RequiredFieldValidator. Valor requerido. CompareValidator. Valida contra un valor constante o contra otro control. RangeValidator. Valor dentro de un rango de tipos.
De Validacin (Cont.)
Varios controles de validacin pueden ser asociados a una entrada de usuario
Ej.: Un TextBox para el ingreso de un CUIT
RequiredFieldValidator: por ser obligatorio su ingreso
De Validacin (Cont.)
En el lado del servidor se puede determinar si TODAS las validaciones fueron exitosas mediante Page.IsValid Muy importante!
La propiedad IsValid NO est disponible en los eventos Init ni Load del WebForm
Ricos
Controles con lgica de IU compleja encapsulados de forma sencilla ASP.NET proporciona 2 controles:
AdRotator. Permite mostrar anuncios publicitarios (banners) de una secuencia predeterminada o aleatoria. Calendar. Permite disponer de un calendario altamente personalizable.
Control Calendar
De enlace a datos
Permiten mostrar datos desde un origen de datos (BD, Arrays, etc.) ASP.NET proporciona 7 controles
Listbox
DropDownList
CheckBoxList RadioButtonList
Repeater
DataList DataGrid
Control de Usuario
Simplifican la reutilizacin de cdigo y componentes de la IU dentro de las aplicaciones Web ASP.NET Es un control del servidor definido por el desarrollador en un archivo .ascx Contiene HTML pero NO los tags <HTML>, <BODY> o <FORM>
<%@ Control Language="vb" %> <%@ Control Language=cs" %>
WebForm1.aspx
WebForm2.aspx
Administracin de estados
Session state
Informacin disponible nicamente para un usuario de una sesin especfica
ViewState
Mantiene valores entre mltiples solicitudes a la misma pgina
Database
En algunos casos se utiliza una BD para guardar la informacin de estado
Query strings
Informacin anexada al final de la URL
Problema: el usuario puede borrarlas o deshabilitarlas Problemas de seguridad Espacio limitado a almacenar no ms de 4KB
Cookie
El archivo Global.asax
Administra eventos a nivel de aplicacin Un nico archivo global.asax por aplicacin Bajo el directorio raz de la aplicacin Es opcional Administra eventos de sesin y aplicacin Tres categoras de eventos soportados
Eventos disparados cuando se inicia la aplicacin Eventos disparados cuando se pgina solicitada es enviada al cliente Eventos de aplicacin condicionales
Page execution
Duracin de variables Session y Application Las variables Session tienen una duracin establecida despus del ltimo acceso
Valor predeterminado = 20 minutos
Creacin de Cookies
Crear una cookie
Dim c As New HttpCookie(miCookie) Dim fecha As DateTime = DateTime.Now c.Values.Add(Fecha, fecha.ToString()) c.Values.Add(ColorTexto, White) c.Values.Add(ColorFondo, Blue) c.Expires = fecha.AddHours(1) Response.Cookies.Add(c)
Para crear una cookie persistente hay que especificar una expiracin
Lectura de Cookies
Para leer la informacin de una cookie
Dim c As HttpCookie = Request.Cookies(miCookie)
Sesiones Cookieless
Cada sesin activa es identificada y seguida por un identificador Los IDs de sesiones viajan desde el servidor al cliente usando:
Una HTTP Cookie (Por default), o Incluida en la URL (Cookieless)
Sesiones Cookieless
El ID de la sesin forma parte de la URL
http://server/(h44a1e55c0breu552yrecobl)/pagina.aspx
Seguridad en ASP.NET
Autenticacin y Autorizacin
Autenticacin
Acepta credenciales proporcionadas por el usuario
Autorizacin
Dada una credencial autenticada, determinar los derechos de acceso a los recursos Los accesos pueden ser dados o denegados a un usuario en particular o basado en un rol
Basado en Formularios
Las solicitudes no autenticadas son redireccionadas a un formulario de login Despus de validar la credencial se enva al cliente una cookie de autenticacin
Ventajas
Usa la infraestructura de Windows Control de acceso a informacin crtica
Desventajas
No apropiado para la mayora de las aplicac. Web Est basada en cookies
Basado en Formularios
Bueno para aplicac. Web Soporta a todos los tipos de clientes Un solo login para muchos sitios Web No se necesita guardar info del usuario en BD
Microsoft Passport
IIS
NO Autenticado
Acceso Denegado
NO Autenticado
4 Form de Login
(Usuario ingresa sus credenciales)
Autorizado
3
Autenticado
Cookie de autenticacin
Autorizado
Optimizacin y Distribucin
Objeto Cache
Usado para guardar informacin
Un objeto Cache por Aplicacin
Cache Dependency
VaryByCustom
browser Personalizado: sobrescribiendo el mtodo GetVaryByCustomString en el global.asax
Shared
True/False (default): guarda una version del UserControl por cada webform que lo use
Configurar la carpeta destino como directorio virtual en IIS Copiar todos los archivos necesarios, incluyendo el directorio BIN y su contenido
No se necesita registrar NADA
Preparando la distribucin
1. Generar la aplicacin (IMPORTANTE: configurar Debug=False en el Web.Config) 2. No distribuir archivos innecesarios
Archivos de soluciones y proyectos de Visual Studio .NET (.vbproj, .vbproj.webinfo, .csproj, .csproj.webinfo, etc.) Archivos de recursos (.resx) Archivos Code-behind (.vb, .cs)
Preguntas? Dudas?
Muchas gracias!
Pagina solicitada
inicio.html
HTTP Request
GET /inicio.html HTTP/1.1 Accept: */* Accept-Language:... Accept-Encoding:... If-Modified-Since:... If-None-Match:... User-Agent: Mozilla/4.0... Host: www.cursoaspnet.com Connection: Keep-Alive [blank line]
HTTP Response
HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: ... Content-Type: text/html Accept-Ranges: bytes Last-Modified: ... ETag: ... Content-Length: 46 [blank line] <html> <body> Bienvenidos al Curso ASP.NET </body> </html>
HTML Form
Suma.html <html> <body> <form> <input type="text" name="op1" /> + <input type="text" name="op2" /> <input type="submit" value=" = " /> </form> </body> </html>
HTML Form
HTTP GET
GET /suma.html?op1=2&op2=2 HTTP/1.1 . . . Connection: Keep-Alive [blank line]
HTTP POST
POST /suma.html HTTP/1.1 . . Content-Type: ... Content-Length: 11 [blank line] op1=2&op2=2