Post on 03-Jan-2015
Presente y futuro del Presente y futuro del desarrollo de controles desarrollo de controles
en ASP.NETen ASP.NET
Victor Garcia ApreaVictor Garcia ApreaMicrosoft MVP | ASP.NETMicrosoft MVP | ASP.NETClarius Consulting S.A.Clarius Consulting S.A.
NNCC
RecursosRecursos
22 http://weblogs.asp.net/vgahttp://weblogs.asp.net/vga
22 “Developing ASP.NET Server Controls “Developing ASP.NET Server Controls
and Components“and Components“
22 Lutz Roeder’s ReflectorLutz Roeder’s Reflector
22 http://www.asp.net/forumshttp://www.asp.net/forums
AgendaAgenda
22 User Controls / Custom controlsUser Controls / Custom controls
22 Ciclo de vida de un controlCiclo de vida de un control
22 Viewstate a fondoViewstate a fondo
22 Rendering vs. Composición Rendering vs. Composición
22 Controles compuestosControles compuestos
22 Lo que viene en Whidbey Lo que viene en Whidbey
UserControlsUserControls
99 Caching gratuito Caching gratuito
(declarativo)(declarativo)
99 Ultra sencillos (drag & drop)Ultra sencillos (drag & drop)
00 La cajita fea gris esa…La cajita fea gris esa…
00 No reusables entre appsNo reusables entre apps
22 Tienen una UI es-tá-ti-caTienen una UI es-tá-ti-ca
Custom ControlsCustom Controls
99 Soporte en tiempo de diseñoSoporte en tiempo de diseño
99 Reusables entre appsReusables entre apps
00 Caching programáticoCaching programático
00 Bastante difíciles de Bastante difíciles de
programarprogramar
22 Tienen una UI dinámicaTienen una UI dinámica
Ciclo de vida de un controlCiclo de vida de un controlInit (desde adentro hacia afuera)Init (desde adentro hacia afuera)TrackViewStateTrackViewStateLoadViewStateLoadViewStateProcessPostDataProcessPostDataLoadLoadProcessPostData (2do intento)ProcessPostData (2do intento)RaiseChangeEventsRaiseChangeEventsRaisePostBackEventRaisePostBackEventPreRenderPreRenderSaveViewStateSaveViewStateRenderRenderUnloadUnload
ViewState a fondoViewState a fondo
LosFormatterLosFormatter22 Optimizado para String, bool, int, Optimizado para String, bool, int,
Hashtable, Array, ArrayList, Pair, TripletHashtable, Array, ArrayList, Pair, Triplet
22 *NO* guardar cualquier tipo*NO* guardar cualquier tipo
22 Conversores de tipo Conversores de tipo
(TypeConverter)(TypeConverter)
22 Que no le llegue al Que no le llegue al
BinaryFormatter! BinaryFormatter!
22
http://weblogs.asp.net/vga/archive/2004/05.ahttp://weblogs.asp.net/vga/archive/2004/05.a
spxspx
RenderingRenderingvs.vs.
ComposiciónComposición
Rendering vs. Rendering vs. ComposiciónComposición
22 Reusar el output de un Reusar el output de un
controlcontrol
22 Reusar el controlReusar el control
22 Más controles, mas Más controles, mas
viewstate, etc. viewstate, etc.
22 Escenarios complejos Escenarios complejos
HtmlTextWriterHtmlTextWriter22 Verbosidad vs. HardcodeoVerbosidad vs. Hardcodeo
22 Concatenación de strings Concatenación de strings
vs. StringBuildervs. StringBuilder
22 Cuando usar cada uno?Cuando usar cada uno?
00 Solo sabe renderizar HTMLSolo sabe renderizar HTML
00 Es una adaptación “hacia Es una adaptación “hacia
abajo”abajo”
HtmlTextWriterHtmlTextWriter99 Nuevo modelo en WhidbeyNuevo modelo en Whidbey
22 MarkupTextWriter es la MarkupTextWriter es la
nueva basenueva base
22 WmlTextWriter / WmlTextWriter /
HtmlTextWriterHtmlTextWriter
00 Nuevo modelo?? Seguro, Nuevo modelo?? Seguro,
Víctor?Víctor?
Controles CompuestosControles Compuestos
Controles CompuestosControles Compuestos22 INamingContainerINamingContainer
22 CreateChildControls () CreateChildControls () (aca y (aca y
nada mas que aca)nada mas que aca)
22 ChildControlsCreated ChildControlsCreated
(invalidar hijos)(invalidar hijos)
22 EnsureChildControls () EnsureChildControls () (usar (usar
con cuidado)con cuidado)
Controles CompuestosControles Compuestos22 CreateChildControls() se CreateChildControls() se
llama on-demandllama on-demand
99 FindControl ()FindControl ()
99 OnPreRender () OnPreRender ()
00 propiedad Controlspropiedad Controls
99 Nueva clase Nueva clase
CompositeControlCompositeControl
Lo que viene en WhidbeyLo que viene en Whidbey
Ciclo de vida de un controlCiclo de vida de un controlPreInitPreInitInitInitInitCompleteInitCompleteLoadStateLoadStateProcessPostDataProcessPostDataPreLoadPreLoadLoadLoadProcessPostData (2do intento)ProcessPostData (2do intento)RaiseChangeEventsRaiseChangeEventsRaisePostBackEventRaisePostBackEventLoadCompleteLoadCompletePreRenderPreRenderPreRenderCompletePreRenderCompleteSaveStateSaveStateSaveStateCompleteSaveStateCompleteRenderRender
ObjectStateFormatterObjectStateFormatter22 Mas optimizaciones: IndexedString, Mas optimizaciones: IndexedString,
Color, HybridDictionary, double, float, Color, HybridDictionary, double, float,
Enum, byteEnum, byte
22 *NO* guardar cualquier tipo*NO* guardar cualquier tipo
22 ControlState & ViewStateControlState & ViewState
22
http://weblogs.asp.net/vga/archive/2004/05.asphttp://weblogs.asp.net/vga/archive/2004/05.asp
xx
Nueva Arquitectura de Nueva Arquitectura de ControlesControles
22 Unificación de ASP.NET v1.0 + MMITUnificación de ASP.NET v1.0 + MMIT
22 *NO* mas duplicar Pages ni Controls *NO* mas duplicar Pages ni Controls
22 Basada en Adaptadores de ControlesBasada en Adaptadores de Controles
Adaptador de ControlAdaptador de Control22 Parece un control… no lo es Parece un control… no lo es
22 Adapta rendering, estado, lógica de Adapta rendering, estado, lógica de
postbackpostback
22 Decide si los eventos del control se Decide si los eventos del control se
disparandisparan
22 La página es un Control, también se La página es un Control, también se
adaptaadapta
99 Diciembre Diciembre
20042004
Alguna pregunta?Alguna pregunta?
Muchas gracias por su atención!Muchas gracias por su atención!