Question

Après avoir lu le livre de Joe Armstrong et regardé les screencasts de Kevin Smith, j'ai construit une application OTP simple composée d'un seul gen_server et d'un seul superviseur, regroupés sous forme d'application OTP.

Maintenant, je regarde mochiweb et j'ai créé un exemple de projet [helloworld] en utilisant le script new_mochiweb.erl.En parcourant le code source, je vois que ce n'est pas différent de mon exemple d'application OTP [l'application OTP est là, le superviseur est là] avec une différence clé ..les fichiers helloworld.erl et helloworld_web.erl générés n'implémentent pas le comportement gen_server, ce sont simplement des modules Erlang standard.

J'avais l'impression que l'utilisation de gen_server était la méthode recommandée lors de la création de composants d'application OTP.Pourquoi mochiweb pourrait-il utiliser les comportements d'application et de superviseur OTP mais éviter gen_server ?

Était-ce utile?

La solution

Il existe un gen_server, appelé mochiweb_socket_server.Les modules générés ne sont que des "modules de rappel" pour que le gen_server soit appelé lors de la réception d'une requête entrante.

Autres conseils

Vous utilisez OTP / gen_servers pour les processus qui sont dans une stratégie de redémarrage -. qui est le redémarrage d'entre eux est dans votre contrôle

Ce n'est pas le cas avec les processus représentant les connexions aux navigateurs Web. Si ce processus meurt, il n'y a aucun moyen pour le serveur pour le redémarrer -. Fonctionner donc sous OTP est inutile

Mochiweb (et pian) utilisent tous deux gen_servers à se lier au port d'écoute, puis frayer un processus non supervisé pour traiter une nouvelle connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top