Domanda

Dopo aver letto il libro di Joe Armstrong e guardato gli screencast di Kevin Smith, ho creato una semplice applicazione OTP composta da un singolo gen_server e un singolo supervisore, raggruppati insieme come applicazione OTP.

Ora sto guardando mochiweb e ho creato un progetto di esempio [helloworld] utilizzando lo script new_mochiweb.erl.Esplorando il codice sorgente vedo che non è dissimile dalla mia app OTP di esempio [l'applicazione OTP è lì, il supervisore è lì] con una differenza fondamentale...i file helloworld.erl e helloworld_web.erl generati non implementano il comportamento gen_server, sono solo moduli Erlang standard.

Avevo l'impressione che l'utilizzo di gen_server fosse la soluzione consigliata durante la creazione di componenti dell'applicazione OTP.Perché mochiweb potrebbe utilizzare l'applicazione OTP e i comportamenti del supervisore ma evitare gen_server?

È stato utile?

Soluzione

Esiste un gen_server, chiamato mochiweb_socket_server.I moduli generati sono solo "moduli di callback" per gen_server da chiamare quando si riceve una richiesta in entrata.

Altri suggerimenti

Si utilizza OTP / gen_servers per i processi che sono sotto una strategia di riavvio -. che è il riavvio di loro sta nel controllo

Non è questo il caso con i processi che rappresentano collegamenti per i browser web. Se questo processo muore non c'è alcun modo per il server per riavviarlo -. Quindi in esecuzione sotto OTP è inutile

Mochiweb (e Framboesia) entrambi gen_servers uso per legare alla porta di ascolto e poi deporre le uova un processo non supervisionato per gestire una nuova connessione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top