Sunteți pe pagina 1din 102

MSDN

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

Hypertext Transfer Protocol (HTTP)


Uno de los protocolos ms importantes del Web HTTP define como los navegadores y los servidores Web se comunican uno con otro Esta basado en texto y es transmitido sobre conexiones TCP

Como funciona HTTP


Cliente
http://www.cursoaspnet.c om/inicio.html Internet DNS IP=66.45.26.25 Puerto: 80

Servidor
HTTP Request
www.cursoaspnet.com IP = 66.45.26.25

HTTP Response

inicio.html <html> <body> Bienvenidos al Curso ASP.NET </body> </html>

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>

HTML Forms (Cont.)


Un botn submit (<input type=submit>) juega un rol especial en un HTML Form:
Cuando es pulsado, el navegador enva el HTML Form junto con cualquier entrada de datos del usuario al servidor Web

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 >>

HTML Forms (Cont.)


Method = GET
<form method=get"> ...

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]

El navegador envia los datos ingresados como una cadena de consulta

El navegador envia los datos ingresados en el cuerpo de la solicitud HTTP

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>

Despus del procesamiento


Suma.html
<html> <body> <form> <input type="text" name="op1 value=2/> + <input type="text" name="op2 value=2> <input type="submit" value=" = " /> 4 </form> </body> </html>

Antes del procesamiento

Procesamiento en el Servidor (Cont.)


Existen varias tecnologas de procesamiento: CGI (Common Gateway Interface)
Define una API de bajo nivel Se programa en Perl Popular en entornos UNIX, no tanto en Windows

ISAPI (Internet Server Application Programming Interface)


Son DLL Windows que corren bajo IIS. Escritas en C++ Una solicitud tpica sera , http://www.cursoaspnet.com/suma.dll Mejor performance que CGI

ASP (Active Server Pages)


Simple solucin: HTML + Script del lado del servidor Programadas en JScript o VBScript Objetos intrnsecos que abstraen detalles de bajo nivel de HTTP. Objetos Request y Response Permite usar ADO (ActiveX Data Object) para acceso a datos

Que pasa con ASP?


ASP es lenta: el cdigo script es interpretado ms que compilado
Por cada solicitud a la pgina el script es interpretado

ASP carece de un verdadero modelo de encapsulacin


Por ej. NO es posible crear controles ASP reutilizables que encapsulen complejos rendering o alguna lgica de comportamiento, sin recurrir a COM

El cdigo puede tornarse imposible de leer

Mezcla de cdigo y la presentacin


Distribuir una aplicacin ASP que utilice COM puede ser un dolor de cabeza

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

Implementacin y actualizacin de las aplicaciones sin reiniciar el servidor!


Acceso a toda la BCL del .NET Framework

Independiente del lenguaje de programacin


Administracin automtica del estado de los controles Web (VIEWSTATE)

Encapsulamiento a travs de controles de servidor y controles de usuario!

ASP.NET Ventajas (Cont.)


Permite usar ADO.NET para acceso a datos Soporta XML, Hojas de estilo CSS, etc. Deteccin automtica del navegador cliente, generando el lenguaje de marcas soportado por el mismo Mecanismo de Caching incorporado para pginas completa o partes de la misma, frecuentemente solicitadas

Modelo de ejecucin de ASP.NET


Primera Solicitud
Parser
Compilador
<% ... %> <% ... %>

Inicio.aspx

http://localhost/inicio. aspx

Memoria Cliente
HTTP Runtime

Assembly Cache
Assembly en Assembly en MSIL MSIL

Servidor

Modelo de ejecucin de ASP.NET (Cont.)


Siguientes Solicitudes
Parser
Compilador
<% ... %> <% ... %>

Inicio.aspx

http://localhost/inicio. aspx

Memoria Cliente
HTTP Runtime

Assembly Cache
Assembly en Assembly en MSIL MSIL

Servidor

Componentes de una aplicacin ASP.NET


WebForms (Formularios Web) o Pginas ASPX
Uno o ms archivos con extensin .aspx

Archivos Code-Behind
Archivos asociados a WebForms que contienen cdigo del lado del servidor (Ej. VB.NET, C#, etc.)

Archivos de configuracin con formato XML


Un archivo Web.config por c/aplicacin Un nico archivo Machine.config por servidor

Global.asax
Eventos a nivel de aplicacin

Componentes de una aplicacin ASP.NET


Directorio BIN
Contiene el assembly de la aplicacin (Ej.: MiAplic.dll)

Cero o ms assemblies (Componentes externos)

Enlaces a Servicios Web XML


Permiten a la aplicacin ASP.NET enviar y recibir datos desde Servicios Web

Mecanismo de Caching
Permite responder al cliente de manera ms rpida despus de la primera solicitud

Componentes de una aplicacin ASP.NET


Cliente ASP.NET Web Server
WebForm1.aspx

Global.asax

Output Cache

WebForm1.aspx.vb

Web.config
WebForm2.aspx

Internet

BIN
WebForm2.aspx.vb

Comp. Comp.

Servicios Web Database

Las aplicaciones Web ASP.NET + IIS


IIS es el servidor Web de la plataforma Windows Las aplicaciones Web solo pueden existir en una ubicacin que es publicada por IIS como un Directorio Virtual Directorio Virtual: es un recurso compartido identificado por un alias y que representa una ubicacin fsica en el servidor El famoso //localhost hace referencia al directorio raz del servidor web Por default, //localhost apunta a C:\Inetpub\wwwroot

Las aplicaciones Web ASP.NET + IIS


VS.NET por default crea las aplicaciones web bajo el directorio raz, ej.:
MiAplicacion
Virtual: Fsica:

http://localhost/MiAplicacion C:\Inetpub\wwwroot\MiAplicacion

Podemos usar IIS para definir un directorio virtual donde alojar nuestras aplicaciones Web, diferente al predeterminado

Estructura de las aplicaciones Web


El permetro de una aplicacin Web es determinada por su estructura de directorios

Comienza por su directorio raz, el cual contiene:


La pgina o WebForm de inicio

El archivo de configuracin Web.config


El directorio BIN

El permetro de la aplicacin termina en su ltimo directorio o cuando se encuentra el directorio raz de otra aplicacin Web

La pgina de inicio de la aplicacin


Etapa de desarrollo
Cuando VS.NET crea una aplicacin Web ASP.NET, este hace que la pgina WebForm1.aspx se la pgina de inicio La pgina de inicio es el primer WebForm que se muestra cuando se ejecuta una aplicacin desde VS.NET Podemos establecer la pgina de inicio a nuestro gusto

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)

ASP.NET con VS.NET


Archivos de soluciones
Las soluciones contienen uno o ms proyectos Existen dos archivos de soluciones:
El archivo con extensin .sln mantiene enlaces a los proyectos que la contienen y otra informacin general. Similares a los archivos .vbg de VB6 El archivo con extensin .suo mantiene informacin sobre las opciones personalizadas de la solucin hecha por el usuario.

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#)

ASP.NET con VS.NET


Assembly del proyecto
Cuando compilamos la aplicacin, TODAS las clases code-behind (.aspx.vb o .aspx.cs) son compiladas en un assembly con el nombre MiProyecto.dll dentro del directorio BIN de la aplicacin Tambin existen los archivos de clase AssemblyInfo.vb y AssemblyInfo.cs que contienen informacin general del assembly de la aplicacin como ser Versin, Nombre de la empresa, etc

Estructura de archivos de una aplicacin Web ASP.NET


My Documents Inetpub

Visual Studio Projects

wwwroot

ProyectoA

ProyectoA

ProyectoA.sln

Desarrollo
Assemblies
Generar aplicacin

ProyectoA.vbproj WebForm1.aspx WebForm1.aspx.vb


(Archivos Code-behind)
Bin

ProyectoA.dll

ASP.NET WebForms

Que son los WebForms


Los elementos ms importantes y la interface de usuario de las aplicaciones ASP.NET Contienen HTML, cdigo y controles Son HTML Forms con runat=server Separan la interface de usuarios del cdigo (code-behind)
Archivos con extensin .aspx para la IU Archivos con extensin .aspx.vb o .aspx.cs para el cdigo que se ejecuta en el lado del servidor

Son cross-browser compatible


Generan HTML 3.2 para browsers de bajo nivel Generan HTML 4.0 para browsers de alto nivel

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

Ciclo de vida de un WebForm


Cuando un WebForm es solicitado, se disparan una serie de eventos, siempre en el mismo orden Los eventos son:
Init: crea e inicializa los controles que conforman el webform Load: se carga la pgina y se puede acceder a sus controles Eventos de los controles: ej. Textbox1_Changed, Button1_Click Unload: ya se envi toda la respuesta al cliente y el objeto Page es eliminado de memoria

Ciclo de vida de un WebForm


Page_Init
Eventos de controles
Eventos de cambio Eventos de acciones

Page_Load
Textbox1_Changed Button1_Click Page_Unload
Objeto Page eliminado

Ciclo de vida de un WebForm

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

Postback en WebForms y Controles

Page Propiedades destacadas


Application: mantiene estado a nivel de aplicacin. System.Web.ApplicationState IsPostBack: indica si el WebForm esta siendo ejecutado como resultado de un PostBack Request: contiene informacin sobre la solicitud actual. System.Web.HttpRequest Response: contiene informacin sobre la respuesta a enviar hacia el cliente. System.Web.HttpResponse Session: mantiene estado a nivel de sesin. System.Web.SessionState.HttpSessionState

Page Mtodos destacados


DataBind: enlaza a todos los controles del webform con datos FindControl: permite buscar un control dentro del webform por su ID LoadControl: permite cargar dinmicamente controles de usuario .ascx MapPath: devuelve la direccin fsica de una direccin virtual especificada Validate: instruye a todos los controles de validacin del webform a que lleven a cabo su trabajo

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" %>

<CR:CrystalReportViewer id="CrystalReportViewer1" runat="server" Width="350px" Height="50px"></CR:CrystalReportViewer> <uc1:Copyright id="Copyright1 runat="server"></uc1:Copyright>

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

<%@OutputCache Duration="10" VaryByParam="none" %>

Como codificar los WebForms?


ASP.NET ofrece tres mtodos
Mixed
El cdigo C# o VB.NET mezclado con el HTML NO RECOMENDADO

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)

Usado por VS.NET

Controles de Servidor

Que son los Controles de Servidor?


Componentes que se ejecutan en el lado del servidor Encapsulan partes de la interface de usuarios Poseen el atributo runat=server Mantienen su estado entre postbacks al servidor ViewState Poseen un modelo de objetos comn
Ej.: todos tienen las propiedades Id y Text

Generan HTML especifico segn el browser cliente

Tipos de Controles de Servidor


Controles de Servidor HTML
Por default, los elementos HTML no son accesibles desde cdigo del lado del servidor Agregando runat=server y el atributo id, se convierten en Controles de Servidor HTML

Controles de Servidor Web


Conocidos como WebControls Solo accesibles del lado del servidor Muchos tipos
Intrnsecos Validacin Ricos Del tipo lista de datos

No tienen una relacin 1:1 con elem. HTML

Equivalencias de Controles
Botn HTML
<INPUT type="button" value="Buscar">

Control de Servidor HTML


<INPUT type="button" value="Buscar" id="cmdBuscar" runat="server" NAME="button1">

Control de Servidor Web


<asp:Button id="cmdBuscar" runat="server" Text="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=" />

El ViewState puede ser desactivado


A nivel de pgina - <%@ Page EnableViewState="False" %> A nivel de control - <asp:ListBox id=Paises" EnableViewState=false" runat="server"></asp:ListBox>

Controles de servidor HTML


Elementos HTML que poseen:
El atributo runat=server Estn dentro de un WebForm (form con runat=server)

Se encuentran en el namespace System.Web.UI.HtmlControls Ventajas


Rpida conversin de una pg. HTML en un WebForm .aspx Optimizacin al elegir que controles se procesan en el lado del cliente y cuales en el lado del servidor

Convertir HTML Tags en Controles

Controles de servidor Web


Creados especialmente para ASP.NET No funcionan si les falta el atributo runat=server Encapsulan lgica de IU complejas Basados en un modelo de objetos comn Se encuentran en el namespace System.Web.UI.WebControls Divididos en categoras segn su funcionalidad

Controles de servidor Web (Cont.)

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>

HTML equivalente <input type=submit>


<input type=checkbox> <a href=""> </a> <img src=""> <input type=image>

<asp:textbox>
<asp:listbox>

<input type=text>
<select size="5"> </select>

Controles de servidor Web (Cont.)

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

Controles de servidor Web (Cont.)

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.

RegularExpressionValidator. Valida contra un patrn o expresin regular.


CustomValidator. Lgica de validacin proporcionada por nosotros. ValidationSummary. NO es un validador, solo muestra mensajes de error agrupados.

Controles de servidor Web (Cont.)

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

RegularExpressionValidator: para validar el formato de CUIT como XX-XXXXXXXX-X


CustomValidator: para validar contra una base de datos de CUITs

Controles de servidor Web (Cont.)

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

Controles de validacin (ValidationSummary)

Controles de servidor Web (Cont.)

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

Controles de servidor Web (Cont.)

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" %>

Contiene tambin cdigo en VB.NET o C#

Por que usar Controles de Usuario?


Son autocontenidos Pueden ser utilizados ms de una vez Pueden estar escritos en diferentes lenguajes
FARMACIA UserControl.ascx FARMACIA FARMACIA

WebForm1.aspx

WebForm2.aspx

Agregando Controles de Usuario


Para usar un control de usuario en un WebForm se usa la directiva @Register
<%@Register TagPrefix="uc" TagName="encabezado" Src="header.ascx" %>

Dentro del WebForm...


<uc:encabezado id=Enc1 runat=server> </uc:encabezado>

Podemos acceder y crear propiedades como cualquier otro control u objeto

Administracin de estados

Que es la administracin de estados?


Sin Adm. De Estados
Login.aspx
Ingrese sus datos de inicio de sesin Nombre Juan Contrasea *******

Con Adm. De Estados


Login.aspx
Ingrese sus datos de inicio de sesin Nombre Juan Contrasea *******

Ingresar Inicio.aspx Hola Olvide quien es Ud!

Ingresar Inicio.aspx Hola Juan

Tipos de administracin de estados


Del lado del servidor
Application state
Informacin disponible para todos los usuarios de la aplicacin Web.

Del lado del cliente


Cookies
Archivos de texto que guardan informacin de estado en la PC cliente

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

Del lado del servidor


Application State es un mecanismo de almacenamiento global accesible desde todas las pginas de la aplicacin Web Seesion State est limitada a la sesin actual del browser Las sesiones ASP.NET se identifican con una cadena de caracteres ASCII y se guarda como una Cookie en el cliente
Variables de Session y Application SessionID

Del lado del cliente


Usar Cookies para mantener el estado
Temporarias Persistentes

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

El archivo Global.asax (Cont.)


Client Request Response ASP.NET Server Internet Information Services - IIS ASP.NET HTTP Runtime
Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_ResolveRequestCache Application_AquireRequestState Application_PreRequestHandlerExecute Application_EndRequest Application_UpdateRequestCache Application_ReleaseRequestState Application_PostRequestHandlerExecute

Page execution

Inicializacin de variables Session y Application


Variables inicializadas en el global.asax
El objeto Application mantiene informacin para todos los usuarios de la aplicacin
Sub Application_Start(s As Object,e As EventArgs) Application(NroDeVisitas) = 0 End Sub

El objeto Session mantiene informacin para una sesin de un usuario

Uso de variables Session y Application Establecimiento de valores


Session("ColorFondo") = "blue" Application.Lock() Application("NroDeVisitas") += 1 Application.UnLock()

Lectura de los valores


strColorFondo = Session("BackColor") lblVisitas.Text = Application("NroDeVisitas")

Duracin de variables Session y Application Las variables Session tienen una duracin establecida despus del ltimo acceso
Valor predeterminado = 20 minutos

La duracin puede modificarse desde el archivo Web.config


<configuration> <system.web> <sessionState timeout="10" /> </system.web> </configuration>

Las variables Application persisten hasta que se dispara el evento Application_End

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

La cookie mantiene informacin del dominio

Set-Cookie: Username=Juan+Lopez; path=/; domain=miempresa.com; Expires=Tuesday, 05-Feb-15 00.00.01 GMT

Lectura de Cookies
Para leer la informacin de una cookie
Dim c As HttpCookie = Request.Cookies(miCookie)

Acceder a los valores almacenados


lblTime.Text = c.Values(Fecha) lblTime.ForeColor = System.Drawing.Color.FromName _ (c.Values(ColorTexto)) lblTime.BackColor = System.Drawing.Color.FromName _ (c.Values(ColorFondo))

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

Configurando sesiones Cookieless


El estado de sesin se configura en la seccin <SessionState> del Web.config
<configuration> <system.web> <sessionState cookieless=true" /> </system.web> </configuration>

Seguridad en ASP.NET

Autenticacin y Autorizacin
Autenticacin
Acepta credenciales proporcionadas por el usuario

Valida esas credenciales

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

Mtodos de autenticacin en ASP.NET


Basado en Windows
Basada en Windows e IIS La solicitud de la pgina pasa por IIS Si IIS valida exitosamente la credencial, entonces se devuelve la pgina solicitada

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

Basado en Microsoft Passport


Servicio de autenticacin centralizado Passport es un Web Service

Comparacin de mtodos de autenticacin


Mtodo
Basado en Windows

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

Est basado en cookies Tiene un costo economico

Autenticacin basada en Formularios


1

IIS
NO Autenticado

Autenticacin basada en Formulario


Autenticado

Cliente solicita una pgina

Acceso Denegado

NO Autenticado

Usuario Gabriel Clave *********** Aceptar

4 Form de Login
(Usuario ingresa sus credenciales)

Autorizado

3
Autenticado

Cookie de autenticacin

Autorizado

Pgina Segura solicitada

Como activar seguridad basada en forms


Configurar IIS para usar autenticacin ANONIMA Establecer autenticacin en el Web.config
<authentication mode="Forms" > <forms name=".namesuffix" loginUrl="login.aspx" /> </authentication>

Establecer la autorizacin en el Web.config


<location path="ShoppingCart.aspx"> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> </location>

Crear el webform para login

Webform para login


Referenciar System.Web.Security El WebForm de login verifica y valida la credencial del usuario
Sub cmdLogin_Click(s As Object, e As eventArgs) If (login(txtEmail.Text, txtClave.Text)) FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False) End If End Sub

Obtener el usuario autenticado


User.Identity.Name

Optimizacin y Distribucin

Objeto Cache
Usado para guardar informacin
Un objeto Cache por Aplicacin

Una alternativa a las variables Application


Depuracin automtica de items caducos Se pude determinar cuando un item es eliminado del Cache a travs de callbacks No se necesita bloquear antes de modificar un item
Page.Cache(clave) = Valor

Cache Dependency

Output Cache para WebForms (I)


El contenido del Cache es generado desde pginas dinmicas

Configurar la duracin en segundos


Configurar VaryByParam para controlar el nmero de variaciones de pginas en Cache
none param1;param2;... *

Output Cache para WebForms (II)


VaryByHeader (NO disponible para UserControls)
Varia segn un encabezado HTTP como Acceptlanguage

VaryByCustom
browser Personalizado: sobrescribiendo el mtodo GetVaryByCustomString en el global.asax

Output Cache para UserControls


Conocido como Partial Caching Configurar duracin en segundos Podemos usar VaryByParam VaryByControl
ID del control

Shared
True/False (default): guarda una version del UserControl por cada webform que lo use

Distribucin de aplicaciones Asp.NET


Copiar los archivos localmente o a travs de FTP

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)

3. Copiar localmente o por FTP los archivos al directorio de produccin

Actualizacin de aplicaciones ASP.NET


Copiar localmente o por FTP los archivos a actualizar
NO se necesita DETENER o REINICIAR IIS
Los assemblies .dll pueden ser actualizados/sobrescritos mientras el sitio est en ejecucin

El mecanismo Shadow Copy protege a los usuarios activos

Preguntas? Dudas?

Muchas gracias!

Pagina solicitada
inicio.html

<html> <body> Bienvenidos al Curso ASP.NET </body> </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

Antes del procesamiento


Suma.html <html> <body> <form> <input type="text" name="op1" /> + <input type="text" name="op2" /> <input type="submit" value=" = " /> </form> </body> </html>

Despues del procesamiento


Suma.html <html> <body> <form> <input type="text" name="op1 value=2/> + <input type="text" name="op2 value=2> <input type="submit" value=" = " /> 4 </form> </body> </html>

S-ar putea să vă placă și