Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo...

79
Desarrollo web con Desarrollo web con ASP.NET ASP.NET

Transcript of Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo...

Page 1: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Desarrollo web con Desarrollo web con ASP.NETASP.NET

Page 2: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

AgendaAgenda

Introducción a ASP.NETIntroducción a ASP.NET

Modelo de ejecuciónModelo de ejecución

Web FormsWeb Forms

Trabajo con controlesTrabajo con controles

Estado en ASP.NETEstado en ASP.NET

Aplicaciones webAplicaciones web

SeguridadSeguridad

Desarrollo web para dispositivosDesarrollo web para dispositivos

Page 3: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NET

Page 4: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NETHistoria del desarrollo webHistoria del desarrollo web

HTML (1991)HTML (1991)Páginas estáticas orientadas al contenidoPáginas estáticas orientadas al contenido

CGI (1993)CGI (1993)Ejecutables que generan HTML Ejecutables que generan HTML dinámicamentedinámicamente

Versión mejorada: ISAPIVersión mejorada: ISAPI

ASP (1996), PHP (1997), JSP (1999)ASP (1996), PHP (1997), JSP (1999)Páginas HTML que incluyen código script Páginas HTML que incluyen código script dinámicodinámico

Page 5: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NETDiferencias con desarrollo Diferencias con desarrollo WindowsWindows

VB 6VB 6

Private Sub Command1_Click()Private Sub Command1_Click() If List1.SelCount > 0 ThenIf List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.TextLabel1.Caption = "Hola, " & List1.Text ElseElse Label1.Caption = ""Label1.Caption = "" End IfEnd IfEnd SubEnd Sub

Private Sub Command1_Click()Private Sub Command1_Click() If List1.SelCount > 0 ThenIf List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.TextLabel1.Caption = "Hola, " & List1.Text ElseElse Label1.Caption = ""Label1.Caption = "" End IfEnd IfEnd SubEnd Sub

Page 6: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NETDiferencias con desarrollo Diferencias con desarrollo WindowsWindows

ASPASP

<html><html>

<%@ Language=VBScript %><%@ Language=VBScript %><% <% nombres = array("Antonio", nombres = array("Antonio",

"Jose", "Alberto", "Jose", "Alberto", "Luis", "Benito")"Luis", "Benito")

%>%>

<body><body><p>Seleccione su nombre:</p><p>Seleccione su nombre:</p><form method="POST" action="HolaMundo.asp"><form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"><p><select name="nombre" size="5"><% for i = 0 to UBound(nombres) <% for i = 0 to UBound(nombres) %>%> <option<option <% if Request.Form("nombre") = nombres(i) then %><% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> >selected <% end if %> > <%=nombres(i) %></option><%=nombres(i) %></option><% next <% next %>%> </select><br><br></select><br><br>

<input type="submit" value="Di hola"></p><input type="submit" value="Di hola"></p></form></form><% if Request.Form("nombre") <> "" then %><% if Request.Form("nombre") <> "" then %><p>Hola, <%=Request.Form("nombre") %></p><p>Hola, <%=Request.Form("nombre") %></p><% end if %><% end if %>

</body></body></html></html>

<html><html>

<%@ Language=VBScript %><%@ Language=VBScript %><% <% nombres = array("Antonio", nombres = array("Antonio",

"Jose", "Alberto", "Jose", "Alberto", "Luis", "Benito")"Luis", "Benito")

%>%>

<body><body><p>Seleccione su nombre:</p><p>Seleccione su nombre:</p><form method="POST" action="HolaMundo.asp"><form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"><p><select name="nombre" size="5"><% for i = 0 to UBound(nombres) <% for i = 0 to UBound(nombres) %>%> <option<option <% if Request.Form("nombre") = nombres(i) then %><% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> >selected <% end if %> > <%=nombres(i) %></option><%=nombres(i) %></option><% next <% next %>%> </select><br><br></select><br><br>

<input type="submit" value="Di hola"></p><input type="submit" value="Di hola"></p></form></form><% if Request.Form("nombre") <> "" then %><% if Request.Form("nombre") <> "" then %><p>Hola, <%=Request.Form("nombre") %></p><p>Hola, <%=Request.Form("nombre") %></p><% end if %><% end if %>

</body></body></html></html>

Page 7: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

<html><html>

<%@ Language=VBScript %><%@ Language=VBScript %><% <% nombres = array("Antonio", nombres = array("Antonio",

"Jose", "Alberto", "Jose", "Alberto", "Luis", "Benito")"Luis", "Benito")

%>%>

<body><body><p>Seleccione su nombre:</p><p>Seleccione su nombre:</p><form method="POST" action="HolaMundo.asp"><form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"><p><select name="nombre" size="5"><% for i = 0 to UBound(nombres) <% for i = 0 to UBound(nombres) %>%> <option<option <% if Request.Form("nombre") = nombres(i) then %><% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> >selected <% end if %> > <%=nombres(i) %></option><%=nombres(i) %></option><% next <% next %>%> </select><br><br></select><br><br>

<input type="submit" value="Di hola"></p><input type="submit" value="Di hola"></p></form></form><% if Request.Form("nombre") <> "" then %><% if Request.Form("nombre") <> "" then %><p>Hola, <%=Request.Form("nombre") %></p><p>Hola, <%=Request.Form("nombre") %></p><% end if %><% end if %>

</body></body></html></html>

<html><html>

<%@ Language=VBScript %><%@ Language=VBScript %><% <% nombres = array("Antonio", nombres = array("Antonio",

"Jose", "Alberto", "Jose", "Alberto", "Luis", "Benito")"Luis", "Benito")

%>%>

<body><body><p>Seleccione su nombre:</p><p>Seleccione su nombre:</p><form method="POST" action="HolaMundo.asp"><form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"><p><select name="nombre" size="5"><% for i = 0 to UBound(nombres) <% for i = 0 to UBound(nombres) %>%> <option<option <% if Request.Form("nombre") = nombres(i) then %><% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> >selected <% end if %> > <%=nombres(i) %></option><%=nombres(i) %></option><% next <% next %>%> </select><br><br></select><br><br>

<input type="submit" value="Di hola"></p><input type="submit" value="Di hola"></p></form></form><% if Request.Form("nombre") <> "" then %><% if Request.Form("nombre") <> "" then %><p>Hola, <%=Request.Form("nombre") %></p><p>Hola, <%=Request.Form("nombre") %></p><% end if %><% end if %>

</body></body></html></html>

Introducción a ASP.NETIntroducción a ASP.NETDiferencias con desarrollo Diferencias con desarrollo WindowsWindows

Private Sub Command1_Click()Private Sub Command1_Click() If List1.SelCount > 0 ThenIf List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.TextLabel1.Caption = "Hola, " & List1.Text ElseElse Label1.Caption = ""Label1.Caption = "" End IfEnd IfEnd SubEnd Sub

Private Sub Command1_Click()Private Sub Command1_Click() If List1.SelCount > 0 ThenIf List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.TextLabel1.Caption = "Hola, " & List1.Text ElseElse Label1.Caption = ""Label1.Caption = "" End IfEnd IfEnd SubEnd Sub

DiseñoDiseño

LógicaLógica

EventosEventos

PropiedadesPropiedades

Sin estadoSin estado

EstadoEstado

ComposiciónComposiciónHTMLHTML

Paso de Paso de parámetrosparámetros

PeticiónPeticiónRespuestaRespuesta

Page 8: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NET¿Qué es ASP.NET?¿Qué es ASP.NET?

ASP.NET permite generar aplicaciones ASP.NET permite generar aplicaciones web con el paradigma de Windowsweb con el paradigma de Windows

Diseño + lógicaDiseño + lógica

Componentes gráficosComponentes gráficos

EventosEventos

PropiedadesPropiedades

EstadoEstado

Construido sobre .NETConstruido sobre .NET

Page 9: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Introducción a ASP.NETIntroducción a ASP.NET¿Qué es .NET?¿Qué es .NET?

Base Class LibraryBase Class Library

Common Language SpecificationCommon Language Specification

Common Language RuntimeCommon Language Runtime

ADO.NET, XML, Enterprise ServicesADO.NET, XML, Enterprise Services

VBVB C++C++ C#C#

Vis

ual S

tud

io.N

ET

Vis

ual S

tud

io.N

ET

ASP.NET: Web ServicesASP.NET: Web Servicesand Web Formsand Web Forms

JScriptJScript ……

WindowsWindowsFormsForms

Page 10: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecución

Page 11: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecuciónArquitectura con IIS 5Arquitectura con IIS 5

TCP/IPTCP/IP

INETINFO.exeINETINFO.exe

ISAPI ASP.NETISAPI ASP.NETISAPI ASP.NETISAPI ASP.NET Aspnet_wp.exeAspnet_wp.exe

CLR App DomainCLR App DomainCLR App DomainCLR App Domain

CLR App DomainCLR App DomainCLR App DomainCLR App Domain

CLR App DomainCLR App DomainCLR App DomainCLR App DomainFiltros ISAPIFiltros ISAPIFiltros ISAPIFiltros ISAPI

.ASPX,.ASPX,

.ASCX,.ASCX,

.ASMX.ASMX

ASPNET_WP.exeASPNET_WP.exe

HTTPHandlersHTTPHandlersHTTPHandlersHTTPHandlers

HTTPModulesHTTPModulesHTTPModulesHTTPModules

ASPX ASMX

Auth Sesión Caché

Page 12: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecuciónArquitectura con IIS 6Arquitectura con IIS 6

HTTP.SYSHTTP.SYS

W3WP.exeW3WP.exe

ISAPI ASP.NETISAPI ASP.NETISAPI ASP.NETISAPI ASP.NET

Filtros ISAPIFiltros ISAPIFiltros ISAPIFiltros ISAPI

.ASPX,.ASPX,

.ASCX,.ASCX,

.ASMX.ASMX

Aspnet_wAspnet_wp.exep.exeHTTPHandlers

HTTPModules

Page 13: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecuciónCompilación dinámicaCompilación dinámica

ISAPIISAPIASP.NETASP.NET

GET test.aspxGET test.aspx

GET test.aspxGET test.aspx

ProcesarProcesar

¿test.aspx ¿test.aspx compilada?compilada?

LeerLeerTest.aspxTest.aspx

GenerarGenerar

Test.csTest.cs

Clase Clase compiladacompilada

CompilarCompilarRespuesta HTMLRespuesta HTML

Respuesta HTMLRespuesta HTML

InstanciarInstanciar

Page 14: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Compilación dinámicaCompilación dinámica

Page 15: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecuciónEl código está detrásEl código está detrás

Separación en dos ficheros físicosSeparación en dos ficheros físicosCódigo por detrás de la página (“code-Código por detrás de la página (“code-behind”)behind”)

Código en cualquier lenguaje .NET Código en cualquier lenguaje .NET soportadosoportado

<tags><tags>

test.asp

códigocódigocódigocódigo

<tags><tags>

test.aspx

códigocódigo

test.aspx.cstest.aspx.cs

ASPASP ASP .NETASP .NET

Page 16: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Modelo de ejecuciónModelo de ejecuciónCode-behindCode-behind

GenerarGenerarTest.aspxTest.aspx Test.csTest.cs Test_aspxTest_aspx

TestClass.csTestClass.cs TestClassTestClass

CompilarCompilar

CompilarCompilar

(Opcional)(Opcional)

Deriva Deriva de…de…

Page 17: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Code behindCode behind

Page 18: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb Forms

Page 19: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb Forms¿Qué son?¿Qué son?

Formularios semejantes a Windows pero Formularios semejantes a Windows pero en Weben Web

Separación lógica – diseñoSeparación lógica – diseño

Componentes gráficosComponentes gráficos

EstadoEstado

EventosEventos

PropiedadesPropiedades

Page 20: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb FormsControles de servidorControles de servidor

Componentes que encapsulan la Componentes que encapsulan la generación de HTMLgeneración de HTML

Semejantes a los controles de WindowsSemejantes a los controles de Windows

Pleno soporte desde Visual StudioPleno soporte desde Visual StudioPaleta de componentesPaleta de componentes

LayoutLayout

Diseñadores de propiedadesDiseñadores de propiedades

AsistentesAsistentes

Page 21: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Controles de servidorControles de servidor

Page 22: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb FormsPropiedades de controlesPropiedades de controles

Los controles tienen propiedadesLos controles tienen propiedadesEditables en modo diseñoEditables en modo diseño

También accesibles desde códigoTambién accesibles desde códigoA partir del llamado árbol de controlesA partir del llamado árbol de controles

Test.aspxTest.aspx

HtmlLiteralHtmlLiteral ListBoxListBox HtmlLiteralHtmlLiteral

<html><html><body><body>

<select><select>……

</select></select>

</body></body></html></html>

Page 23: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb FormsEstadoEstado

Los controles de servidor mantienen sus Los controles de servidor mantienen sus propiedadespropiedades

Dos mecanismosDos mecanismosProcesamiento automático de variables del Procesamiento automático de variables del postpost

Viewstate: variable de formulario ocultaViewstate: variable de formulario ocultaCuidado con el tamaño, deshabilitar si no se Cuidado con el tamaño, deshabilitar si no se utilizautiliza

Page 24: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Web FormsWeb FormsEventos de servidorEventos de servidor

Los controles pueden lanzar eventosLos controles pueden lanzar eventosYa sean HtmlControl o WebControlYa sean HtmlControl o WebControl

LoadLoad, , ClickClick, , TextChangeTextChange, , SelectedItemChangeSelectedItemChange……

Posibilidad de procesamiento:Posibilidad de procesamiento:En servidorEn servidor

En clienteEn cliente

Encolados hasta siguiente postbackEncolados hasta siguiente postback

Con todo esto cambia el paradigma de Con todo esto cambia el paradigma de desarrollodesarrollo

De De petición-respuestapetición-respuesta a a event-drivenevent-driven

Page 25: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Desarrollo con eventosDesarrollo con eventos

Page 26: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controles

Page 27: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesControles HTMLControles HTML

Todos los elementos HTML tienen un Todos los elementos HTML tienen un control asociadocontrol asociado

Sólo hay que marcarlo con runat=“server”Sólo hay que marcarlo con runat=“server”

Sólo tienen sentido si son dinámicos o Sólo tienen sentido si son dinámicos o queremos responder a un eventoqueremos responder a un evento

En caso contrario utilizar literalesEn caso contrario utilizar literales

Page 28: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

HtmlImageHtmlImageHtmlImageHtmlImage

Trabajo con controlesTrabajo con controlesControles HTML (II)Controles HTML (II)

HtmlInputControlHtmlInputControlHtmlInputControlHtmlInputControl

System.ObjectSystem.ObjectSystem.ObjectSystem.Object

System.Web.UI.ControlSystem.Web.UI.ControlSystem.Web.UI.ControlSystem.Web.UI.Control

HtmlInputFileHtmlInputFileHtmlInputFileHtmlInputFile

HtmlInputHiddenHtmlInputHiddenHtmlInputHiddenHtmlInputHidden

HtmlInputImageHtmlInputImageHtmlInputImageHtmlInputImage

HtmlInputRadioButtonHtmlInputRadioButtonHtmlInputRadioButtonHtmlInputRadioButton

HtmlInputTextHtmlInputTextHtmlInputTextHtmlInputText

HtmlInputButtonHtmlInputButtonHtmlInputButtonHtmlInputButton

HtmlInputCheckBoxHtmlInputCheckBoxHtmlInputCheckBoxHtmlInputCheckBox

HtmlContainerControlHtmlContainerControlHtmlContainerControlHtmlContainerControl

HtmlControlHtmlControlHtmlControlHtmlControl

HtmlFormHtmlFormHtmlFormHtmlForm

HtmlGenericControlHtmlGenericControlHtmlGenericControlHtmlGenericControl

HtmlSelectHtmlSelectHtmlSelectHtmlSelect

HtmlTableHtmlTableHtmlTableHtmlTable

HtmlTableCellHtmlTableCellHtmlTableCellHtmlTableCell

HtmlTableRowHtmlTableRowHtmlTableRowHtmlTableRow

HtmlTextAreaHtmlTextAreaHtmlTextAreaHtmlTextArea

HtmlAnchorHtmlAnchorHtmlAnchorHtmlAnchor

HtmlButtonHtmlButtonHtmlButtonHtmlButton

<img><img>

<input type=file><input type=file>

<input type=hidden><input type=hidden>

<input type=image><input type=image>

<input type=radio><input type=radio>

<input type=text><input type=text>

<input type=button><input type=button>

<input type=checkbox><input type=checkbox>

<form><form>

<span>, <div>, …<span>, <div>, …

<select><select>

<table><table>

<td>, <th><td>, <th>

<tr><tr>

<textarea><textarea>

<a><a>

<button><button>

Page 29: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesWebControlsWebControls

Nuevo conjunto de controles con Nuevo conjunto de controles con propiedades consistentespropiedades consistentes

Ej. Misma propiedad BackColor en Ej. Misma propiedad BackColor en tabletable y y spanspan

Controles complejosControles complejosEj. Calendar, DataGridEj. Calendar, DataGrid

Se adaptan al browserSe adaptan al browser

Page 30: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

AdRotatorAdRotatorAdRotatorAdRotator

Trabajo con controlesTrabajo con controlesWebControls (II)WebControls (II)

BaseDataListBaseDataListBaseDataListBaseDataList

System.ObjectSystem.ObjectSystem.ObjectSystem.Object

DataGridDataGridDataGridDataGrid

DataListDataListDataListDataList

ListControlListControlListControlListControl

RadioButtonListRadioButtonListRadioButtonListRadioButtonList

CheckBoxListCheckBoxListCheckBoxListCheckBoxList

DropDownListDropDownListDropDownListDropDownList

ListBoxListBoxListBoxListBox

PanelPanelPanelPanel

TableTableTableTable

RepeaterRepeaterRepeaterRepeater XmlXmlXmlXml

System.Web.UI.ControlSystem.Web.UI.ControlSystem.Web.UI.ControlSystem.Web.UI.Control

WebControlWebControlWebControlWebControl

ButtonButtonButtonButton

CalendarCalendarCalendarCalendar

HyperLinkHyperLinkHyperLinkHyperLink

TextBoxTextBoxTextBoxTextBox

RadioButtonRadioButtonRadioButtonRadioButton

CheckBoxCheckBoxCheckBoxCheckBox

LabelLabelLabelLabel

ImageButtonImageButtonImageButtonImageButton

ImageImageImageImage

Page 31: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesWebControls (III)WebControls (III) CalendarCalendarImageButtonImageButton

ImageImage

AdRotatorAdRotator DataGridDataGridDataListDataList

Page 32: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Adaptación al browserAdaptación al browser

Page 33: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesControles Internet ExplorerControles Internet Explorer

Controles extendidos complejos DHTMLControles extendidos complejos DHTMLDescargable de forma separadaDescargable de forma separada

ToolbarToolbar

TreeViewTreeView

TabStripTabStrip

MultiPageMultiPage

Page 34: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesControles de tercerosControles de terceros

Cientos de nuevos controles en Cientos de nuevos controles en httphttp://www.asp.net/ControlGallery://www.asp.net/ControlGallery

Page 35: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesDesarrollo de controlesDesarrollo de controles

WebControlsWebControlsDerivar de System.Web.UI.ControlDerivar de System.Web.UI.Control

Añadir propiedades, eventos, métodosAñadir propiedades, eventos, métodos

Sobrescribir Render()Sobrescribir Render()

Diseñadores, adaptación, Intellisense…Diseñadores, adaptación, Intellisense…

Controles de usuarioControles de usuarioForma sencilla de crear controlesForma sencilla de crear controles

Composición de controles reutilizablesComposición de controles reutilizables

Lógica encapsulada en el controlLógica encapsulada en el control

Page 36: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Controles de usuarioControles de usuario

Page 37: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesEnlace a datosEnlace a datos

Todo es enlazableTodo es enlazable

Múltiples mecanismosMúltiples mecanismosEn línea con En línea con <%# Expresión %><%# Expresión %>

Utilizando propiedad DataSource del controlUtilizando propiedad DataSource del control

Utilizando colección DataBindings del Utilizando colección DataBindings del controlcontrol

Para efectuar el enlace llamar a Para efectuar el enlace llamar a DataBind()DataBind()

Page 38: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Enlace a datosEnlace a datos

Page 39: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesPlantillas (templates)Plantillas (templates)

Los controles pueden ser personalizados Los controles pueden ser personalizados con sus propiedades o usando hojas CSScon sus propiedades o usando hojas CSS

Colores, bordes, letra, etc.Colores, bordes, letra, etc.

Semejante a Windows 9x / NT / 2000Semejante a Windows 9x / NT / 2000

Las plantillas permiten definir layoutsLas plantillas permiten definir layoutsModificación de porciones del interfazModificación de porciones del interfaz

Semejante a Windows XP / 2003Semejante a Windows XP / 2003

Muchos controles exponen plantillas que Muchos controles exponen plantillas que son personalizablesson personalizables

Ej. Cabeceras, celdas, elemento de lista.Ej. Cabeceras, celdas, elemento de lista.

Page 40: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

TemplatesTemplates

Page 41: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Trabajo con controlesTrabajo con controlesControles de validaciónControles de validación

Validan la entrada de datos del usuarioValidan la entrada de datos del usuario

Reglas definidas de forma declarativaReglas definidas de forma declarativaCampo requeridoCampo requerido

Comparaciones, rangosComparaciones, rangos

Expresiones regularesExpresiones regulares

PersonalizadasPersonalizadas

Se ejecutan transparentemente en Se ejecutan transparentemente en cliente y servidorcliente y servidor

Evita roundtripsEvita roundtrips

Page 42: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

ValidaciónValidación

Page 43: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NET

Page 44: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETSesiónSesión

Estado entre peticiones de un mismo Estado entre peticiones de un mismo clientecliente

Dos tiposDos tiposMediante cookie: generada Mediante cookie: generada automáticamenteautomáticamente

ASP.NET_SessionIDASP.NET_SessionID

Cookieless: almacenada en la URLCookieless: almacenada en la URLhttp://server/site/(uqwfp455t2qav155)/http://server/site/(uqwfp455t2qav155)/default.aspxdefault.aspx

Accesible mediante Accesible mediante Page.SessionPage.SessionDiccionario clave / valorDiccionario clave / valor

Page 45: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETSesión (II)Sesión (II)

El estado de la sesión puede El estado de la sesión puede almacenarse:almacenarse:

In-process, en el proceso de ASP.NETIn-process, en el proceso de ASP.NET

Out-of-process, en un servidor de estado Out-of-process, en un servidor de estado ASP.NETASP.NET

Out-of-process, en una base de datos SQL Out-of-process, en una base de datos SQL ServerServer

In-process más óptimoIn-process más óptimo

Out-of-process fiabilidad y escalabilidadOut-of-process fiabilidad y escalabilidadSobrevive a caídasSobrevive a caídas

Estado compartido entre máquinas de una Estado compartido entre máquinas de una granjagranja

Page 46: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETViewstateViewstate

El Viewstate puede utilizarse como El Viewstate puede utilizarse como mecanismo genérico de estadomecanismo genérico de estado

Estado entre una petición y la siguienteEstado entre una petición y la siguiente

CaracterísticasCaracterísticasMuy escalableMuy escalable

Uso de ancho de bandaUso de ancho de banda

Útil para datos de pequeña longitudÚtil para datos de pequeña longitud

ViewState["color"] = “rojo";ViewState["color"] = “rojo";strColor =(string)ViewState["color"];strColor =(string)ViewState["color"];

Page 47: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETEstado de aplicaciónEstado de aplicación

Estado compartido entre todos los Estado compartido entre todos los clientesclientes

Accesible mediante Accesible mediante Page.ApplicationPage.Application

¡Cuidado con la concurrencia!¡Cuidado con la concurrencia!Application.Lock antes de actualizarApplication.Lock antes de actualizar

Application.Unlock después de actualizarApplication.Unlock después de actualizar

¡Cuidado con el rendimiento!¡Cuidado con el rendimiento!Los bloqueos pueden ralentizarLos bloqueos pueden ralentizar

No se comparte entre distintos servidoresNo se comparte entre distintos servidores

Page 48: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Sesión, viewstate y Sesión, viewstate y estado de aplicaciónestado de aplicación

Page 49: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETCachéCaché

Caché de salida Caché de salida (output caching)(output caching)Permite reutilizar el resultado de una página Permite reutilizar el resultado de una página entre peticionesentre peticiones

Enorme ganancia de rendimiento: páginas Enorme ganancia de rendimiento: páginas cacheadas tan rápidas como las estáticascacheadas tan rápidas como las estáticas

También para controles de usuarioTambién para controles de usuarioSe cachean las porciones de página que no Se cachean las porciones de página que no cambiancambian

Page 50: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETCaché (II)Caché (II)

VaryByParamVaryByParamVariar por el parámetro especificadoVariar por el parámetro especificado

VaryByHeaderVaryByHeaderVariar por cabecera (ej. User-agent, lenguaje)Variar por cabecera (ej. User-agent, lenguaje)

VaryByCustomVaryByCustomRutina personalizadaRutina personalizada

VaryByPropertyVaryByPropertyVariar por propiedad del controlVariar por propiedad del control

DurationDurationDuración de cachéDuración de caché

<%@ OutputCache VaryByParam=“XXX“ VaryByHeader=“XXX” <%@ OutputCache VaryByParam=“XXX“ VaryByHeader=“XXX” VaryByCustom=“XXX” VaryByProperty=“XXX” Duration=“XX" %>VaryByCustom=“XXX” VaryByProperty=“XXX” Duration=“XX" %>

Page 51: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Estado en ASP.NETEstado en ASP.NETCaché (III)Caché (III)

Caché de datosCaché de datosPermite guardar objetos costosos de Permite guardar objetos costosos de generar entre todos los clientesgenerar entre todos los clientes

Ej. Consulta a base de datosEj. Consulta a base de datos

Accesible desde Accesible desde Page.CachePage.Cache

Los elementos son eliminados teniendo en Los elementos son eliminados teniendo en cuenta:cuenta:

La memoria disponibleLa memoria disponible

PrioridadesPrioridades

Expiración absoluta o relativaExpiración absoluta o relativa

DependenciasDependencias

Page 52: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

CachéCaché

Page 53: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones web

Page 54: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones webVida de una aplicaciónVida de una aplicación

Cada directorio virtual de IIS es una Cada directorio virtual de IIS es una aplicaciónaplicación

Por defecto todas funcionan en el mismo Por defecto todas funcionan en el mismo procesoproceso

Aisladas con Application DomainsAisladas con Application Domains

Eventos de aplicaciónEventos de aplicaciónLocalizados en global.asaxLocalizados en global.asax

Application_Start, Application_EndApplication_Start, Application_End

Session_Start, Session_EndSession_Start, Session_End

BeginRequest, EndRequestBeginRequest, EndRequest

Page 55: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones webPipeline de una peticiónPipeline de una petición

Los módulos permiten Los módulos permiten procesamiento adicional por procesamiento adicional por peticiónpetición

Clases que implememtan IHttpModuleClases que implememtan IHttpModule

Configurables en .configConfigurables en .config

Por defecto Sesión, Caché, Por defecto Sesión, Caché, Autenticación, AutorizaciónAutenticación, Autorización

Finalmente la petición es atendida Finalmente la petición es atendida por un handlerpor un handler

Clases que implementan IHttpHandlerClases que implementan IHttpHandler

Configurables en .configConfigurables en .config

Por defecto .aspx asociado al handler Por defecto .aspx asociado al handler PagePage

HttpRuntimeHttpRuntime

HttpApplicationHttpApplication

ModuleModule

Handler FactoryHandler Factory

HandlerHandler

Page 56: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones webDespliegue de una aplicaciónDespliegue de una aplicación

Despliegue XCOPYDespliegue XCOPYEs posible sobrescribir una aplicación en Es posible sobrescribir una aplicación en calientecaliente

Incluyendo páginas y libreríasIncluyendo páginas y librerías

ASP.NET redirige las peticiones a la nueva ASP.NET redirige las peticiones a la nueva aplicación y concluye las actuales en la aplicación y concluye las actuales en la antiguaantigua

Despliegue Windows InstallerDespliegue Windows InstallerFicheros MSI generados desde Visual StudioFicheros MSI generados desde Visual Studio

Page 57: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones webConfiguraciónConfiguración

4 niveles para configurar4 niveles para configurarServidor, root, web, subdirServidor, root, web, subdir

Ficheros XML Ficheros XML web.configweb.config

ExtensibleExtensibleOpciones de usuario en Opciones de usuario en <appsettings><appsettings>

Nuevas estructuras XMLNuevas estructuras XML

Modificable en calienteModificable en calienteRecarga automática de aplicaciónRecarga automática de aplicación

RootRootDirDir

RootRootDirDir

SubSubDir1Dir1SubSubDir1Dir1

SubSubDir2Dir2SubSubDir2Dir2

Web.ConfigWeb.ConfigWeb.ConfigWeb.Config

Page 58: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Aplicaciones webAplicaciones webConfiguración (II)Configuración (II)

debug="true" para añadir información de depuración en debug="true" para añadir información de depuración en la compilación. la compilación.

debug="true" para añadir información de depuración en debug="true" para añadir información de depuración en la compilación. la compilación.

Habilita página de error con información detallada.Habilita página de error con información detallada.Habilita página de error con información detallada.Habilita página de error con información detallada.

Controla políticas de autorización y autenticación Controla políticas de autorización y autenticación específicas de ASP.NET.específicas de ASP.NET.

Controla políticas de autorización y autenticación Controla políticas de autorización y autenticación específicas de ASP.NET.específicas de ASP.NET.

Habilita la funcionalidad ASP.NET tracing en la aplicación.Habilita la funcionalidad ASP.NET tracing en la aplicación.Habilita la funcionalidad ASP.NET tracing en la aplicación.Habilita la funcionalidad ASP.NET tracing en la aplicación.

Permite la configuración la gestión de estado ASP.NET.Permite la configuración la gestión de estado ASP.NET.Permite la configuración la gestión de estado ASP.NET.Permite la configuración la gestión de estado ASP.NET.

Page 59: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Configuración de trazasConfiguración de trazas

Page 60: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridad

Page 61: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticaciónAutenticación

Proceso de validación de credencialesProceso de validación de credenciales

Dos niveles de seguridadDos niveles de seguridadIIS: configuración en IIS: configuración en la administración IISla administración IIS

ASP.NET: configuración ASP.NET: configuración en web.configen web.config

Page 62: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticación IISAutenticación IIS

MétodoMétodoMétodoMétodo

AnónimoAnónimoAnónimoAnónimo

Nivel de seguridadNivel de seguridadNivel de seguridadNivel de seguridad DescripciónDescripciónDescripciónDescripción

NingunoNingunoNingunoNinguno No se realiza autenticaciónNo se realiza autenticaciónNo se realiza autenticaciónNo se realiza autenticación

BásicaBásicaBásicaBásicaBaja (media con SSL)Baja (media con SSL)Baja (media con SSL)Baja (media con SSL) •Se envía usuario y clave en texto claroSe envía usuario y clave en texto claro

•Debe ser cifrado con SSLDebe ser cifrado con SSL•Soportado por la mayoría de browsersSoportado por la mayoría de browsers

•Se envía usuario y clave en texto claroSe envía usuario y clave en texto claro•Debe ser cifrado con SSLDebe ser cifrado con SSL•Soportado por la mayoría de browsersSoportado por la mayoría de browsers

DigestDigestDigestDigestMediaMediaMediaMedia •Envía hash del passwordEnvía hash del password

•Requiere IE 5+Requiere IE 5+•Requiere Directorio ActivoRequiere Directorio Activo

•Envía hash del passwordEnvía hash del password•Requiere IE 5+Requiere IE 5+•Requiere Directorio ActivoRequiere Directorio Activo

IntegradaIntegradacon Windowscon Windows

IntegradaIntegradacon Windowscon Windows

AltaAltaAltaAlta •Usa NTLM o KerberosUsa NTLM o Kerberos•Pensada para IntranetsPensada para Intranets•No funciona a través de un firewallNo funciona a través de un firewall

•Usa NTLM o KerberosUsa NTLM o Kerberos•Pensada para IntranetsPensada para Intranets•No funciona a través de un firewallNo funciona a través de un firewall

Certificados digitalesCertificados digitalesCertificados digitalesCertificados digitalesAltaAltaAltaAlta •El cliente presenta un certificado X509El cliente presenta un certificado X509

•Requiere despliegue del certificadoRequiere despliegue del certificado•Soportado por la mayoría de browsersSoportado por la mayoría de browsers

•El cliente presenta un certificado X509El cliente presenta un certificado X509•Requiere despliegue del certificadoRequiere despliegue del certificado•Soportado por la mayoría de browsersSoportado por la mayoría de browsers

Page 63: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticación IISAutenticación IIS

ConfiguraciónConfiguraciónConfigurar IIS en el modo elegidoConfigurar IIS en el modo elegido

Utilizar mode = “Windows” en web.configUtilizar mode = “Windows” en web.config

<system.web><system.web><authentication mode=“Windows”/><authentication mode=“Windows”/>

</system.web></system.web>

Opcionalmente utilizar impersonaciónOpcionalmente utilizar impersonación

<identity impersonate=“true”><identity impersonate=“true”>

Page 64: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticación ASP.NETAutenticación ASP.NET

Basada en formularioBasada en formularioPágina web de inicio de sesión Página web de inicio de sesión

Cookie de autorizaciónCookie de autorización

ConfiguraciónConfiguraciónConfigurar IIS como anónimoConfigurar IIS como anónimo

Añadir sección en web.configAñadir sección en web.config

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

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

</system.web></system.web>

Page 65: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticación ASP.NETAutenticación ASP.NET

IISIISIISIIS ASP.NETASP.NETASP.NETASP.NET

No existe cookieNo existe cookieNo existe cookieNo existe cookie

UsuarioUsuario

PasswordPassword

SubmitSubmitSubmitSubmit

CookieCookieCookieCookie

Página Página protegidaprotegida

Página Página protegidaprotegida

Existe cookieExiste cookieExiste cookieExiste cookie

Page 66: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Autenticación Autenticación formulariosformularios

Page 67: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutenticación ASP.NETAutenticación ASP.NET

El cliente hace la El cliente hace la peticiónpetición

Passport.com Passport.com redirige la petición redirige la petición al servidor inicial, al servidor inicial, estableciendo una estableciendo una cookie de cookie de autenticaciónautenticación

El servidor descifra El servidor descifra la cookie de la cookie de passport y accede a passport y accede a la información del la información del usuariousuario

PassportPassportMecanismo de Mecanismo de autenticación autenticación centralizadocentralizado

Requiere SDKRequiere SDK

Requiere clave Requiere clave cifrado (cuenta cifrado (cuenta Passport)Passport)

Page 68: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutorizaciónAutorización

Confirmación de acceso a recursos Confirmación de acceso a recursos por parte de un usuario o rolpor parte de un usuario o rol

Cuatro posibilidadesCuatro posibilidadesDe ficherosDe ficheros

De URLDe URL

DeclarativaDeclarativa

ImperativaImperativa

Page 69: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutorización de ficherosAutorización de ficheros

Establecer ACLs Establecer ACLs directamente en los directamente en los ficherosficheros

Utilizando Windows Utilizando Windows ExplorerExplorer

Sólo válido para Sólo válido para autenticación autenticación WindowsWindows

Page 70: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutorización de URLAutorización de URL

Añadir autorización en web.configAñadir autorización en web.config<location path=“Webform1.aspx”><location path=“Webform1.aspx”> <system.web><system.web> <authorization><authorization> <allow users=“luis, antonio”><allow users=“luis, antonio”> <allow roles=“amigos, administradores”><allow roles=“amigos, administradores”> <deny users='?'/><deny users='?'/> </authorization></authorization> </system.web></system.web></location></location>

ComodinesComodines*: Todos los usuarios*: Todos los usuarios

?: Usuarios anónimos?: Usuarios anónimos

Page 71: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutorización declarativaAutorización declarativa

Permite autorizar a nivel de clase y Permite autorizar a nivel de clase y métodométodo

Mediante atributosMediante atributos[PrincipalPermission(SecurityAction.Demand, Authenticated=true)][PrincipalPermission(SecurityAction.Demand, Authenticated=true)]class Almacen {class Almacen {

[PrincipalPermission(SecurityAction.Demand, Role=“Personal")][PrincipalPermission(SecurityAction.Demand, Role=“Personal")] public int Consultar() { ... }public int Consultar() { ... }

[PrincipalPermission(SecurityAction.Demand, Role="Admins")][PrincipalPermission(SecurityAction.Demand, Role="Admins")] public void Modificar() { ... }public void Modificar() { ... }}}

Page 72: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

SeguridadSeguridadAutorización imperativaAutorización imperativa

Comprobación programáticaComprobación programáticaPara tener un grano aún más finoPara tener un grano aún más fino

Propiedad Propiedad Page.UserPage.User

class CuentaCorriente {class CuentaCorriente {

public int Transferir(decimal cantidad) {public int Transferir(decimal cantidad) { if(cantidad > 1000) {if(cantidad > 1000) { if(User.IsInRole(“administrador”)) {if(User.IsInRole(“administrador”)) { // Transferir// Transferir }} }} }}}}

Page 73: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

AutorizaciónAutorización

Page 74: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Desarrollo web para Desarrollo web para dispositivosdispositivos

Page 75: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Desarrollo web para Desarrollo web para dispositivosdispositivosMobile Web ControlsMobile Web ControlsJuego de controles Juego de controles

ASP.NET pensados para ASP.NET pensados para dispositivos móvilesdispositivos móviles

Misma infraestructura Misma infraestructura ASP.NETASP.NET

100% integrado con Visual 100% integrado con Visual StudioStudio

Page 76: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Desarrollo web para Desarrollo web para dispositivosdispositivosMobile Web Controls (II)Mobile Web Controls (II)Presentación adaptablePresentación adaptable

WML, cHTML, XHTML, HTML, XMLWML, cHTML, XHTML, HTML, XML

Más de 200 navegadores soportadosMás de 200 navegadores soportados

Page 77: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

Mobile Web ControlsMobile Web Controls

Page 78: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.

•Webcast teóricoWebcast teórico•Talleres en ciudadesTalleres en ciudades•Aplicación MSDN VideoAplicación MSDN Video

•Webcast práctica 13 DiciembreWebcast práctica 13 Diciembre•www.DesarrollaConMSDN.comwww.DesarrollaConMSDN.com

•Código de MSDN VideoCódigo de MSDN Video•CalendarioCalendario•TutorialesTutoriales•SeminariosSeminarios•ArtículosArtículos•ForosForos•Descuento 40% librosDescuento 40% libros

•Webcast teóricoWebcast teórico•Talleres en ciudadesTalleres en ciudades•Aplicación MSDN VideoAplicación MSDN Video

•Webcast práctica 13 DiciembreWebcast práctica 13 Diciembre•www.DesarrollaConMSDN.comwww.DesarrollaConMSDN.com

•Código de MSDN VideoCódigo de MSDN Video•CalendarioCalendario•TutorialesTutoriales•SeminariosSeminarios•ArtículosArtículos•ForosForos•Descuento 40% librosDescuento 40% libros

SepSep OctOct NoNovv

DicDic EneEne FebFeb MaMarr

AbrAbr MaMayy

JunJun

Desarrollo Desarrollo webweb

Page 79: Desarrollo web con ASP.NET. Agenda Introducción a ASP.NET Modelo de ejecución Web Forms Trabajo con controles Estado en ASP.NET Aplicaciones web Seguridad.