Partage
  • Partager sur Facebook
  • Partager sur Twitter

Définitions des termes "hook" et "handler"

Pouvez vous m'apporter des précisions ?

    17 janvier 2013 à 1:33:36

    Bonsoir à tous et à toutes,

    Celà fait maintenant quelques années que je fais de la programmation, et principalement axé WEB et depuis quelques temps je ne fais que de la programmation "sofware".

    J'utilise régulièrement l'évènementielle dans mes applications et je suis confornté aux termes "hook", "handle" ou encore "handler" sans vraiment connaître leur signification exacte.

    Pour moi, un évènement dispose de plusieurs "hooks", par exemple, j'ai une fenêtre, cette dernière dispose donc des "hooks" : Click, KeyPress, MouseMove etc.

    Ensuite, c'est à nous de lui donner les fonctions "handler" pour "handle" ces évènements, donc par exemple le "hook" "KeyPress" a pour "handler" une fonction nommé "OnKeyPress".

    Tout ceci est un exemple évidement pour illustrer mon hyposthèse sur les définitions que je souhaite peaufiner.

    Si vous pouvez m'apporter des précisions, j'en serais réconnaissant :)

    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2013 à 3:22:19

      Un handler est tout simplement un gestionnaire, ça peut être un controlleur dans une architecture MVC, un singleton, un service etc... Perso j'utilise ce terme pour nommer des classes qui servent simplement à gérer quelque chose d'autre (par exemple un SoundManager qui va récupérer des événements pour ensuite jouer un son), après chacun fait comme il veut...

      Un hook désigne plutôt un point d'accroche, dans le web en tout cas, j'ai jamais vu ça dans du logiciel. Par exemple dans un CMS tu as en général différents hooks : header, left_column, right_column, footer... Et lorsque tu installes un module tu choisis à quel endroit il viendra se greffer, sur quel hook l'accrocher.

      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2013 à 3:43:22

        Hmm je vois, si d'autres personnes ont leur précision à ajouter, je suis toujours prenant :)
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2013 à 9:53:41

          Salut,

          Il serait intéressant que tu précises le langage et l'environnement de développement que tu utilises. Les termes « hook » et « handler », de ce que j'en sais du moins, sont très utilisés dans le contexte de la programmation Windows. En général, le « handler » est effectivement le « gestionnaire », par exemple, « exception handler » est le gestionnaire d'exceptions.

          En outre, si tu avais des exemples de phrases ou de codes dans lesquels tu as rencontré ces mots, le contexte nous aiderait sans doute à te renseigner. :)

          Bonne journée/soirée, GuilOooo

          • Partager sur Facebook
          • Partager sur Twitter
          J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
            17 janvier 2013 à 15:19:37

            Bonjour,

            C'est dans de multiples langages que j'ai pu voir ces termes. Notament en C#.Net sous "EventHandler" et des termes plus précis comme "KeyPressEventHandler".
            Ensuite dans des bibliothèques privées au sein de mon école, pour ne pas citer la minilibX d'Epitech :p , nous avons des fonctions comme "mlx_hook()" qui permet d'associer une fonction de callback à un évènement à définir en paramètres de cette fonction. D'autres fonctions du même nom y sont implementés "mlx_loop_hook", "mlx_key_hook" etc.

            Comme je vous l'ai dit, je sais à quoi servent les fonctions, je sais à quoi correspont quoi, mais je voudrais vraiment connâitre la définition exacte afin de pas faire d'abus de langage et surtout enricher mes connaissances techniques :)

            En tout cas vos réponses m'ont été fortes utiles, et si d'autres personnes veulent continuer à préciser ces définitions, je suis toujours à l'écoute :)

            • Partager sur Facebook
            • Partager sur Twitter
              10 janvier 2020 à 18:12:31

              Hello,

              Définitions issues de mon expérience, car ce sont des concepts abstraits, libres a l'interprétation de chacun, mais grosso-modo, les développeurs s'entendent quand ils parlent de handlers ou de hooks.

              Un handler est une procédure permettant d'effectuer un traitement après un event (il y a ici une notion d'événementiel, par opposition a quelque-chose de cyclique qui s'appellerait plutôt un "process").

              Attention cependant, un handler n'est pas forcément une fonction/méthode, cela peut aussi être un module entier/une classe entière. Je resumerais donc en disant qu'un handler est une implémentation permettant de gérer quelque-chose d'événementiel.

              Un hook représentera plutôt une action que l'on vient intercaller dans un traitement déjà défini, pour faire du traitement "custom" dans quelque-chose de déjà établi. Le développeur implementera donc son hook pour ses propres besoins. En quelques sortes, cela laisse la possibilité au développeur d'étendre la fonctionnalité déjà implémentée en "greffant" son code custom au milieu de celle-ci.

              Exemple: une fonction sample() convertit un signal audio depuis un ADC et te retourne un échantillon. Tu peux avoir une fonction filteringHook() vide par défaut mais que tu peux implementer the permettant de traiter le sample avant que sample() ne te le retourne.

              • Partager sur Facebook
              • Partager sur Twitter
                17 mai 2024 à 17:02:53

                Bonjour,

                oui le hook est un point d'accroche dans une conception permettant d'étendre la fonction présentant un hook. Par exemple, quand on code une fonction et que l'on souhaite laisser au développeur la possibilité d'ajouter son propre code à un endroit précis à cette fonction. Par exemple, je peux mettre un hook preprocessing en début de fonction et un hook post-processing à la fin de ma fonction. Mon pre-processing et post-processing ne contient aucun code par défaut mais le développeur pourra y mettre des choses dedans si il le souhaite.

                Le handler est effectivement celui qui réagit sur un évènement (ou une notification) asynchrone. On peut définir des handlers associés à chaque évènement afin de traiter chaque évènement asynhrone. C'est pour ca que l'on parle d'exception handler, celui qui va traiter l'exception. Si j'écris le code d'une fonction, je peux envoyer une notification pre-processing en début de fonction et une notification post-processing en fin de fonction. Cela permet à un handler de faire quelques chose lorsqu'il recevra la notification de manière asynchrone donc le code écrit dans le handler s'exécutera en parallèle de ma fonction. Cela diffère du hook dans le sens où l'envoi d'une notification n'est pas bloquante. Le code du hook peut aussi ne pas être bloquant mais ce n'est pas le cas par défaut. Sauf si implémente un hook pour exécuter des instructions dans un thread explicitement, le hook est exécuté dans le meme thread que ma fonction.

                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2024 à 12:27:23

                  Faut revenir bêtement au dictionnaire anglais français. To handle something = s'occuper de quelque chose.

                  Comme dans "we're FBI. We handle the situation". (Je regarde trop de séries)

                  D'où event handler, Interrupt handler etc.

                  Et hook c'est un crochet, où on peut accrocher une fonction qui fera un truc en plus que l'exécution normale.

                  Attention : handle c'est très différent. C'est comme une poignée de casserole, un truc qui permet de tenir un objet.

                  Exemple typique, l'ouverture d'un fichier retourne un numéro de descripteur, un FILE *, où autre truc, qui N'EST pas un fichier, mais une reference, un moyen de le manipuler

                  -
                  Edité par michelbillaud 18 mai 2024 à 12:38:02

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Définitions des termes "hook" et "handler"

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  • Editeur
                  • Markdown