Callbacks? para que?

25/07/2006 - 17:54 por Cesar | Informe spam
Hola amigos, tengo una duda, quisiera saber para que me sirven los
callbacks, es decir conosco la teoria del callback pero no le veo la
utilidad, me pueden dar un ejemplo practico en lo que es util un callback o
en que parte conviene aplicarlo, con alguna ganacia de velocidad o algo?

Gracias amigos


Cesar

Preguntas similare

Leer las respuestas

#6 RFOG
26/07/2006 - 11:40 | Informe spam
Cesar wrote:
Ok amigos me queda un poco mas claro pero algun ejemplo comun? en Windows ,
o es como dice Pedro que ne Aplicaciones Windpws no sirve para gran cosa?...
Pedro y la gestion de la conexion a la base de datos?, alli me parece que
seria util estes en web o windows o me equivoco?

Salduos
Cesar
"Pedro Echavarria" ha scritto nel messaggio
news:
Un consejo... no te preocupes mucho por eso pues no sirve para gran cosa


en
aplicaciones windows :)

"Cesar" wrote in message
news:
Hola amigos, tengo una duda, quisiera saber para que me sirven los
callbacks, es decir conosco la teoria del callback pero no le veo la
utilidad, me pueden dar un ejemplo practico en lo que es util un




callback
o
en que parte conviene aplicarlo, con alguna ganacia de velocidad o algo?

Gracias amigos


Cesar











A ver, las callbacks en windows son casi el sustituto de las
interrupciones y forman la idea básica de los eventos dentro del mundo NET.

Tienes un elemento autónomo cualquiera que cuando se produzca una
situación determinada debe avisarte. Tienes tres posibilidades:
1.- Consultar tu en un bucle periódicamente si se ha producido esa
situación. Si tienes 50 elementos diferentes, deberás consultar esos 50
elementos uno por uno.
2.- Programar una interrupción y que se dispare cada vez que sea
necesario (esto en XP no se puede hacer, pero en otros sistemas sí).
3.- Instalar un callback que se ejecute cada vez que se produzca la
situación deseada.

La 2 la descartamos por compleja, difícil de implementar y tendente a
errores y problemas enormemente difíciles de detectar y solventar en
aquellos sistemas que la permitan de forma natural.

La 1 requiere intervención del programa cliente de continuo, y podría
dar lugar a que se te escaparan situaciones dependiendo de la velocidad
a la que consultes. Si quieres que tu aplicación fuera suelta deberías
hacer el polling (se llama así) en un hilo aparte, etc.

¿Cuál queda? La tercera. Esa no falla nunca (bueno, la segunda tampoco).
Cuando se produzca la situación tu función será llamada. Siempre.

¿Dónde usa Windows callbacks? En todos los lugares habidos y por haber.
Por ponerte un ejemplo, el driver de teclado que instalas lo que hace es
insertar un callback en el gestor de teclado que se llama cada vez que
se produce un evento.

¿Para qué le sirven al programador? Para millones de cosas. Capturar de
forma global las pulsaciones de teclas, insertar una DLL global, recibir
notificaciones cuando entre un byte por un puerto serie, cambie el
estado de un fichero o carpeta, se acabe una escritura diferida de un
archivo, se dispare un timer programado... Casi cualquier cosa hecha en
windows que requiera notificación asíncrona se realiza mediante un
callback (Y de hecho, las interrupciones también: cuando se dispara una
interrupción se ejecuta una función almacenada en una dirección fija de
memoria que se corresponde con esa interrupción; dicha función no es
otra cosa que un callback).

Y llegamos al mundo NET. Los eventos son una forma especializada de
callbacks, así como los delegados y cualquier método que añadamos en las
propiedades de cualquier componente. Cuando se produce el evento
programado se ejecuta un método que hemos instalado (eso es un
callback). Cuando instalamos un delegado lo que estamos haciendo es
alojar en un hueco reservado un método existente (eso es un callback).
Cuando hacemos clic con el ratón en un lado de nuestra aplicación, se
produce un encadenamiento de llamadas a callbacks (desde la propia
interrupción del sistema operativo) que termina en la ejecución de
nuestra callback instalada dentro del evento/delegado de la instancia de
nuestro componente.

Fíjate si los callbacks valen para algo, y te diría que si no
existieran, la informática no habría llegado a ser lo que es.
Respuesta Responder a este mensaje
#7 Hernan
26/07/2006 - 15:33 | Informe spam
Cesar ha escrito:
Ok amigos me queda un poco mas claro pero algun ejemplo comun? en Windows ,
o es como dice Pedro que ne Aplicaciones Windpws no sirve para gran cosa?...
Pedro y la gestion de la conexion a la base de datos?, alli me parece que
seria util estes en web o windows o me equivoco?



Callback es un término genérico. Como mecanismo lo vas a encontrar en
infinidad de aplicaciones, incluso en windows. Es un modo de encadenar
llamadas. Si tienes dos paquetes de código:
paquete_A : f() y g()
paquete_X : x()
Si f invoca a x, y x llama de vuelta a g, y lo implementamos de forma
que
paquete_X no esté enlazado en forma estática al paquete_A, entonces
g() es un callback.

Cómo se implementa depende del S.O., del lenguaje, del entorno, etc.
etc.
Puede ser por interrupciones (como ya te han mencionado), punteros
a funciones (caso de lenguaje C) o delegates en .NET.


"Pedro Echavarria" ha scritto nel messaggio
news:
> Un consejo... no te preocupes mucho por eso pues no sirve para gran cosa
en
> aplicaciones windows :)
>
> "Cesar" wrote in message
> news:
> > Hola amigos, tengo una duda, quisiera saber para que me sirven los
> > callbacks, es decir conosco la teoria del callback pero no le veo la
> > utilidad, me pueden dar un ejemplo practico en lo que es util un
callback
> > o
> > en que parte conviene aplicarlo, con alguna ganacia de velocidad o algo?
Respuesta Responder a este mensaje
#8 Cesar
01/08/2006 - 20:04 | Informe spam
Muchas gracias RFOG, muy claro y conciso, ahora si tengo el panorama mas
claro
Saludos

Cesar
"RFOG" ha scritto nel messaggio
news:OGh$
Cesar wrote:
> Ok amigos me queda un poco mas claro pero algun ejemplo comun? en


Windows ,
> o es como dice Pedro que ne Aplicaciones Windpws no sirve para gran


cosa?...
> Pedro y la gestion de la conexion a la base de datos?, alli me parece


que
> seria util estes en web o windows o me equivoco?
>
> Salduos
> Cesar
> "Pedro Echavarria" ha scritto nel messaggio
> news:
>> Un consejo... no te preocupes mucho por eso pues no sirve para gran


cosa
> en
>> aplicaciones windows :)
>>
>> "Cesar" wrote in message
>> news:
>>> Hola amigos, tengo una duda, quisiera saber para que me sirven los
>>> callbacks, es decir conosco la teoria del callback pero no le veo la
>>> utilidad, me pueden dar un ejemplo practico en lo que es util un
> callback
>>> o
>>> en que parte conviene aplicarlo, con alguna ganacia de velocidad o


algo?
>>>
>>> Gracias amigos
>>>
>>>
>>> Cesar
>>>
>>>
>>
>
>
A ver, las callbacks en windows son casi el sustituto de las
interrupciones y forman la idea básica de los eventos dentro del mundo


NET.

Tienes un elemento autónomo cualquiera que cuando se produzca una
situación determinada debe avisarte. Tienes tres posibilidades:
1.- Consultar tu en un bucle periódicamente si se ha producido esa
situación. Si tienes 50 elementos diferentes, deberás consultar esos 50
elementos uno por uno.
2.- Programar una interrupción y que se dispare cada vez que sea
necesario (esto en XP no se puede hacer, pero en otros sistemas sí).
3.- Instalar un callback que se ejecute cada vez que se produzca la
situación deseada.

La 2 la descartamos por compleja, difícil de implementar y tendente a
errores y problemas enormemente difíciles de detectar y solventar en
aquellos sistemas que la permitan de forma natural.

La 1 requiere intervención del programa cliente de continuo, y podría
dar lugar a que se te escaparan situaciones dependiendo de la velocidad
a la que consultes. Si quieres que tu aplicación fuera suelta deberías
hacer el polling (se llama así) en un hilo aparte, etc.

¿Cuál queda? La tercera. Esa no falla nunca (bueno, la segunda tampoco).
Cuando se produzca la situación tu función será llamada. Siempre.

¿Dónde usa Windows callbacks? En todos los lugares habidos y por haber.
Por ponerte un ejemplo, el driver de teclado que instalas lo que hace es
insertar un callback en el gestor de teclado que se llama cada vez que
se produce un evento.

¿Para qué le sirven al programador? Para millones de cosas. Capturar de
forma global las pulsaciones de teclas, insertar una DLL global, recibir
notificaciones cuando entre un byte por un puerto serie, cambie el
estado de un fichero o carpeta, se acabe una escritura diferida de un
archivo, se dispare un timer programado... Casi cualquier cosa hecha en
windows que requiera notificación asíncrona se realiza mediante un
callback (Y de hecho, las interrupciones también: cuando se dispara una
interrupción se ejecuta una función almacenada en una dirección fija de
memoria que se corresponde con esa interrupción; dicha función no es
otra cosa que un callback).

Y llegamos al mundo NET. Los eventos son una forma especializada de
callbacks, así como los delegados y cualquier método que añadamos en las
propiedades de cualquier componente. Cuando se produce el evento
programado se ejecuta un método que hemos instalado (eso es un
callback). Cuando instalamos un delegado lo que estamos haciendo es
alojar en un hueco reservado un método existente (eso es un callback).
Cuando hacemos clic con el ratón en un lado de nuestra aplicación, se
produce un encadenamiento de llamadas a callbacks (desde la propia
interrupción del sistema operativo) que termina en la ejecución de
nuestra callback instalada dentro del evento/delegado de la instancia de
nuestro componente.

Fíjate si los callbacks valen para algo, y te diría que si no
existieran, la informática no habría llegado a ser lo que es.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida