Quiero saber, ¿hay patrones de diseño para la web además de MVC?
Sé que hay patrones de diseño como: Registry, Observer, Factory, ActiveRecord, ... y MVC, un conjunto de otros patrones de diseño y estructura de carpetas.
¿Hay un patrón de diseño como MVC es un conjunto de otros patrones de diseño?
Editar: mi lenguaje de programación es PHP.
web-development
php
design-patterns
mvc
Saeed M.
fuente
fuente
Respuestas:
Existen diferentes patrones en el desarrollo de software; MVP, MVVM, MVC, etc. son algunos de los más conocidos. Sin embargo, debe definir el problema específico o la tecnología que tiene la intención de resolver o utilizar.
Cada uno de estos patrones es bueno para resolver algunos conjuntos específicos de problemas. Por ejemplo, el patrón MVP (Model View Presenter) ayuda a introducir la separación de preocupaciones en el desarrollo de ASP.NET WebForms. Consiste en dividir las responsabilidades de recopilar, mostrar y almacenar datos de una página web en objetos separados: un objeto Modelo, un objeto Ver y un objeto Presentador.
El libro de cocina general más famoso de los patrones de diseño son los patrones de diseño Gang of Four (GoF) .
Editar: supongo que está más interesado en implementar patrones de diseño en la plataforma .NET
fuente
Un buen patrón, que encontré hace unas semanas, es MOVE . Parece un poco más sofisticado como MVC, pero se basa en el mismo principio. Una desventaja de MVC es que sus controladores pueden ser realmente grandes. Usando el patrón MOVE, manejarás este problema un poco.
Otros patrones, nombrados por los demás, también son buenas alternativas.
fuente
Lo primero que debe establecer es lo que debe hacer exactamente, para decidir si un marco y / o MVC (u otro patrón de diseño) sería beneficioso.
Los marcos están ahí para proporcionar una plataforma consistente para el desarrollo, mientras que generalmente proporcionan soluciones a los requisitos de programación comunes (como la interacción de la base de datos, la creación y validación de formularios, la autenticación de usuarios, etc.)
Para PHP, al menos, el patrón de diseño MVC / HMVC tiende a dominar los marcos principales disponibles (por ejemplo , Zend , CakePHP , CodeIgniter , etc.), pero hay muchos patrones de diseño diferentes que uno podría usar.
MVC es muy popular porque ofrece una forma establecida y entendida de separar el modelado de datos y la lógica de procesamiento de la capa de vista / presentación (algo que se considera deseable para producir aplicaciones robustas y escalables).
Es importante tener en cuenta (y como lo expresó @Marjan Venema en un comentario a la respuesta de @ ElYusubov) que MVC, MVP, MVVM y los otros patrones MV x son (al menos en principio) el mismo 'patrón de diseño'.
Por lo general, los patrones de diseño diferentes sirven (a menudo sutilmente) para diferentes propósitos y, en varios casos, se desarrollaron con un lenguaje específico en mente. Sin embargo, un verdadero "patrón de diseño" no es una regla difícil y rápida para la programación y es realmente más una comprensión filosófica / idealógica de la implementación de un programa y los requisitos de diseño y las funciones lógicas.
La investigación es la mejor manera de conocer los principales principios de programación y las mejores prácticas, aquí hay algunos enlaces de Wikipedia para comenzar:
En la práctica, no hay nada que le impida implementar su propio "patrón", en mi opinión, la mejor manera es aprender haciendo, al menos para mí no entendí completamente el patrón MVC hasta que comencé a intentar escribir un sitio web con él.
Una vez que comprenda algunos de los conceptos de programación y las mejores prácticas, puede usarlos para construir su propio sistema para resolver los problemas específicos que enfrenta y satisfacer sus necesidades, ya sea que se ajuste a un 'patrón' establecido o no.
Si no tiene un conjunto específico de problemas para resolver, entonces aprender uno de los marcos comunes es su mejor opción.
fuente
Uno de los ejemplos más famosos es Knockout.js, que es un marco de JavaScript que utiliza el patrón de diseño MVVM . Aquí hay un gran artículo sobre el desbordamiento de la pila que compara el framework MVC Backbone.js vs Knockout.js .
Una nota al margen es que el patrón de diseño MVVM se originó en Microsoft como una especialización del patrón de diseño PM de Martin Fowler. MVVM es utilizado ampliamente por las aplicaciones WPF.
fuente
Como señaló ElYusubov, el marco ASP.Net ha tenido durante mucho tiempo patrones MVP y MVVM, si está buscando ejemplos relativamente convencionales. Una de las principales diferencias entre MVC y MVVM es cómo se actualizan sus entidades; MVC se adapta mejor al enfoque tradicional sin estado o semi-sin estado de las aplicaciones web. El marco ASP.Net trató de solucionar esto manteniendo su estado incrustado en un formulario (para que pudiera restaurarse en cada solicitud), lo que hizo que los patrones MVP y MVVM tuvieran más sentido allí.
Con HTML5, las aplicaciones se vuelven cada vez más pesadas en JavaScript, y gran parte de su estado está en el cliente. Esto puede conducir a un resurgimiento en los marcos MVVM, y Knockout JS es un ejemplo.
fuente
La mayoría de los patrones en la naturaleza son MVC, o algún sabor de MVC. Después de todo, tiene sentido dividir sus datos (Modelo), la representación (Ver) y la interacción con ellos (Controlador). Si observa MVC tal como se fundó en los años 80, descubrirá que nunca fue un marco web. Por lo tanto, encontré que estaba muy sobrecargado en la web.
Otro patrón bien conocido sería la Arquitectura Orientada a Servicios (SOA). Basado en eso, un enfoque moderno sería tener un MVC (o sabor) en su servidor, solo para exponer un servicio con el que pueda trabajar. En el lado del cliente, habría otra aplicación de estilo MVC, por ejemplo, una aplicación web con HTML5 y JavaScript (Twitter o Linked In, por ejemplo). La aplicación cliente usaría su servicio del lado del servidor (la "Vista" del servidor) como su Modelo. En mi humilde opinión, esto sería lo último en tecnología y probablemente empujará al lado del servidor solo MVC a un lado.
fuente
Personalmente, estoy buscando implementar algo que use la idea de Representación de métodos de recursos , aunque en esta etapa es principalmente un experimento más que cualquier otra cosa. Tiene algunos puntos convincentes porque modela una solicitud / respuesta HTTP mejor que MVC (que está destinado a aplicaciones de larga duración que se ejecutan en una sola computadora en lugar de sesiones de solicitud / respuesta de corta duración). Sin embargo, tiene el inconveniente de que si coloca métodos en sus recursos para manejar GET, POST, PUT, DELETE, etc., sus recursos se acoplarán al front-end. Estoy pensando que voy a separar eso en otra capa.
fuente
Hay más de 1000 formas, excepto MVC, algunas de ellas son similares a MVC y algunas totalmente diferentes
por ejemplo :
etc.
fuente