1 / 79

Desarrollo web con ASP.NET

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 dispositivos. Introducción a ASP.NET. Introducción a ASP.NET Historia del desarrollo web. HTML (1991)

quana
Download Presentation

Desarrollo web con ASP.NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desarrollo web con ASP.NET

  2. 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 dispositivos

  3. Introducción a ASP.NET

  4. Introducción a ASP.NETHistoria del desarrollo web • HTML (1991) • Páginas estáticas orientadas al contenido • CGI (1993) • Ejecutables que generan HTML dinámicamente • Versión mejorada: ISAPI • ASP (1996), PHP (1997), JSP (1999) • Páginas HTML que incluyen código script dinámico

  5. VB 6 Introducción a ASP.NETDiferencias con desarrollo Windows Private Sub Command1_Click() If List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.Text Else Label1.Caption = "" End If End Sub

  6. ASP Introducción a ASP.NETDiferencias con desarrollo Windows <html> <%@ Language=VBScript %> <% nombres = array("Antonio", "Jose", "Alberto", "Luis", "Benito") %> <body> <p>Seleccione su nombre:</p> <form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"> <% for i = 0 to UBound(nombres) %> <option <% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> > <%=nombres(i) %></option> <% next %> </select><br><br> <input type="submit" value="Di hola"></p> </form> <% if Request.Form("nombre") <> "" then %> <p>Hola, <%=Request.Form("nombre") %></p> <% end if %> </body> </html>

  7. Sin estado Diseño PeticiónRespuesta ComposiciónHTML Eventos Propiedades Paso de parámetros Estado Lógica Introducción a ASP.NETDiferencias con desarrollo Windows <html> <%@ Language=VBScript %> <% nombres = array("Antonio", "Jose", "Alberto", "Luis", "Benito") %> <body> <p>Seleccione su nombre:</p> <form method="POST" action="HolaMundo.asp"> <p><select name="nombre" size="5"> <% for i = 0 to UBound(nombres) %> <option <% if Request.Form("nombre") = nombres(i) then %> selected <% end if %> > <%=nombres(i) %></option> <% next %> </select><br><br> <input type="submit" value="Di hola"></p> </form> <% if Request.Form("nombre") <> "" then %> <p>Hola, <%=Request.Form("nombre") %></p> <% end if %> </body> </html> Private Sub Command1_Click() If List1.SelCount > 0 Then Label1.Caption = "Hola, " & List1.Text Else Label1.Caption = "" End If End Sub

  8. Introducción a ASP.NET¿Qué es ASP.NET? • ASP.NET permite generar aplicaciones web con el paradigma de Windows • Diseño + lógica • Componentes gráficos • Eventos • Propiedades • Estado • Construido sobre .NET

  9. Introducción a ASP.NET¿Qué es .NET? VB C++ C# JScript … Visual Studio.NET Common Language Specification ASP.NET: Web Services and Web Forms WindowsForms ADO.NET, XML, Enterprise Services Base Class Library Common Language Runtime

  10. Modelo de ejecución

  11. .ASPX, .ASCX, .ASMX Modelo de ejecuciónArquitectura con IIS 5 INETINFO.exe ASPNET_WP.exe Aspnet_wp.exe HTTPHandlers ISAPI ASP.NET ASPX ASMX CLR App Domain CLR App Domain HTTPModules Auth Sesión Caché Filtros ISAPI CLR App Domain TCP/IP

  12. .ASPX, .ASCX, .ASMX Modelo de ejecuciónArquitectura con IIS 6 W3WP.exe ISAPI ASP.NET Aspnet_wp.exe HTTPHandlers HTTPModules Filtros ISAPI HTTP.SYS

  13. Test.aspx ¿test.aspx compilada? Procesar GET test.aspx GET test.aspx Leer Generar ISAPI ASP.NET Test.cs Instanciar Respuesta HTML Clase compilada Compilar Respuesta HTML Modelo de ejecuciónCompilación dinámica

  14. Compilación dinámica

  15. Modelo de ejecuciónEl código está detrás • Separación en dos ficheros físicos • Código por detrás de la página (“code-behind”) • Código en cualquier lenguaje .NET soportado ASP ASP .NET <tags> <tags> código código test.aspx.cs test.asp test.aspx

  16. Generar Compilar Modelo de ejecuciónCode-behind Test.cs Test.aspx Test_aspx Deriva de… TestClass.cs Compilar TestClass (Opcional)

  17. Code behind

  18. Web Forms

  19. Web Forms¿Qué son? • Formularios semejantes a Windows pero en Web • Separación lógica – diseño • Componentes gráficos • Estado • Eventos • Propiedades

  20. Web FormsControles de servidor • Componentes que encapsulan la generación de HTML • Semejantes a los controles de Windows • Pleno soporte desde Visual Studio • Paleta de componentes • Layout • Diseñadores de propiedades • Asistentes

  21. Controles de servidor

  22. Web FormsPropiedades de controles • Los controles tienen propiedades • Editables en modo diseño • También accesibles desde código • A partir del llamado árbol de controles Test.aspx HtmlLiteral ListBox HtmlLiteral <html> <body> <select> … </select> </body> </html>

  23. Web FormsEstado • Los controles de servidor mantienen sus propiedades • Dos mecanismos • Procesamiento automático de variables del post • Viewstate: variable de formulario oculta • Cuidado con el tamaño, deshabilitar si no se utiliza

  24. Web FormsEventos de servidor • Los controles pueden lanzar eventos • Ya sean HtmlControl o WebControl • Load, Click, TextChange, SelectedItemChange… • Posibilidad de procesamiento: • En servidor • En cliente • Encolados hasta siguiente postback • Con todo esto cambia el paradigma de desarrollo • De petición-respuesta a event-driven

  25. Desarrollo con eventos

  26. Trabajo con controles

  27. Trabajo con controlesControles HTML • Todos los elementos HTML tienen un control asociado • Sólo hay que marcarlo con runat=“server” • Sólo tienen sentido si son dinámicos o queremos responder a un evento • En caso contrario utilizar literales

  28. Trabajo con controlesControles HTML (II) System.Object System.Web.UI.Control HtmlControl <img> HtmlContainerControl HtmlImage HtmlInputControl HtmlForm <form> HtmlInputFile <input type=file> HtmlGenericControl <span>, <div>, … HtmlSelect HtmlInputHidden <input type=hidden> <select> HtmlInputImage <input type=image> HtmlTable <table> HtmlInputRadioButton <input type=radio> HtmlTableCell <td>, <th> HtmlInputText <input type=text> HtmlTableRow <tr> HtmlInputButton <input type=button> HtmlTextArea <textarea> HtmlInputCheckBox <input type=checkbox> HtmlAnchor <a> <button> HtmlButton

  29. Trabajo con controlesWebControls • Nuevo conjunto de controles con propiedades consistentes • Ej. Misma propiedad BackColor en table y span • Controles complejos • Ej. Calendar, DataGrid • Se adaptan al browser

  30. Trabajo con controlesWebControls (II) System.Object System.Web.UI.Control Xml Repeater WebControl ListControl AdRotator BaseDataList RadioButtonList DataGrid CheckBoxList DropDownList DataList Button ListBox Calendar Panel CheckBox Table RadioButton Image HyperLink ImageButton TextBox Label

  31. Trabajo con controlesWebControls (III) Calendar ImageButton Image DataList AdRotator DataGrid

  32. Adaptación al browser

  33. Trabajo con controlesControles Internet Explorer • Controles extendidos complejos DHTML • Descargable de forma separada Toolbar TreeView TabStrip MultiPage

  34. Trabajo con controlesControles de terceros • Cientos de nuevos controles en http://www.asp.net/ControlGallery

  35. Trabajo con controlesDesarrollo de controles • WebControls • Derivar de System.Web.UI.Control • Añadir propiedades, eventos, métodos • Sobrescribir Render() • Diseñadores, adaptación, Intellisense… • Controles de usuario • Forma sencilla de crear controles • Composición de controles reutilizables • Lógica encapsulada en el control

  36. Controles de usuario

  37. Trabajo con controlesEnlace a datos • Todo es enlazable • Múltiples mecanismos • En línea con <%# Expresión %> • Utilizando propiedad DataSource del control • Utilizando colección DataBindings del control • Para efectuar el enlace llamar a DataBind()

  38. Enlace a datos

  39. Trabajo con controlesPlantillas (templates) • Los controles pueden ser personalizados con sus propiedades o usando hojas CSS • Colores, bordes, letra, etc. • Semejante a Windows 9x / NT / 2000 • Las plantillas permiten definir layouts • Modificación de porciones del interfaz • Semejante a Windows XP / 2003 • Muchos controles exponen plantillas que son personalizables • Ej. Cabeceras, celdas, elemento de lista.

  40. Templates

  41. Trabajo con controlesControles de validación • Validan la entrada de datos del usuario • Reglas definidas de forma declarativa • Campo requerido • Comparaciones, rangos • Expresiones regulares • Personalizadas • Se ejecutan transparentemente en cliente y servidor • Evita roundtrips

  42. Validación

  43. Estado en ASP.NET

  44. Estado en ASP.NETSesión • Estado entre peticiones de un mismo cliente • Dos tipos • Mediante cookie: generada automáticamente • ASP.NET_SessionID • Cookieless: almacenada en la URL • http://server/site/(uqwfp455t2qav155)/default.aspx • Accesible mediante Page.Session • Diccionario clave / valor

  45. Estado en ASP.NETSesión (II) • El estado de la sesión puede almacenarse: • In-process, en el proceso de ASP.NET • Out-of-process, en un servidor de estado ASP.NET • Out-of-process, en una base de datos SQL Server • In-process más óptimo • Out-of-process fiabilidad y escalabilidad • Sobrevive a caídas • Estado compartido entre máquinas de una granja

  46. Estado en ASP.NETViewstate • El Viewstate puede utilizarse como mecanismo genérico de estado • Estado entre una petición y la siguiente • Características • Muy escalable • Uso de ancho de banda • Útil para datos de pequeña longitud ViewState["color"] = “rojo"; strColor =(string)ViewState["color"];

  47. Estado en ASP.NETEstado de aplicación • Estado compartido entre todos los clientes • Accesible mediante Page.Application • ¡Cuidado con la concurrencia! • Application.Lock antes de actualizar • Application.Unlock después de actualizar • ¡Cuidado con el rendimiento! • Los bloqueos pueden ralentizar • No se comparte entre distintos servidores

  48. Sesión, viewstate y estado de aplicación

  49. Estado en ASP.NETCaché • Caché de salida (output caching) • Permite reutilizar el resultado de una página entre peticiones • Enorme ganancia de rendimiento: páginas cacheadas tan rápidas como las estáticas • También para controles de usuario • Se cachean las porciones de página que no cambian

  50. Estado en ASP.NETCaché (II) <%@ OutputCache VaryByParam=“XXX“ VaryByHeader=“XXX” VaryByCustom=“XXX” VaryByProperty=“XXX” Duration=“XX" %> • VaryByParam • Variar por el parámetro especificado • VaryByHeader • Variar por cabecera (ej. User-agent, lenguaje) • VaryByCustom • Rutina personalizada • VaryByProperty • Variar por propiedad del control • Duration • Duración de caché

More Related