Srikanth tiene una buena respuesta. Me gustaría elaborar sobre la alternativa, sin embargo. Suponga que tiene esta jerarquía simple URL:
/gallery
/blog
/admin/login
/admin/newpost
Si esto se lleva a cabo con los controladores de página (PHP, por ejemplo), tanto gallery.php
y blog.php
tendrá que incluir alguna common.php
al principio (o cerca). Sin embargo, tanto login.php
como newpost.php
pueden incluir admin-common.php
, que a su vez extrae 'common.php' y '/ admin /' - configuración específica, como verificar que el usuario esté autenticado.
En general, si tiene una jerarquía de URL, termina pareciéndose mucho a los árboles de herencia de objetos. Excepto que en lugar de usar herencia a nivel de lenguaje, heredará el entorno de cualquier foo-common.php
que incluya.
No puedo imaginarme cómo un Controlador frontal está aumentando la capacidad de prueba. Al final, se requieren exactamente las mismas pruebas de un agente de usuario HTTP automatizado, independientemente de la implementación.
Una de las desventajas principales de Page Controllers es que hace que su aplicación web dependa de su entorno de alojamiento.También obliga a los desarrolladores a "ver" la misma estructura que los usuarios finales, pero considero que es algo bueno, teniendo en cuenta la cantidad de sitios que veo que tienen URL absolutamente atroces.
"No es posible escalar una aplicación usando un controlador frontal." Esto parece evidente solo por la forma en que se debe asignar URI a las clases, pero ¿cuánto mejor va a funcionar el PHP sin formato una vez que se han considerado el acceso a datos y la E/S? –
@FredWilson Mi punto sobre la escala es que si usa un controlador frontal significa que cada solicitud va a un único punto de entrada en todos los servidores. Si tiene puntos de entrada separados para cada parte de una aplicación, puede escalar cada pieza individualmente, p. Ej. una aplicación de correo: podría asignar más servidores a read-email.php que send-email.php ya que las personas generalmente leerán el correo electrónico con más frecuencia que el envío. Esto no se puede lograr con un controlador frontal, debería escalar todas las eventualidades juntas. – Pete
¿Esta información sigue siendo relevante? Los marcos como Laravel, Zend Framework, Expressive y muchos otros parecen estar usando el patrón de controlador frontal exclusivamente y el enrutamiento directo al archivo se llama "obsoleto". (Https://stackoverflow.com/questions/48079853/what- are-these-routing-styles-called-in-a-web-application? noredirect = 1 # comment83133888_48079853) – Dennis