Date post: | 23-Jan-2016 |
Category: |
Documents |
Upload: | raquel-torregrosa-morales |
View: | 216 times |
Download: | 0 times |
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
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
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
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>
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" />
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Data binding declarativoData binding declarativo
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
Como poner tema a una páginaComo poner tema a una página<%@ Page Theme="BasicBlue">
Antes Después
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Páginas maestrasPáginas maestras
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!
Validación de loginsValidación de loginsif (Membership.ValidateUser (UserName.Text, Password.Text)) RedirectFromLoginPage (UserName.Text, RememberMe.Checked);
El control de loginEl control de login<html> <body> <form runat="server"> <asp:Login RunAt="server" /> </form> </body></html>
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Membresía y loginsMembresía y logins
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
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>
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;
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Persistencia de datos con perfilesPersistencia de datos con perfiles
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Navegación en el sitio dirigida por datosNavegación en el sitio dirigida por datos
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
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
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Herramienta de administración del sitio webHerramienta de administración del sitio web
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”)
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Partes webPartes web
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
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
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
Compilación dinámicaCompilación dinámica
vroot
Code
Resources
CS
VB
WSDL
XSD
RESX
RESOURCE
Archivos auto-compilados en el primer acceso
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
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
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
PrecompilaciónPrecompilación
Precompile.axd precompila sitios in-situ para evitar las demoras del primer acceso
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Compilación dinámicaCompilación dinámica
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
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>
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Constructores de expresiones personalizadosConstructores de expresiones personalizados
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
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>
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>
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Postbacks entre páginasPostbacks entre páginas
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Grupos de validaciónGrupos de validación
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
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
Edgar SánchezDirector Regional de Microsoft para EcuadorLogic Studio
Callbacks de clienteCallbacks de cliente
¿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>
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>
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
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