Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor...

23
Mejores Prácticas en ASP.NET y Mejores Prácticas en ASP.NET y AJAX AJAX Isabel Gómez Isabel Gómez Microsoft Microsoft Development Advisor Development Advisor [email protected] [email protected] Jose Manuel Alarcón Jose Manuel Alarcón Krasis - campusMVP Krasis - campusMVP Director Director http://www.jasoft.org http://www.jasoft.org

Transcript of Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor...

Page 1: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Mejores Prácticas en ASP.NET y AJAXMejores Prácticas en ASP.NET y AJAX

Isabel GómezIsabel GómezMicrosoft Microsoft

Development AdvisorDevelopment [email protected]@microsoft.com

Jose Manuel AlarcónJose Manuel AlarcónKrasis - campusMVPKrasis - campusMVPDirectorDirectorhttp://www.jasoft.orghttp://www.jasoft.org

Page 2: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Mejores Prácticas en ASP.NETMejores Prácticas en ASP.NET– Uso de CacheUso de Cache– Usar Modelo AsíncronoUsar Modelo Asíncrono– Ahorro de RecursosAhorro de Recursos

• Mejores Prácticas en AjaxMejores Prácticas en Ajax

Page 3: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Mejores Prácticas en ASP.NETMejores Prácticas en ASP.NET

Page 4: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Se trata de almacenar información usada con frecuencia y costosa Se trata de almacenar información usada con frecuencia y costosa de obtener para minimizar la carga de procesamiento.de obtener para minimizar la carga de procesamiento.

• Ventajas: mucho menos costoso y más rápido.Ventajas: mucho menos costoso y más rápido.• Objetivos: Rendimiento, escalabilidad y disponibilidad.Objetivos: Rendimiento, escalabilidad y disponibilidad.• Tipos de caché:Tipos de caché:

• De clienteDe cliente• De servidorDe servidor• DeclarativaDeclarativa

• Caché completa (páginas y controles)Caché completa (páginas y controles)• Caché parcialCaché parcial

• Por códigoPor código

Page 5: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Se trata de guardar en el servidor Se trata de guardar en el servidor (generalmente) (generalmente) los resultados de los resultados de procesar una determinada página o control de usuario.procesar una determinada página o control de usuario.

• Se emplea la directiva <%@ OutputCache %> en la parte superior de Se emplea la directiva <%@ OutputCache %> en la parte superior de la página o control de usuario.la página o control de usuario.

• Páginas/controles completos:Páginas/controles completos:• VaryByParamVaryByParam: se hace caché en función de un parámetro de la URL.: se hace caché en función de un parámetro de la URL.• VaryByHeaderVaryByHeader: se cachea en función de una cabecera del navegador.: se cachea en función de una cabecera del navegador.• VaryByControlVaryByControl: se hace caché del contenido de un control o controles.: se hace caché del contenido de un control o controles.• VaryBycustomVaryBycustom: el parámetro que hace variar la caché es arbitrario y : el parámetro que hace variar la caché es arbitrario y

definido por el programador.definido por el programador.• Porciones de páginas: controles de usuarioPorciones de páginas: controles de usuario

• VaryByControl: varía la caché en función de una propiedad del control.VaryByControl: varía la caché en función de una propiedad del control.• OJO: Shared = TrueOJO: Shared = True

• PostCacheSubstitutionPostCacheSubstitution

Page 6: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Mejora del Mejora del rendimiento con rendimiento con Caché declarativaCaché declarativa

Page 7: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Se puede establecer caché en memoria sin asignarla a la Se puede establecer caché en memoria sin asignarla a la salida de una página o control.salida de una página o control.

• Para ello empleamos la clase Para ello empleamos la clase System.Web.Caching.CacheSystem.Web.Caching.Cache• Se maneja de manera similar a una colección.Se maneja de manera similar a una colección.• Permite definir duración absoluta, relativa o prorogadaPermite definir duración absoluta, relativa o prorogada• Lo más interesante: prioridades y dependenciasLo más interesante: prioridades y dependencias

• ArchivosArchivos• Otras claves de cachéOtras claves de caché• TiempoTiempo• Bases de datos SQL ServerBases de datos SQL Server• Dependencias personalizadasDependencias personalizadas

Page 8: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• HTTPHandlers AsíncronosHTTPHandlers Asíncronos• HTTPModules AsíncronosHTTPModules Asíncronos• Páginas Asíncronas Páginas Asíncronas

Page 9: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Debug=false en web.configDebug=false en web.config• Acceso a DatosAcceso a Datos

– Paginación inteligente (ObjectDataSource)Paginación inteligente (ObjectDataSource)– Connection PoolingConnection Pooling

• Optimizar el uso de objeto de Sesión Optimizar el uso de objeto de Sesión

• Viewstate (Deshabilitar si no es necesario)Viewstate (Deshabilitar si no es necesario)

Page 10: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• ViewStateViewState• Conserva el estado de los controles de la página entre idas y venidas al Conserva el estado de los controles de la página entre idas y venidas al

servidor.servidor.• Se envía entre el cliente y el servidor y viceversa en cada Postback de la Se envía entre el cliente y el servidor y viceversa en cada Postback de la

página.página.• Si tenemos muchos controles puede llegar a ser realmente grande.Si tenemos muchos controles puede llegar a ser realmente grande.• CONSEJO: deshabilitar el ViewState en los controles que no lo CONSEJO: deshabilitar el ViewState en los controles que no lo

necesiten. Ej: etiquetas, rejillas que se regeneran, etc…necesiten. Ej: etiquetas, rejillas que se regeneran, etc…• TÉCNICA AVANZADA: almacenar el ViewState en el servidor:TÉCNICA AVANZADA: almacenar el ViewState en el servidor:

• Ventaja: No hay que moverlo por la RedVentaja: No hay que moverlo por la Red• Inconveniente: puede ocupar mucha memoria si abusamos.Inconveniente: puede ocupar mucha memoria si abusamos.

Page 11: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Almacenamiento Almacenamiento del ViewState del ViewState en el Servidoren el Servidor

Page 12: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Mejores Prácticas en AJAXMejores Prácticas en AJAX

Page 13: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• ConceptoConcepto• Beneficios:Beneficios:

– Mejora de la experiencia de UsuarioMejora de la experiencia de Usuario

– Optimización en el uso del Ancho de BandaOptimización en el uso del Ancho de Banda• Renderización Parcial Renderización Parcial • Llamada ligera a Servicios WebLlamada ligera a Servicios Web

– Facilita la programación de código de clienteFacilita la programación de código de cliente

Page 14: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

ASP.NET 2.0 Ajax ExtensionsASP.NET 2.0 Ajax Extensions

Ajax-Enabled Server ControlsAjax-Enabled Server Controls

App Services BridgeApp Services Bridge

Web Services BridgeWeb Services Bridge

Server FrameworkServer Framework

ASP.NET 2.0ASP.NET 2.0

Application ServicesApplication Services

Page Framework,Server ControlsPage Framework,Server Controls

ASP.NET PagesASP.NET PagesASP.NET PagesASP.NET Pages Web ServicesWeb Services(ASMX or WCF)(ASMX or WCF)

Web ServicesWeb Services(ASMX or WCF)(ASMX or WCF)

Client FrameworkClient Framework

HTML markup,HTML markup,CSS, andCSS, andScriptScript

HTML markup,HTML markup,CSS, andCSS, andScriptScript

““Ajax”Ajax”ServiceServiceProxiesProxies

““Ajax”Ajax”ServiceServiceProxiesProxies

Microsoft Ajax LibraryMicrosoft Ajax Library

Core ServicesCore Services

Base Class LibraryBase Class Library

Componentes (Non-visual, Behaviours, controles)Componentes (Non-visual, Behaviours, controles)

Browser CompatibilityBrowser Compatibility

Networking LayerNetworking Layer

Page 15: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

ASP.NET AJAX Control Toolkit Components

ASP.NET AJAX Control Toolkit Components

Visual Studio 2005 Templates

Visual Studio 2005 Templates

ASP.NET AJAX Control Toolkit Base Classes (.NET & JavaScript)

ASP.NET AJAX Control Toolkit Base Classes (.NET & JavaScript)

ASP.NET AJAX Server Extensions Components

ASP.NET AJAX Server Extensions Components

ASP.NET AJAX Library Framework

ASP.NET AJAX Library Framework

ASP.NET 2.0ASP.NET 2.0

• ASP.NET AJAX ToolkitASP.NET AJAX Toolkit

• ASP.NET AJAX FuturesASP.NET AJAX Futures

Page 16: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

““Ajaxificando”Ajaxificando”

Page 17: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

<asp:UpdatePanel>

Trigger

<asp:UpdatePanel>

<asp:UpdateProgress>

Page 18: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• Ficheros de script en Sistema de FicherosFicheros de script en Sistema de Ficheros

• UpdatePanel con UpdateMode=ConditionalUpdatePanel con UpdateMode=Conditional

• Debug=falseDebug=false

• Ajax Patterns(Ajax Patterns(http://ajaxpatterns.org))

– Indicios Visuales del cambioIndicios Visuales del cambio– Navegación Lógica y URLs únicosNavegación Lógica y URLs únicos

Page 19: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

Optimizando Optimizando el uso de Ajaxel uso de Ajax

Page 20: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• ASP.NET + AJAX:ASP.NET + AJAX:– SegurasSeguras– EscalablesEscalables

•Uso de CacheUso de Cache•Modelo AsíncronoModelo Asíncrono•Ahorro de RecursosAhorro de Recursos

– Experiencia de usuario (AJAX)Experiencia de usuario (AJAX)

Page 21: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• ASP.NETASP.NET– Seguridad: Seguridad:

– Improving Web Application Security Threats and Countermeasures

– An Introductory Guide to Building and Deploying More Secure Sites with ASP.NET and IIS

– An Introductory Guide to Building and Deploying More Secure Sites with ASP.NET and IIS, Part 2

– Rendimiento:Rendimiento:– 10 Tips for Writing High-Performance Web Applications– Asynchronous Pages in ASP.NET 2.0Asynchronous Pages in ASP.NET 2.0– Power Programming Tips for ASP.NET 2.0Power Programming Tips for ASP.NET 2.0– Developing High-Performance ASP.NET ApplicationsDeveloping High-Performance ASP.NET Applications– State Management RecommendationsState Management Recommendations

Page 22: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.

• AJAXAJAX– http://AJAX.asp.net/http://AJAX.asp.net/– http://forums.asp.net/default.aspx?GroupID=34http://forums.asp.net/default.aspx?GroupID=34– BlogsBlogs

http://www.jasoft.org – José Manuel Alarcónhttp://www.jasoft.org – José Manuel Alarcónhttp://smarx.com – Steve Marxhttp://smarx.com – Steve Marxhttp://nikhilk.net – Nikhil Kotharihttp://nikhilk.net – Nikhil Kotharihttp://weblogs.asp.net/scottgu – Scott Guthriehttp://weblogs.asp.net/scottgu – Scott Guthrie

– PatternsPatterns::

http://ajaxpatterns.orghttp://ajaxpatterns.org

Page 23: Mejores Prácticas en ASP.NET y AJAX Isabel Gómez Microsoft Development Advisor isabelg@microsoft.com Jose Manuel Alarcón Krasis - campusMVP Director.