440 likes | 799 Views
Jorge Oblitas. Consultor para los programas Panorama Box y DCE Soluciones Intranet premiadas en Perú y EE.UU. Creador del curso para la segunda estrella DCE Bajista desde 1984 Aficionado a los Golden Retrievers y Beagles. Consultor en tecnología asociada a la gestión del Conocimiento
E N D
Jorge Oblitas Consultor para los programas Panorama Box y DCE Soluciones Intranet premiadas en Perú y EE.UU. Creador del curso para la segunda estrella DCE Bajista desde 1984 Aficionado a los Golden Retrievers y Beagles Consultor en tecnología asociada a la gestión del Conocimiento Ha sido miembro de los programas Microsoft Regional Director (desde el 2000) Microsoft Partner Advisory Council (2002)
“Webcast Series” • Introducción a las ASP.NET para desarrolladores ASP/PHP • Introducción a las ASP.NET 2.0 para desarrolladores ASP.NET • Creación de aplicaciones Web con acceso a datos usando ASP.NET2.0 • Creando aplicaciones seguras a través del uso de membresía y manejo de roles con Visual Studio 2005 y ASP.NET 2.0 • Usando "Profiles" en ASP.NET 2.0 y localizando aplicaciones. • Extendiendo ASP.NET 2.0 a través del modelo basado en proveedores (provider model)
Anteriores • Diferencias entre el XML y el HTML • ¿Las MasterPages reemplazan a los controles de usuario? • Si ya tengo una página sin masterpage... ¿Cómo le agrego el masterpage?
XML, HTML Jorge jorgeo@icuadrado.com8155555 <negrita>Jorge</negrita><br> <cursiva color=rojo>jorgeo@icuadrado.com</cursiva> 8155555 <Contacto> <Nombre>Jorge</Nombre> <Email:>jorgeo@icuadrado.com</Email> <Telefono> 8155555</Telefono> </Contacto> XML
Introducción a las ASP.NET 2.0 para desarrolladores ASP.NET 1.x Jorge Oblitas Inteligencia e Innovación Microsoft Regional Director
Un vistazo a lo nuevo Data Controls Login Controls Web Parts Otros controlesNuevos Controles Master Pages Temas y Skins Mobility y Localización Compilación Page Framework Membership Manejo deRoles Perfiles Configuración Servicios y APIs Site Maps Monitoreo dela salud OtrosServicios
Qué hay de nuevo en acceso a datos • Data source controls • 2-way data binding Declarativo • Data controls • GridView – Como el Datagrid, sólo que es mejor • DetailsView – Acompañante del GridView • SQL cache dependencies • Relaciona ítems en el caché con entidades de la base de datos • Expresiones data binding simplificadas
Data Binding en ASP.NET 1.x <asp:DataGrid ID="MyDataGrid" RunAt="server" /> ... <script language="C#" runat="server"> void Page_Load (Object sender, EventArgs e) { SqlConnection connection = new SqlConnection ("server=localhost;database=pubs;integrated security=true"); try { connection.Open (); SqlCommand command = new SqlCommand ("select title_id, titles, price from titles"); MyDataGrid.DataSource = command.ExecuteReader (); MyDataGrid.DataBind (); } finally { connection.Close (); } } </script>
Data Binding en ASP.NET 2.0 <asp:SqlDataSource ID="Titles" RunAt="server" ConnectionString="server=localhost;database=pubs;integrated security=true" SelectCommand="select title_id, title, price from titles" /> <asp:DataGrid DataSourceID="Titles" RunAt="server" />
Providers • Nuevo modelo para el almacenamiento y administración del estado. • Hace que el almacenamiento sea adaptable a la media • Usado por muchos servicios ASP.NET • Membership service • Role Management service y más • Los providers incluidos hacen que el almacenamiento del estado en ASP.NET sea bastante flexible • Providers personalizados lo hacen infinitamente flexible
El modelo de providers Controles Login LoginStatus LoginView Otros Login Controls Membership API Membership MembershipUser Membership Providers AccessMembershipProvider SqlMembershipProvider otros Membership Providers Membership Data Access SQL Server Otros Data Stores
Configuración • Herramientas administrativas • ASP.NET MMC snap-in • Web Site Administration Tool (Webadmin.axd) • Configuration API • Acceso de Lectura/escritura a los configuration settings • Secciones de configuración personalizadas simplificadas • Instrumentación • Perf counters, health monitoring, y más
Qué hay de nuevo en UIs • Master pages • “Herencia Visual" para las páginas Web • Se aplica de forma declarativa o programática • Temas y skins • Theme controls, páginas, y sitios enteros • Se aplica declarativa y programáticamente • Nuevos controles (más de 50 en total) • Menúes, TreeViews, Wizards, y más
La solución ASP.NET 1.x User Control UserControl Contenido
User Control User Control User COntrol User COntrol Herencia Visual Contenido Mi_Pagina.aspx
Qué hay de nuevo en Seguridad • Membership service • Servicio para administrar usuarios y credenciales. • Basado en providers para un almacenamiento de datos flexible. • Login controls • Controls para el logueo, creación de nuevos usuarios, recuperación de contraseñas y más. • Role Management service • Combina la autenticación por formularios con autorización basada en roles sin necesidad de codificar.
El Control Login <html> <body> <form runat="server"> <asp:Login RunAt="server" /> </form> </body> </html>
Perfiles • Guarda datos por usuario de forma persistente. • Acceso Strongly typed (a diferencia del session state) • Búsqueda en demanda (a diferencia del session state) • De vida larga (a diferencia del session state) • Soprota usuarios autenticados y anónimos • Accedidoa través de derivativos de HttpProfileBase (HttpProfile) dinámicamente compilados. • Basado en providers para un almacenamiento de datos flexible.
Definiendo un perfil <profile enabled="true" defaultProvider="QuickStartProfileSqlProvider" inherits="UserDefinedProfileClass"> <providers> <add name=“AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName=“LocalSqlServer" applicationName=“WCS2"/> </providers> <properties> <add name=“Nombre"/> <add name=“Avatar" type=“String"/> <group name=“DetallesUsuario"> <add name=“RazaPreferida" type=“String"/> </group> </properties> </profile> <anonymousIdentification enabled="true" cookieName=".ASPXANONYMOUS" cookieTimeout="43200" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" cookieless="UseCookies"/>
Navegación en el Sitio Web • Las UIs de navegación son tediosas de implementar. • Especialmente si están basadas en script del lado del cliente. • Nuevos controles simplifican la navegación en el Sitio. • TreeView y Menu - Navigation UI • SiteMapDataSource - XML site maps • SiteMapPath – controles “migas de pan" • API pública provee la base para los controles • Basada en providers para tener flexibilidad
Qué hay de nuevo en Localización • Manejo de Auto-culture • Mapeo Declarativo de los Lenguajes aceptados para las propiedades relevantes del thread • Manejo de recursos simplificado • Mapeo declarativo de las propiedades de lso controles a los recursos usando expresiones <%$ … %> • Carga de recursos programable “fuertemente tipeada” (Strongly typed) • <asp:localize runat="server"> y más
Qué hay de nuevo en compilación • Autocompilar diferentes tipos de archivos • Archivos CS, VB, RESX, y por el estilo • Sólo hay que poner los archivos en los directorios especiales • Extensible con custom build providers • Nuevo modelo code-behind (code-behind 2.0) • Arregla las fragilidades de la versión 1 • Descansa sobre el soporte a clases parciales en los compiladores • Precompilación e implementación sin código fuente
Compilación dinámica vroot CS VB App_Code Los archivos se autocompilan en el primer acceso WSDL XSD App_LocalResources RESX RESOURCE
Expresiones $ • Mecanismo declarativo para cargar recursos, cadenas de conexión, y más ASPX <asp:SqlDataSource ID="Titles" RunAt="server" ConnectionString="<%$ ConnectionStrings:Pubs %>" SelectCommand="select title_id, title, price from titles" /> Web.config <configuration> <connectionStrings> <add name="Pubs" connectionString="server=localhost;database=pubs;..." /> </connectionStrings> </configuration>
Expression Builders • Componentes que evaluan las expresiones $ • La sección de configuración <expressionBuilders> mapea los prefijos a hacia los expression builders <compilation ... > <expressionBuilders> <add expressionPrefix="Resources" type="System.Web.Compilation.ResourceExpressionBuilder" /> <add expressionPrefix="ConnectionStrings" type="System.Web.Compilation.ConnectionStringsExpressionBuilder" /> <add expressionPrefix="AppSettings" type="System.Web.Compilation.AppSettingsExpressionBuilder" /> </expressionBuilders> </compilation>
Cross-Page Posting • Las páginas pueden postear hacia otras páginas • Propiedades relevantes • control.PostBackUrl – Identifica la página objetivo del postback • Page.PreviousPage – Retorna la referencia a la pagina que originó el cross-page postback • PreviousPage.IsCrossPagePostBack – Revela si ha ocurrido o no un cross-page postback • La directiva @ PreviousPageType da acceso fuertemente tipeado a la página previa.
Haciendo Post Back a otra página <html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body> </html>
Callbacks desde el cliente • "Lightweight" postbacks • El Client-side callback manager transmite request XML-HTTP asincrónicos al servidor • El servidor recibe y procesa el request pero no vuelve a pintar la página • El callback manager recibe la respuesta y notifica al cliente a través del callback registrado • Requiere Internet Explorer 5.0 o superior • Una gran manera de mejorar la respuesta de la Interface de Usuario
Cómo trabajan los Client Callbacks Cliente Servidor 1 2 Cliente Callback Manager Página El Client inicia el callback llamando a la función que retorna el GetCallback-EventReference El Callback manager lanza el XML-HTTP asincrónico al servidor 3 EL evento RaiseCall-backEvent method de la página es llamado 5 4 El cliente recibe la notificacion de que el llamado ha sido completadoy maneja el resultado El Callback manager recibe la notificación de que el llamdo ha sido completado
Quien tiene el foco? • en ASP.NET 1.x, el script cliente se necesita para poner el foco en un control • En ASP.NET 2.0, usamos Page.SetFocus <asp:TextBox ID="UserName" RunAt="server" /> . . . <script language="C#" runat="server"> void Page_Load (Object sender, EventArgs e) { SetFocus ("UserName"); } </script>
Panel.DefaultButton • Designa el botón a ser "clickeado" cuando se presiona ENTER y el foco está en el panel • Es un Work-around para el hecho de que las ASP.NET limitan las páginas a un solo runat="server" en el FORM
Web Parts • Framework para la construcción de aplicaciones al estilo portal • Al estilo SharePoint Portal Server • System.Web.UI.WebControls.WebParts • Interface de usuario Rica con mínimo código • Editr la composición de la página usando drag-and-drop • Editar la apariencia, la conducta y más • Personalización “facilísima” • Intercomunicación ("conexiones")