Title: Edgar Snchez
1De ASP.NET 1.1 a ASP.NET 2.0
- Edgar Sánchez
- Logic Studio
- Director Regional de Microsoft para Ecuador
2Un vistazo a las nuevas características
Controles dedatos
Controles delogin
Partes web
Otros controles nuevos
Controles
Páginas maestras
Temas y Pieles
Mobilidad ylocalización
Compilación
Framework de Página
Membresía
Administraciónde roles
Perfiles
Configuración
Servicios y APIs
Mapas del sitio
Monitoreode salud
Otros servicios
3Novedades en el acceso a datos
- Controles Data source
- Data binding declarativo bidireccional
- Controles de datos
- GridView Como el DataGrid, pero mejorado
- DetailsView El compañero de GridView
- Dependencias de cache SQL
- Atar ítems de cache a entidades de base de datos
- Expresiones de data binding simplificadas
4Data binding de ASP.NET 1.x
ltaspDataGrid ID"MyDataGrid" RunAt"server" /gt
... ltscript language"C" runat"server"gt void
Page_Load (Object sender, EventArgs e)
SqlConnection connection new SqlConnection
("serverlocalhostdatabasepubsintegrated
securitytrue") try
connection.Open () SqlCommand command
new SqlCommand ("select title_id,
titles, price from titles")
MyDataGrid.DataSource command.ExecuteReader
() MyDataGrid.DataBind ()
finally connection.Close ()
lt/scriptgt
5Data binding de ASP.NET 2.0
ltaspSqlDataSource ID"Titles" RunAt"server"
ConnectionString"serverlocalhostdatabasepubsi
ntegrated securitytrue" SelectCommand"select
title_id, title, price from titles"
/gt ltaspDataGrid DataSourceID"Titles"
RunAt"server" /gt
6Data binding declarativo
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
7Novedades en la interfaz de usuario
- Páginas maestras
- Herencia visual" para páginas Web
- Se aplica declarativa o programáticamente
- Temas y pieles
- Poner temas a controles, páginas o sitios enteros
- Se aplica declarativa o programáticamente
- Nuevos controles (más de 50 en total)
- Menus, TreeViews, Wizards y más
8Como poner tema a una página
lt_at_ Page Theme"BasicBlue"gt
Antes
Después
9Páginas maestras
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
10Novedades en seguridad
- Servicio de membresía
- Servicio para administrar usuarios y credenciales
- Basado en proveedores para tener almacenamiento
flexible - Controles de login
- Controles para logging, creación de nuevos
usuarios, recuperación de claves y más - Servicio de administración de roles
- Combinación de autenticación con formas y
autorización basada en roles sin escribir código!
11Validación de logins
if (Membership.ValidateUser (UserName.Text,
Password.Text)) RedirectFromLoginPage
(UserName.Text, RememberMe.Checked)
12El control de login
lthtmlgt ltbodygt ltform runat"server"gt
ltaspLogin RunAt"server" /gt lt/formgt
lt/bodygt lt/htmlgt
13Membresía y logins
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
14Perfiles
- Almacenar datos personales persistentemente
- Acceso 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
15Definición de un perfil
ltconfigurationgt ltsystem.webgt ltprofilegt
ltpropertiesgt ltadd name"ScreenName" /gt
ltadd name"Posts" type"System.Int32"
defaultValue"0" /gt ltadd name"LastPost"
type"System.DateTime" /gt lt/propertiesgt
lt/profilegt lt/system.webgt lt/configurationgt
16Uso de un perfil
// Increment the current user's post
count Profile.Posts Profile.Posts 1 //
Update the current user's last post
date Profile.LastPost DateTime.Now
17Persistencia de datos con perfiles
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
18Navegación del sitio
- Las IU de navegación son tediosas de implementar
- Especialmente si se basan en scripts en el
cliente - Nuevos controles simplifican la navegación del
sitio - TreeView y Menu IU de navigación
- SiteMapDataSource Mapas XML del sitio
- SiteMapPath Control de rastro de migas"
- Una API pública provee el fundamento para los
controles - Basado en proveedores para mayor flexibilidad
19Navegación en el sitio dirigida por datos
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
20Proveedores
- 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ía
- Servicio de administración de roles y más
- Los proveedores pre-construidos hacen el
almacenamiento del estado de ASP.NET muy flexible - Los proveedores personalizados lo hacen
infinitamente flexible
21El modelo de proveedores
Controles
Login
LoginStatus
LoginView
Otros controlesde login
API de membresía
Membership
MembershipUser
Proveedores de membresía
AccessMembershipProvider
Otros proveedoresde membresía
SqlMembershipProvider
Datos demembresía
Access
SQL Server
Otros almacenesde datos
22Configuración
- Herramientas administrativas
- Snap-in de MMC para ASP.NET
- Herramienta de administración del sitio web
(Webadmin.axd) - API de configuración
- Acceso de lectura/escritura a los settings de
configuración - Secciones personalizadas de configuración más
simples - Instrumentación
- Contadores de rendimiento, monitoreo de salud y
más
23Herramienta de administración del sitio web
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
24Partes web
- Framework para la construcción de aplicaciones
estilo portal - Sigue el patrón de SharePoint Portal Server
- System.Web.UI.WebControls.WebParts
- IUs ricas con un mínimo de código
- Edición de la distribución de la página usando
arrastrar-y-soltar - Edición de la apariencia, el comportamiento y más
- Personalización sin problemas
- Intercomunicación (conexiones)
25Partes web
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
26Novedades en movilidad
- Arquitectura de controles unificada
- Los adaptadores permiten a las páginas y los
controles presentar las etiquetas en diferentes
tipos de dispositivos - Adaptadores WML provistos por terceros
- Filtros de dispositivos
ltaspLabel Text"Hello, world" RunAt"server"
NokiaText"Hello, Nokia" UpText"Hello,
OpenWave" /gt
Navegadores OpenWave
Navegadores Nokia
27Novedades en localización
- Manejo de Auto-cultura
- Mapeo declarativo de las cabeceras
Accept-Language a las propiedades relevantes de
la hebra - Manejo de recursos simplificado
- Mapeo declarativo de propiedades de los controles
a recursos usando expresiones lt gt - Carga de recursos programática usando tipos
fuertes - ltasplocalize runat"server"gt y más
28Novedades en compilación
- Autocompilación de cualquier recurso
- Archivos CS, archivos VB, archivos RESX, etc.
- Basta poner los archivos en directorios
especiales - Extensible mediante proveedores personalizados
- Nuevo modelo de código-detrás (code-behind 2.0)
- Corrige fragilidades de la versión 1
- Basado en el soporte de clases parciales de los
compiladores - Precompilación e instalación sin el código fuente
29Compilación dinámica
vroot
CS
VB
Code
Archivos auto-compilados en el primer acceso
WSDL
XSD
Resources
RESX
RESOURCE
30Proveedores de construcción
- Componentes que autocompilan archivos
- La sección de configuración
- ltbuildProvidersgt mapea tipos de archivos y
directorios a proveedores de construcción
ltcompilation ... gt ltbuildProvidersgt ltadd
extension".resx" appliesTo"Code,Resources"
type"System.Web.Compilation.ResXBuildProvider"
/gt ltadd extension".wsdl" appliesTo"Code"
type"System.Web.Compilation.WsdlBuildProvider"
/gt ltadd extension".xsd" appliesTo"Code"
type"System.Web.Compilation.XsdBuildProvider"
/gt ... lt/buildProvidersgt lt/compilationgt
31Code-Behind 2.0
Hello.aspx
lt_at_ Page CompileWith"Hello.aspx.cs"
ClassName"MyPage_aspx" gt lthtmlgt ltbodygt
ltform runat"server"gt ltaspTextBox
ID"Input" RunAt"server" /gt ltaspButton
Text"Test" OnClick"OnTest" RunAt"server" /gt
ltaspLabel ID"Output" RunAt"server" /gt
lt/formgt lt/bodygt lt/htmlgt
32Code-Behind 2.0, Cont.
Hello.aspx.cs
using System partial class MyPage_aspx
void OnTest (Object sender, EventArgs e)
Output.Text "Hello, " Input.Text
33Precompilación
- Precompile.axd precompila sitios in-situ para
evitar las demoras del primer acceso
34Instalación sin el código fuente
- Aspnet_compiler.exe precompila sitios y los
instala sin el código fuente
35Compilación dinámica
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
36Expresiones
- Mecanismo declarativo para cargar recursos,
cadenas de conexión y más
ASPX
ltaspSqlDataSource ID"Titles" RunAt"server"
ConnectionString"lt ConnectionStringsPubs gt"
SelectCommand"select title_id, title, price
from titles" /gt
Web.config
ltconfigurationgt ltconnectionStringsgt ltadd
name"Pubs" connectionString"serverlocalho
stdatabasepubs..." /gt lt/connectionStringsgt lt/
configurationgt
37Constructores de expresiones
- Componentes que evalúan expresiones
- La sección de configuración ltexpressionBuildersgt
mapea prefijos a constructores de expresiones
ltcompilation ... gt ltexpressionBuildersgt
ltadd expressionPrefix"Resources"
type"System.Web.Compilation.ResourceExpressionBui
lder" /gt ltadd expressionPrefix"ConnectionStri
ngs" type"System.Web.Compilation.Connection
StringsExpressionBuilder" /gt ltadd
expressionPrefix"AppSettings"
type"System.Web.Compilation.AppSettingsExpression
Builder" /gt lt/expressionBuildersgt lt/compilationgt
38Constructores de expresiones personalizados
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
39Posting entre páginas
- Las páginas pueden ahora hacer postback a otras
páginas - Propiedades relevantes
- control.PostBackUrl Identifica al objetivo del
postback - Page.PreviousPage Devuelve una referencia a la
página que originó el postback entre páginas - PreviousPage.IsCrossPagePostBack Indica si
ocurrió un postback entre páginas - La directiva _at_ PreviousPageType provee acceso de
tipo fuerte a la página anterior
40Post Back a una página diferente
lthtmlgt ltbodygt ltform runat"server"gt
ltaspTextBox ID"Input" RunAt"server" /gt
ltaspButton Text"Test" PostBackUrl"PageTwo.aspx"
RunAt"server" /gt lt/formgt lt/bodygt lt/htmlgt
41Referencia a un control en una página anterior
(con tipos débiles)
lthtmlgt ltbodygt ltaspLabel ID"Output"
RunAt"server" /gt lt/bodygt lt/htmlgt ltscript
language"C" runat"server"gt void Page_Load
(Object sender, EventArgs e) if
(PreviousPage ! null PreviousPage.IsCrossPageP
ostBack) TextBox input (TextBox)
PreviousPage.FindControl ("Input")
Output.Text "Hello, " input.Text
lt/scriptgt
42Referencia a un control en una página anterior
(con tipos fuertes)
lt_at_ PreviousPageType VirtualPath"/PageOne.aspx"
gt lthtmlgt ltbodygt ltaspLabel ID"Output"
RunAt"server" /gt lt/bodygt lt/htmlgt ltscript
language"C" runat"server"gt void Page_Load
(Object sender, EventArgs e) if
(PreviousPage ! null PreviousPage.IsCrossPageP
ostBack) Output.Text "Hello, "
PreviousPage.InputBox.Text lt/scriptgt
Propiedad pública envuelve al TextBox
43Postbacks entre páginas
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
44Grupos de validación
- Los controles de validación ahora se pueden
agrupar usando la nueva propiedad ValidationGroup - Implementada por los controles de validación
- Tambié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 satisfechos - Corrige una deficiencia en ASP.NET 1.x
45Grupos de validación
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
46Callbacks de cliente
- Postbacks livianos
- El administrador de callback de cliente transmite
solicitudes XML-HTTP asincrónicas al servidor - El servidor recibe y procesa la solicitud, pero
no vuelve a presentar la página - El administrador de callback recibe la respuesta
y notifica al cliente vía el callback registrado - Requiere Internet Explorer 5.0 o superior
- Gran manera de mejorar el nivel de respuesta de
la IU
47Cómo funcionan los callbacks de cliente
Cliente
Servidor
1
2
Cliente
CallbackManager
Page
El 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
3
El método RaiseCall-backEvent de la página es
llamado
4
5
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
48Callbacks de cliente
Edgar Sánchez Director Regional de Microsoft para
Ecuador Logic Studio
49Quién tiene el foco?
- En ASP.NET 1.x, se necesitaba un script de
cliente para asignar el foco a un control - En ASP.NET 2.0, se usa Page.SetFocus
ltaspTextBox ID"UserName" RunAt"server" /gt .
. . ltscript language"C" runat"server"gt void
Page_Load (Object sender, EventArgs e)
SetFocus ("UserName") lt/scriptgt
50Panel.DefaultButton
- Designa al botón que hará clic cuando se presione
Intro y el foco está en el panel - Le da la vuelta al hecho de que ASP.NET limita
las páginas a un solo ltformgt runat"server"
ltaspPanel DefaultButton"Button1"
RunAt"server"gt ... ltaspButton
ID"Button1" ... /gt lt/aspPanelgt ltaspPanel
DefaultButton"Button2" RunAt"server"gt ...
ltaspButton ID"Button2" ... /gt lt/aspPanelgt
51Mapeo de URL
- Mapea URLs virtuales a URLs físicos
- Bueno para la transformación declarativa de
páginas físicas en múltiples páginas lógicas
lturlMappings enabled"true"gt ltadd
url"/Home.aspx" mappedUrl"/default.aspx?tabind
ex0" /gt ltadd url"/Forums.aspx"
mappedUrl"/default.aspx?tabindex1" /gt ltadd
url"/Faq.aspx" mappedUrl"/default.aspx?tabinde
x2" /gt lt/urlMappingsgt
URL virtual
URL físico
52Machine.config
- Las configuración por omisión están quemadas en
el sistema - Reduce el tamaño de Machine.config
- Mejora 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 runtime - Machine.config.comments Documenta la sintaxis
de los elementos de configuración, muchos de los
cuales son nuevos - En el mismo directorio que Machine.config
53(No Transcript)