Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET...

53
Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0

Transcript of Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET...

Page 1: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezLogic StudioDirector Regional de Microsoft para

Ecuador

De ASP.NET 1.1 a ASP.NET 2.0De ASP.NET 1.1 a ASP.NET 2.0

Page 2: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Un vistazo a las nuevas característicasUn vistazo a las nuevas características

Controles dedatos

Controles dedatos

Controles delogin

Controles delogin Partes webPartes web Otros controles

nuevosOtros controles

nuevos

Páginas maestrasPáginas maestras Temasy Pieles

Temasy Pieles

Mobilidad ylocalizaciónMobilidad ylocalización CompilaciónCompilación

MembresíaMembresía Administraciónde roles

Administraciónde roles PerfilesPerfiles ConfiguraciónConfiguración

Mapas del sitioMapas del sitio Monitoreode salud

Monitoreode salud Otros serviciosOtros servicios

Con

trole

sFr

am

ew

ork

de P

ág

ina

Serv

icio

sy A

PIs

Page 3: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en el acceso a datosNovedades en el acceso a datos

Controles “Data source”Data binding declarativo bidireccional

Controles de datosGridView – Como el DataGrid, pero mejoradoDetailsView – El compañero de GridView

Dependencias de cache SQLAtar ítems de cache a entidades de base de datos

Expresiones de data binding simplificadas

Page 4: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Data binding de ASP.NET 1.xData binding de 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>

Page 5: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Data binding de ASP.NET 2.0Data binding de 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" />

Page 6: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Data binding declarativoData binding declarativo

Page 7: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en la interfaz de usuarioNovedades en la interfaz de usuarioPáginas maestras

“Herencia visual" para páginas WebSe aplica declarativa o programáticamente

Temas y pielesPoner temas a controles, páginas o sitios enterosSe aplica declarativa o programáticamente

Nuevos controles (más de 50 en total)Menus, TreeViews, Wizards y más

Page 8: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Como poner tema a una páginaComo poner tema a una página<%@ Page Theme="BasicBlue">

Antes Después

Page 9: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Páginas maestrasPáginas maestras

Page 10: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en seguridadNovedades en seguridad

Servicio de membresíaServicio para administrar usuarios y credencialesBasado en proveedores para tener almacenamiento flexible

Controles de loginControles para logging, creación de nuevos usuarios, recuperación de claves y más

Servicio de administración de rolesCombinación de autenticación con formas y autorización basada en roles ¡sin escribir código!

Page 11: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Validación de loginsValidación de loginsif (Membership.ValidateUser (UserName.Text, Password.Text)) RedirectFromLoginPage (UserName.Text, RememberMe.Checked);

Page 12: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

El control de loginEl control de login<html> <body> <form runat="server"> <asp:Login RunAt="server" /> </form> </body></html>

Page 13: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Membresía y loginsMembresía y logins

Page 14: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

PerfilesPerfiles

Almacenar datos personales persistentementeAcceso con tipos fuertes (a diferencia del estado en la sesión)Búsqueda por demanda (a diferencia del estado en la sesión)Persistente (a diferencia del estado en la sesión)Soporta usuarios anónimos y autenticados

Acceso a través de derivados de HttpProfileBase compilados dinámicamente (HttpProfile)Basado en proveedores lo que permite almacenamiento flexible

Page 15: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Definición de un perfilDefinición de un perfil<configuration> <system.web> <profile> <properties> <add name="ScreenName" /> <add name="Posts" type="System.Int32" defaultValue="0" /> <add name="LastPost" type="System.DateTime" /> </properties> </profile> </system.web></configuration>

Page 16: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Uso de un perfilUso de un perfil// Increment the current user's post countProfile.Posts = Profile.Posts + 1;

// Update the current user's last post dateProfile.LastPost = DateTime.Now;

Page 17: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Persistencia de datos con perfilesPersistencia de datos con perfiles

Page 18: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Navegación del sitioNavegación del sitio

Las IU de navegación son tediosas de implementarEspecialmente si se basan en scripts en el cliente

Nuevos controles simplifican la navegación del sitio

TreeView y Menu – IU de navigaciónSiteMapDataSource – Mapas XML del sitioSiteMapPath – Control de “rastro de migas"

Una API pública provee el fundamento para los controlesBasado en proveedores para mayor flexibilidad

Page 19: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Navegación en el sitio dirigida por datosNavegación en el sitio dirigida por datos

Page 20: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

ProveedoresProveedores

Nuevo modelo para almacenar y administrar el estado

Hace al almacenamiento adaptable a diferentes medios

Usado por muchos servicios clave de ASP.NET

Servicio de membresíaServicio de administración de roles y más

Los proveedores pre-construidos hacen el almacenamiento del estado de ASP.NET muy flexibleLos proveedores personalizados lo hacen infinitamente flexible

Page 21: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

El modelo de proveedoresEl modelo de proveedores

API de membresía

Datos demembresía

Access Otros almacenesde datos

Controles LoginLogin LoginStatusLoginStatus LoginViewLoginView

AccessMembershipProviderAccessMembershipProvider Otros proveedoresde membresía

Otros proveedoresde membresía

Proveedores de membresía

MembershipMembership MembershipUserMembershipUser

SqlMembershipProviderSqlMembershipProvider

SQL Server

Otros controlesde login

Otros controlesde login

Page 22: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

ConfiguraciónConfiguración

Herramientas administrativasSnap-in de MMC para ASP.NETHerramienta de administración del sitio web (Webadmin.axd)

API de configuraciónAcceso de lectura/escritura a los settings de configuraciónSecciones personalizadas de configuración más simples

InstrumentaciónContadores de rendimiento, monitoreo de salud y más

Page 23: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Herramienta de administración del sitio webHerramienta de administración del sitio web

Page 24: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Partes webPartes web

Framework para la construcción de aplicaciones estilo portal

Sigue el patrón de SharePoint Portal ServerSystem.Web.UI.WebControls.WebParts

IUs ricas con un mínimo de códigoEdición de la distribución de la página usando arrastrar-y-soltarEdición de la apariencia, el comportamiento y más

Personalización sin problemasIntercomunicación (“conexiones”)

Page 25: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Partes webPartes web

Page 26: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en movilidadNovedades en movilidad

Arquitectura de controles unificadaLos adaptadores permiten a las páginas y los controles presentar las etiquetas en diferentes tipos de dispositivosAdaptadores WML provistos por terceros

Filtros de dispositivos

<asp:Label Text="Hello, world" RunAt="server" Nokia:Text="Hello, Nokia" Up:Text="Hello, OpenWave" />

Navegadores Nokia

Navegadores OpenWave

Page 27: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en localizaciónNovedades en localización

Manejo de Auto-culturaMapeo declarativo de las cabeceras Accept-Language a las propiedades relevantes de la hebra

Manejo de recursos simplificadoMapeo declarativo de propiedades de los controles a recursos usando expresiones <%$ … %>Carga de recursos programática usando tipos fuertes

<asp:localize runat="server"> y más

Page 28: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Novedades en compilaciónNovedades en compilación

Autocompilación de cualquier recursoArchivos CS, archivos VB, archivos RESX, etc.Basta poner los archivos en directorios especialesExtensible mediante proveedores personalizados

Nuevo modelo de código-detrás (code-behind 2.0)

Corrige fragilidades de la versión 1Basado en el soporte de clases parciales de los compiladores

Precompilación e instalación sin el código fuente

Page 29: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Compilación dinámicaCompilación dinámica

vroot

Code

Resources

CS

VB

WSDL

XSD

RESX

RESOURCE

Archivos auto-compilados en el primer acceso

Page 30: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Proveedores de construcciónProveedores de construcción

<compilation ... > <buildProviders> <add extension=".resx" appliesTo="Code,Resources" type="System.Web.Compilation.ResXBuildProvider" /> <add extension=".wsdl" appliesTo="Code" type="System.Web.Compilation.WsdlBuildProvider" /> <add extension=".xsd" appliesTo="Code" type="System.Web.Compilation.XsdBuildProvider" /> ... </buildProviders></compilation>

Componentes que autocompilan archivosLa sección de configuración<buildProviders> mapea tipos de archivos y directorios a proveedores de construcción

Page 31: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Code-Behind 2.0Code-Behind 2.0

<%@ Page CompileWith="Hello.aspx.cs" ClassName="MyPage_aspx" %>

<html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" OnClick="OnTest" RunAt="server" /> <asp:Label ID="Output" RunAt="server" /> </form> </body></html>

Hello.aspx

Page 32: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Code-Behind 2.0, Cont.Code-Behind 2.0, Cont.

using System;

partial class MyPage_aspx{ void OnTest (Object sender, EventArgs e) { Output.Text = "Hello, " + Input.Text; }}

Hello.aspx.cs

Page 33: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

PrecompilaciónPrecompilación

Precompile.axd precompila sitios in-situ para evitar las demoras del primer acceso

Page 34: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Instalación sin el código fuenteInstalación sin el código fuente

Aspnet_compiler.exe precompila sitios y los instala sin el código fuente

Page 35: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Compilación dinámicaCompilación dinámica

Page 36: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Expresiones $Expresiones $

<asp:SqlDataSource ID="Titles" RunAt="server" ConnectionString="<%$ ConnectionStrings:Pubs %>" SelectCommand="select title_id, title, price from titles" />

<configuration> <connectionStrings> <add name="Pubs" connectionString="server=localhost;database=pubs;..." /> </connectionStrings></configuration>

ASPX

Web.config

Mecanismo declarativo para cargar recursos, cadenas de conexión y más

Page 37: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Constructores de expresionesConstructores de expresiones

Componentes que evalúan expresiones $La sección de configuración <expressionBuilders> mapea prefijos a constructores de expresiones

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

Page 38: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Constructores de expresiones personalizadosConstructores de expresiones personalizados

Page 39: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Posting entre páginasPosting entre páginas

Las páginas pueden ahora hacer postback a otras páginasPropiedades relevantes:

control.PostBackUrl – Identifica al objetivo del postbackPage.PreviousPage – Devuelve una referencia a la página que originó el postback entre páginasPreviousPage.IsCrossPagePostBack – Indica si ocurrió un postback entre páginas

La directiva @ PreviousPageType provee acceso de tipo fuerte a la página anterior

Page 40: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Post Back a una página diferentePost Back a una página diferente<html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body></html>

Page 41: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Referencia a un control en una página anterior (con tipos débiles)

Referencia a un control en una página anterior (con tipos débiles)<html> <body> <asp:Label ID="Output" RunAt="server" /> </body></html>

<script language="C#" runat="server">void Page_Load (Object sender, EventArgs e){ if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { TextBox input = (TextBox) PreviousPage.FindControl ("Input"); Output.Text = "Hello, " + input.Text; }}</script>

Page 42: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Referencia a un control en una página anterior (con tipos fuertes)

Referencia a un control en una página anterior (con tipos fuertes)<%@ PreviousPageType VirtualPath="~/PageOne.aspx" %>

<html> <body> <asp:Label ID="Output" RunAt="server" /> </body></html>

<script language="C#" runat="server">void Page_Load (Object sender, EventArgs e){ if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) Output.Text = "Hello, " + PreviousPage.InputBox.Text;}</script>

Propiedad pública envuelve al TextBox

Page 43: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Postbacks entre páginasPostbacks entre páginas

Page 44: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Grupos de validaciónGrupos de validación

Los controles de validación ahora se pueden agrupar usando la nueva propiedad ValidationGroup

Implementada por los controles de validaciónTambién implementada por los controles Button, LinkButton e ImageButton

Permite que la página haga post back cuando los validadores en el grupo objetivo son satisfechosCorrige una deficiencia en ASP.NET 1.x

Page 45: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Grupos de validaciónGrupos de validación

Page 46: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Callbacks de clienteCallbacks de cliente

Postbacks “livianos”El administrador de callback de cliente transmite solicitudes XML-HTTP asincrónicas al servidorEl servidor recibe y procesa la solicitud, pero no vuelve a presentar la páginaEl administrador de callback recibe la respuesta y notifica al cliente vía el callback registrado

Requiere Internet Explorer 5.0 o superiorGran manera de mejorar el nivel de respuesta de la IU

Page 47: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Cómo funcionan los callbacks de clienteCómo funcionan los callbacks de cliente

Cliente CallbackManager

PageEl cliente inicia un callback llamando a la función devuelta por GetCallback-EventReference

El administrador de callback lanza una llamada XML-HTTP asíncrona al servidor

El administrador de callback es notificado de que la llamada ha sido completada

El cliente es notificado de que la llamada ha sido completada y se le entrega el resultado

ClienteServidor

El métodoRaiseCall-backEvent de la página es llamado

11 22

33

4455

Page 48: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio

Callbacks de clienteCallbacks de cliente

Page 49: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

¿Quién tiene el foco?¿Quién tiene el foco?

En ASP.NET 1.x, se necesitaba un script de cliente para asignar el foco a un controlEn ASP.NET 2.0, se usa Page.SetFocus

<asp:TextBox ID="UserName" RunAt="server" /> . . .<script language="C#" runat="server">void Page_Load (Object sender, EventArgs e){ SetFocus ("UserName");}</script>

Page 50: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Panel.DefaultButtonPanel.DefaultButton

Designa al botón que hará clic cuando se presione Intro y el foco está en el panelLe da la vuelta al hecho de que ASP.NET limita las páginas a un solo <form> runat="server"

<asp:Panel DefaultButton="Button1" RunAt="server"> ... <asp:Button ID="Button1" ... /></asp:Panel><asp:Panel DefaultButton="Button2" RunAt="server"> ... <asp:Button ID="Button2" ... /></asp:Panel>

Page 51: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Mapeo de URLMapeo de URL

Mapea URLs virtuales a URLs físicosBueno para la transformación declarativa de páginas físicas en múltiples páginas lógicas

<urlMappings enabled="true"> <add url="~/Home.aspx" mappedUrl="~/default.aspx?tabindex=0" /> <add url="~/Forums.aspx" mappedUrl="~/default.aspx?tabindex=1" /> <add url="~/Faq.aspx" mappedUrl="~/default.aspx?tabindex=2" /></urlMappings>

URL virtual

URL físico

Page 52: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.

Machine.configMachine.config

Las configuración por omisión están “quemadas” en el sistema

Reduce el tamaño de Machine.configMejora el rendimiento de inicio de la aplicación

Nuevos archivos relacionados con Machine.config:Machine.config.defaults – Documenta los valores por omisión quemados en el runtimeMachine.config.comments – Documenta la sintaxis de los elementos de configuración, muchos de los cuales son nuevosEn el mismo directorio que Machine.config

Page 53: Edgar Sánchez Logic Studio Director Regional de Microsoft para Ecuador De ASP.NET 1.1 a ASP.NET 2.0.