2009-11-18 19 views
6

Quiero saber qué desarrolladores de estrategias de arquitectura php usan en aplicaciones complejas de php. Hasta ahora, conozco la estructura de mvc que consiste en modelos, vistas y controlador (y complementos de controlador que se manejan con tareas comunes como el controlador de acceso de usuario). Conozco algunos buenos frameworks php que hacen que algunos productos comunes sean más fáciles. Pero el problema comienza cuando pienso en aplicaciones php enormes y complejas. porque en estas aplicaciones hay muchas cosas que hacer o muchas que pensar para verificar, por lo que no puedo decidir qué código debería estar.Arquitectura de aplicaciones php muy complejas?

Piense en la aplicación de Magento, esto es muy grande aplicación. cuando reviso el código fuente de la aplicación, no puedo entender la estrategia de diseño. Sé que hay algunas estrategias de diseño perfecto que puede manejar aplicaciones muy grandes php fácilmente, porque no pueden construir una gran aplicación de este tipo con una estrategia de diseño muy débil .La estrategia de diseño debe apoyar más de lo que desea, para que pueda mejorar su código y aplicación de forma sencilla

en resumen, quiero ¿Cómo puedo crear aplicaciones más grandes. Ahora las estrategias de diseño que uso en mis aplicaciones me limitan, así que no puedo crear aplicaciones más complejas. Quiero saber cuál estrategia de diseño puede manejar aplicaciones complejas.

sé que esta es una pregunta muy abstracta, pero esto se debe a que ahora mi experiencia en php proviene de aficiones no académicas. Quiero hacer más, pero estoy en un lugar donde no puedo dar un paso más, porque no puedo encontrar información más compleja sobre la codificación. lo que sea, para resumir, quiero saber sobre estrategias de diseño para aplicaciones complejas de php como magento.

Tal vez las estrategias de diseño que sé (MVC, los marcos torta ci ...) puede manejar las aplicaciones más complejas de lo que pienso ..

si hay algunos errores en mi pregunta no dude para corregirlos, lo siento por mi Inglés inadecuada ..

Respuesta

7

Creo que parte de su problema puede residir en el hecho de que la creación de aplicaciones empresariales es un problema en cualquier idioma, y ​​los patrones de diseño que se pueden implementar son realmente independientes del idioma.

Recomiendo encarecidamente que se familiarice con Patrones de arquitectura de aplicaciones empresariales de Martin Fowler. Este es el trabajo seminal para cualquier otro libro que más adelante pueda retomar y que cubra los mismos conceptos en un formato específico de idioma, y ​​si realmente quiere comprender lo que se requiere para crear aplicaciones robustas y escalables en la web, entonces necesitará para familiarizarte con este libro.

Una estrategia de diseño muy común y popular con aplicaciones web en este momento es el paradigma Modelo-Vista-Controlador. Esto tiene que ver completamente con la separación de preocupaciones en su aplicación para que no mezcle el código de acceso a la base de datos con la salida html.

Para un tratamiento bastante bueno del tema, le sugiero que mire here (Zend Framework específico pero cubre bien el tema general) y here para una discusión sobre Modelos específicamente. O si desea consultar un tutorial PHP MVC más generalizado, Rasmus Lerdorf tiene one.

Además de esto (y nuevamente puede aprender esto de PofEAA por Martin Fowler) tendrá que aprender acerca de Mapeo Relacional de Objetos cuáles son las fortalezas y debilidades de los diversos patrones de diseño.

Desafortunadamente, hay muchas maneras de hacer las cosas según sus necesidades, pero para cada buena forma hay un trillón de maneras terriblemente incorrectas para ellos.

+0

Gracias por su respuesta.el enlace que me diste es muy útil para mí. acabo de entender mi punto más débil, mi problema es el problema del "controlador gordo = modelo + controlador". Creo que lo que limita mis aplicaciones es que no tengo ningún modelo "útil", mis modelos son solo clases vacías con el adaptador de base de datos del marco, y Tengo enormes controladores que tienen toda la lógica. Así que creo que tengo que crear modelos reales –

+0

. Pero no estoy seguro de por qué necesito crear una acción modelo específica (por ejemplo, la acción de registro del modelo de usuario), incluso si la usaré en solo 1 controlador. Una razón por la que puedo encontrar es probar capacidades. si el modelo de usuario tiene un método de registro, puedo probarlo. si tiene más información que puede ser útil para mí, quiero aprender. Gracias de nuevo –

+0

@Oguz - ¿Está familiarizado con Do not Repeat Yourself, Single Responsibility Principle o encapsulation, ya que se relacionan con la Programación Orientada a Objetos? –

1

de hecho, es cuestión muy abstracto y "muy complejo" no es muy específico. Cuando escucho a la gente hablar acerca de las aplicaciones "complejos" que lo asocian con

a) Alguien está usando una arquitectura compleja para un problema simple. P.ej. usando cada patrón de diseño y marco que sonaba genial.

b) Alguien intentó aplastar toneladas de un uso completamente diferente en una aplicación históricamente desarrollada, creando y usando interfaces patentadas e indocumentadas y acoplando todo lo más estrechamente posible. Desafortunadamente, CAN puede crear enormes aplicaciones con una mala estrategia de diseño y eso es lo que las hace complejas.

c) sistemas heredados y la integración del sistema Legacy (ok ver b)

Magento puede haber una gran aplicación, pero el marco subyacente es todavía el Zend Framework, principalmente su parte MVC. Así que leer la documentación de Zend_Framework te ayudará mucho a entender la arquitectura de Magentos también (no lo recomendaré al revés tratando de profundizar en el Zend Framework a través de la fuente de Magento). Yo recomendaría empezar a construir una aplicación más grande con uno de los frameworks MVC usted mismo, porque esa es la mejor manera de aprender la arquitectura y sus beneficios y dónde están los límites.

2

Qué marcos has examinado? Examine Symfony, Zend Framework y CakePHP si aún no lo ha hecho. Y al examinar, me refiero en realidad a escribir aplicaciones de tamaño mediano usando estos marcos. Simplemente leer el código a menudo no es suficiente para comprender cómo funciona. A menudo tiene que usarlo e intentar modificarlo.

Es posible que también desee consultar el libro PHP 5 Objects Patterns and Practice para conocer algunas ideas de estrategias de diseño que puede aplicar a su aplicación. También puede aprender bastante estudiando marcos escritos en otros idiomas. Los diseñadores de muchos de los frameworks de PHP estaban fuertemente inspirados por Ruby on Rails, por ejemplo.

1

Si aún no lo ha hecho, debería consultar la Programación Orientada a Objetos. Hay un gran tutorial sobre eso here. Creo que esto es quizás lo más importante que hacen las aplicaciones web grandes que no es necesariamente intuitivo para el aficionado (incluido yo mismo). El truco en los frameworks MVC como Code Igniter es construir una serie de clases (u objetos) como modelos o bibliotecas.

+0

¿Mencionaría patrones de diseño si no supiera OOP? – MiseryIndex

0

Bueno, incluso si su pregunta es todo acerca de PHP ... Si maneja su contenido estático como las imágenes con PHP, tendrá un rendimiento bajo, sin importar si utiliza MVC o no. Deberías usar front end como nginx para tales cosas.

mira http://highscalability.com/ historias reales de la vida real!

También tenga en cuenta NoSQL.

0

Intenté comprender su problema y encontré que la arquitectura de magento es muy potente pero complicada. Obtuve una solución por Zendfox, es un marco de aplicación web, adecuado para el desarrollo de aplicaciones pequeñas o grandes. Tiene una arquitectura de aplicación muy linda que puede administrarse muy fácilmente. También cuenta con un desarrollador de módulos para crear módulos personalizados para Zendfox en pocos minutos con la herramienta basada en el asistente.

Así que echar un vistazo a: http://www.zendfox.com

Cuestiones relacionadas