Document 7389614

Download Report

Transcript Document 7389614

Bienvenidos
Programación de aplicaciones
con ASP.NET
Daniel Laco
Carlos Walzer
Agenda
• Objetivo de la Conferencia
• ¿Qué son los Starter Kits?
• Data Access Application Block (DAAB)
• ¿Cómo se procesa un WebForm?
• Seguridad en ASP.NET
• Creación de Controles de Usuario
Nivel de la conferencia: Básico / Intermedio (100-200)
Objetivos
• Mostrar una aplicación
• Ver el acceso a datos
• Entender el modelo de procesamiento de un WebForm
• Saber como se maneja la seguridad
• Crear Controles de Usuario
Starter Kits
Starter Kits
• ¿Qué son los Starter Kits?
• Se pueden bajar de www.asp.net
• El elegido para hoy:
– “TimeTracker”
Data Access Application Block
(DAAB)
Data Access Application Block
• Componente de Acceso a datos
• Todo el código fuente disponible
• Arquitectura recomendada por Microsoft
• Funciones estáticas (static-shared)
• Transacciones
Modelo
Cliente
DAAB
Sentencia SQL
o
Proc. Almacenado
SqlHelper
int
Dataset
SqlDataReader
object
XmlReader
SqlParameter
Array
ExecuteNonQuery
ExecuteDataset
ExecuteReader
ExecuteScalar
ExecuteXmlReader
SQL
SqlHelperParameterCache
CacheParameterSet
GetCachedParameterSet
GetSpParamterSet
SQLHelper
• Métodos
–
–
–
–
–
ExecuteNonQuery
ExecuteDataset
ExecuteReader
ExecuteScalar
ExecuteXmlReader
• Conexión
• Tipos Sentencias
• Parámetros
Resumen - DAAB
• Acceso a datos robusta y eficiente
• Fácilmente extensible
Recursos
msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/
html/daab-rm.asp
¿Cómo se procesa un WebForm?
Modelo Web
Cliente Web
Request
(Pedido)
Response
(Respuesta)
Server
Modelo de Eventos Web Forms
• Evento disparado en el Cliente
• Atrapado en el servidor
Cliente Web
evento
Request
(Pedido)
Server
Analiza mensaje
Llama al
manejador
apropiado
manejador
Response
(Respuesta)
Como se implementa
• Form
– POST
– Page.IsPostBack
• ViewState
– Base64
– EnableViewState
– No siempre es necesario
• Eventos
– Post-Back
– Cached events (retenidos)
• AutoPostBack
– Validación
Ciclo de Vida de un Web Form
1.
Inicialización de Objetos
2.
Carga ViewState
3.
Procesa datos del Post
4.
Carga Objetos
5.
Lanza los Eventos Cached
6.
Lanza el Evento Post-Back
7.
PreRender
8.
Graba ViewState
9.
Render
10. Disposal
Resumen - WebForms
• Nos acerca al modelo de Win32
• Administre el Post-Back
– Round-Trips
– ViewState
Recursos
msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/
vbconwebformspageprocessingstages.asp
Seguridad
Servicios de Seguridad
• Autenticación y autorización en ASP.NET:
– Extensible y personalizable
– Esquema de Autenticación transparente
– Modelo simple de desarrollo
• Soporte para autorizaciones granulares
• Usa CLR Evidence Based Security
• Soporta seguridad a nivel de aplicación
Autenticación - Tipos
• Windows Authentication (vía IIS)
– Basic, Digest, NTLM, Kerberos, IIS Certificate
• Autenticación basada en Formularios (Cookie)
– Verificación de credencial a nivel de Aplicación
• Microsoft Passport®
Autenticación basada en
Formularios
• Fácil de implementar
– ASP .NET provee redirección
• Pasos
–
–
–
–
Configure IIS para que permita usuarios anónimos (típicamente)
Use SSL!
Configure ASP.NET con autenticación por cookie
Escriba su página de Login
<authentication mode= "Forms">
<forms
name=".ASPXAUTH" loginUrl="login.aspx"
protection="all" timeout="30"
path="/"
/>
</authentication>
Autorización Web Personalizada
• Escenarios:
– Acceso basado en reglas del negocio
– Acceso basado en comportamientos variables
• (Ej.: límite de acceso por día, etc.)
• Modelo simple de desarrollo
• Maneja el evento AuthenticateRequest
– A nivel de aplicación (global.asax) o
– Http Module (implementar IHttpModule)
Proceso de Request
en ASP.NET
ASP.NET
Page
ASP.NET
Service
HTTP
Handler
Application
HTTP Module
Http Context
HTTP Module
Global.asax
ASP.NET Runtime
Host (IIS)
Código .NET
Código Nativo
Eventos por Request
•
Eventos por Request (en orden):
– Application_BeginRequest
– Application_AuthenticateRequest
<Este es el que nos interesa hoy>
– Application_AuthorizeRequest
– Application_ResolveRequestCache
– Application_AcquireRequestState
– Application_PreRequestHandlerExecute
– Application_PostRequestHandlerExecute
– Application_ReleaseRequestState
– Application_UpdateRequestCache
– Application_EndRequest
Indentidad del Request
• Impersonalización
– Se ejecuta con el contexto de seguridad de la entidad
que hace el Request
– Configurable en ASP.NET
<system.web>
<identity impersonate="true" />
</system.web>
Roles personalizados
• Maneja el evento authentication
• IPrincipal
public void
WindowsAuthentication_OnAuthenticate(
Object src,
WindowsAuthenticationEvent e)
{
// reemplace HttpContext Principal
e.Context.User = new MyPrincipal(e.Identity);
}
Resumen - Seguridad
• Seguridad personalizada
• Reemplace HttpContext.User con un objeto
personalizado de IPrincipal o GenericPrincipal
Recursos - Seguridad
• Autenticación en .NET – Guía de Seguridad:
www.microsoft.com/spain/msdn/articulos/archivo/261001/voices/autha
spdotnet.asp
• Seguridad .NET en MSDN:
msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid
=28001369
INTERVALO 10’
Controles del Servidor
¿Qué es un Control ASP.NET?
• Un componente que se ejecuta en el servidor y expone
interfaz Web…
–
–
–
–
Propiedades, métodos, eventos
Se muestra como HTML, XML, script, etc.
Procesa acciones del usuario y datos
Puede representar elementos HTML o abstracciones de alto nivel
• Hablando técnicamente…
– Es implementado como una clase .NET
– Deriva desde System.Web.UI.Control, o de
System.Web.UI.WebControls.WebControl
Tipos de Controles de Usuario
• Web User Controls
 Fáciles de hacer
 Reemplazan antiguos Includes
 Solo para una aplicación
• Custom Controls (compuestos)
–
–


Composite Custom Control
Rendered Custom Control
Compilable en un Assembly
Soporte para diseño en Visual Studio .NET (toolbox, property
page)
Persistencia basada en Tags
•
<%@ Register%>
– tagPrefix
– tagName
– Namespace
– Src
– Assembly
<%@ Register TagPrefix="Acme" Tagname=“List" Src=“List.ascx" %>
•
Tags interpretados en tiempo de ejecución
–
–
Crea una instancia del Control
Inicializa los valores de las propiedades
<acme:List id=l1 liststyle=number runat=server>
<Items>
<acme:ListItem>first item</acme:ListItem>
<acme:ListItem>second item</acme:ListItem>
<acme:ListItem>third item</acme:ListItem>
</Items>
</acme:List>
Usando Controles en tiempo de ejecución
• Objetos .NET en código
protected AcmeControls.List l1;
• Controles en los eventos de una página
– Page_Load, Button1_Click, etc.
void Page_Load(object send, EventArgs e)
{
l1.Items.Add(“fourth item”);
l1.ForeColor = Color.Blue;
}
Resumen - Controles
• Los Controles proveen un mecanismo de abstracción y
reusabilidad para aplicaciones Web
• Marco muy rico:
–
–
–
Mantener los estados a través de los post
Enviar eventos desde el cliente
Implementar funcionalidad en el cliente mediante script
• Controles derivados
• Composición de controles
Recursos - Controles
• Gotdotnet:
www.gotdotnet.com
• ASP.NET:
www.asp.net
• WebControls:
msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/
webcontrols_entry.asp
Resumen final
• Disponemos de un componente para Acceso a datos
• Entender como funciona el modelo de WebForms
• Crear nuestro Principal para autenticaciones
personalizadas
• Usar Controles para reutilizar el código
Noticias de .NET en español
www.microsoft.com/spanish/msdn/noticias/default.asp
¿Preguntas?
Por favor, completar el
formulario de evaluación
Te llevás un CD con un curso
interactivo de ASP.NET y Visual C#
En 10 días, esta ppt en línea
www.microsoft.com/argentina/msdn
Muchas gracias
por tu participación!
Daniel Laco
[email protected]
Carlos Walzer
[email protected]
Programa Desarrollador Cinco Estrellas
Hacele un upgrade a tu currículum
Si ya tenés tu estrella,
pasá al salón San Telmo
Tu potencial. Nuestra pasión.®