Presente y futuro del desarrollo de controles en ASP.NET Victor Garcia Aprea Microsoft MVP | ASP.NET Clarius Consulting S.A. N C
Recursos Developing ASP.NET Server Controls and Components 2 Lutz Roeders Reflector 2
Agenda 2 User Controls / Custom controls 2 Ciclo de vida de un control 2 Viewstate a fondo 2 Rendering vs. Composición 2 Controles compuestos 2 Lo que viene en Whidbey
UserControls 9 Caching gratuito (declarativo) 9 Ultra sencillos (drag & drop) 0 La cajita fea gris esa… 0 No reusables entre apps 2 Tienen una UI es-tá-ti-ca
Custom Controls 9 Soporte en tiempo de diseño 9 Reusables entre apps 0 Caching programático 0 Bastante difíciles de programar 2 Tienen una UI dinámica
Ciclo de vida de un control Init (desde adentro hacia afuera) TrackViewState LoadViewState ProcessPostData Load ProcessPostData (2do intento) RaiseChangeEvents RaisePostBackEvent PreRender SaveViewState Render Unload
ViewState a fondo
LosFormatter 2 Optimizado para String, bool, int, Hashtable, Array, ArrayList, Pair, Triplet 2 *NO* guardar cualquier tipo 2 Conversores de tipo (TypeConverter) 2 Que no le llegue al BinaryFormatter! 2
Rendering vs. Composición
2 Reusar el output de un control 2 Reusar el control 2 Más controles, mas viewstate, etc. 2 Escenarios complejos
HtmlTextWriter 2 Verbosidad vs. Hardcodeo 2 Concatenación de strings vs. StringBuilder 2 Cuando usar cada uno? 0 Solo sabe renderizar HTML 0 Es una adaptación hacia abajo
HtmlTextWriter 9 Nuevo modelo en Whidbey 2 MarkupTextWriter es la nueva base 2 WmlTextWriter / HtmlTextWriter 0 Nuevo modelo?? Seguro, Víctor?
Controles Compuestos
2 INamingContainer 2 CreateChildControls () (aca y nada mas que aca) 2 ChildControlsCreated (invalidar hijos) 2 EnsureChildControls () (usar con cuidado)
Controles Compuestos 2 CreateChildControls() se llama on- demand 9 FindControl () 9 OnPreRender () 0 propiedad Controls 9 Nueva clase CompositeControl
Lo que viene en Whidbey
Ciclo de vida de un control PreInit Init InitComplete LoadState ProcessPostData PreLoad Load ProcessPostData (2do intento) RaiseChangeEvents RaisePostBackEvent LoadComplete PreRender PreRenderComplete SaveState SaveStateComplete Render
ObjectStateFormatter 2 Mas optimizaciones: IndexedString, Color, HybridDictionary, double, float, Enum, byte 2 *NO* guardar cualquier tipo 2 ControlState & ViewState 2
Nueva Arquitectura de Controles 2 Unificación de ASP.NET v1.0 + MMIT 2 *NO* mas duplicar Pages ni Controls 2 Basada en Adaptadores de Controles
Adaptador de Control 2 Parece un control… no lo es 2 Adapta rendering, estado, lógica de postback 2 Decide si los eventos del control se disparan 2 La página es un Control, también se adapta
9 Diciembre 2004
Alguna pregunta? Muchas gracias por su atención!