Pregunta

Después de leer el libro de Joe Armstrong y ver los screencasts de Kevin Smith, creé una aplicación OTP simple compuesta por un único gen_server y un único supervisor, agrupados como una aplicación OTP.

Ahora estoy mirando mochiweb y he creado un proyecto de muestra [helloworld] usando el script new_mochiweb.erl.Al examinar el código fuente, veo que no es diferente de mi aplicación OTP de muestra [la aplicación OTP está allí, el supervisor está allí] con una diferencia clave...Los archivos helloworld.erl y helloworld_web.erl generados no implementan el comportamiento gen_server, son solo módulos estándar de Erlang.

Tenía la impresión de que usar gen_server era el camino recomendado a seguir al crear componentes de aplicaciones OTP.¿Por qué mochiweb podría utilizar la aplicación OTP y comportamientos de supervisor pero evitar gen_server?

¿Fue útil?

Solución

Hay un gen_server, llamado mochiweb_socket_server.Los módulos generados son sólo "módulos de devolución de llamada" para que se llame al gen_server al recibir una solicitud entrante.

Otros consejos

Se utiliza OTP / gen_servers para los procesos que se encuentran bajo una estrategia de reinicio -. es la reanudación de ellos está en su control

Ese no es el caso con los procesos que representan las conexiones a los navegadores web. Si ese proceso muere no hay manera para que el servidor se reinicie ella -. Por lo tanto, se ejecuta bajo OTP es inútil

Mochiweb (y frambesia) ambos gen_servers uso de unirse al puerto de escucha y luego desovar un proceso sin supervisión para manejar una nueva conexión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top