¿Cuáles son algunos patrones de diseño importantes que han utilizado los marcos web?

La capacidad de interceptar todas las solicitudes y respuestas HTTP que fluyen a través del código en un lugar centralizado se usa ampliamente para

a) registro,

b) configurar universalmente los indicadores que son únicos en todo el sistema, por ejemplo, config,

c) depuración e instrumentación.

Django / WSGI middleware. Casi todas las especificaciones de framework o puerta de enlace del servidor web ofrecen una forma u otra para lograr esto.

En segundo lugar. En la comunicación tradicional entre procesos, hemos compartido memoria a la que se accede a través de todos los procesos en una sola máquina. Junto con cerraduras para guardar guardando tiene un caché. La API de caché de bajo nivel de Django es un ejemplo de este tipo sin ningún soporte de almacenamiento en caché, es decir, redis, memcached, respaldo de archivos, etc.

Un caché que caduca automáticamente junto con un middleware de solicitud y respuesta sirve para resolver casos de uso interesantes de recarga de configuración en vivo (aunque no es sincrónica en todas las instancias en ejecución de su proceso de aplicación web), apagado / pausa / mantenimiento elegante, almacenando un conjunto finito de los últimos N errores encontrado durante el ciclo de solicitud-respuesta, registro por lotes de errores / problemas de rendimiento en una solicitud de URL interna.

Encuentro las señales de Django bastante bien pensadas y bien implementadas. ¡Y también increíblemente útil!

En resumen, Django incluye un despachador de señal que permite que ciertos remitentes notifiquen a un conjunto de receptores que se ha producido alguna acción. Es un patrón de diseño muy útil para crear aplicaciones con lógica desacoplada, cuando necesita activar múltiples acciones al ver el mismo evento.

AngularJS también proporciona servicios como $ broadcast y $ emit para enviar señales y $ on para registrar devoluciones de llamadas para esas señales. Este patrón es especialmente útil al diseñar interfaces de usuario complejas.