framework - Sitio web versión 2, mantener en PHP o mover a.Net?
symfony frameworks php (8)
Tengo un sitio web creado en PHP 4 con un marco hecho a mano por mí. El código tiene 3 años y estoy limitado (bueno, requiere mucho esfuerzo hacer cambios).
Decidí hacer una nueva versión de este sitio web. Mi conocimiento ha aumentado desde entonces, y ahora sé que existen muchos frameworks y que IOC está ahí y ORM también ... El problema es que en toda mi investigación, no encuentro algo que me satisfaga por completo en PHP . Por otro lado, en mi trabajo (principalmente en .Net winform 2.0) veo muchas buenas soluciones de COI y otras posibles, y, creo que .Net es más maduro para desarrollar software con las mejores prácticas.
No he encontrado muchos buenos COI para PHP. En cuanto a ORM, he visto Propel, que se ve bien, pero tampoco he encontrado un Framework completo (la documentación de Symfony no está actualizada, contiene muchos errores, Zend parece demasiado grande, creo ...), etc.
¿Sugiere que simplemente pruebe otro marco y mantenga el sitio web en PHP, o sería una buena idea cambiar a .Net?
Razones de esta pregunta
- El sistema funciona pero ha empezado a desacelerarse (ya que tiene más usuarios). La base de datos está normalizada demasiado ... etc.
- El código no está mal, la lógica empresarial está separada del HTML, pero el problema es que los controladores están dentro de la vista, por lo que es cada vez más difícil hacer algunos cambios de diseño.
- No se han realizado pruebas unitarias, y es muy "estresante" hacer un cambio.
- No hay inicio de sesión en el sistema, y es difícil obtener una instantánea para ver si todo está funcionando correctamente.
Más información (agregado el 3 nov 2008)
- Lo sé .Net 2.0 esta es la razón por la que mi alternativa es .Net y no RoR.
- Estaba sugiriendo otro idioma, no para el tema de la velocidad, sino para la herramienta / marco disponible.
- Es lento debido a la normalización de la base de datos, demasiadas tablas que son geniales en teoría pero no en la práctica (¡aprendemos de nuestro error!)
- Es un hobby, pero lo tomo en serio porque tengo más de 25 000 usuarios registrados desde el principio (no todos activos).
Sugerencia actual de personas de aquí
Creo que guardaré lo que he hecho e intentaré refactorizar lentamente. Me sorprende que la mayoría de los votos hayan sido para mantener el sistema actual pero bien: P esto podría ser más simple para mí a corto plazo.
Thx to nickf quien tiene la ortografía revisa todo mi texto.
¿Y por qué te estás limitando a estas opciones? ¿Por qué no pruebas Ruby on Rails? ¡Tengo un ORM incorporado!
Dependiendo de la cantidad de código, puede ser una buena idea quedarse en PHP. Básicamente sería una reescritura completa si decidiera pasar a .Net. Debido a que usaría un marco completamente diferente, con un lenguaje completamente diferente, bajo un paradigma de desarrollo completamente diferente, no hay mucho que pueda traer con usted.
Para un buen PHP ORM, debes mirar Doctrine . Parece ser más fácil de instalar y escribir y tener una mejor documentación. La forma de escribir una consulta puede recordarte a LINQ.
En Zend Framework , es grande pero no es realmente relevante; todos los componentes son más o menos independientes. Es más una biblioteca que un marco monolítico como Cake PHP o ROR:
- No te gusta Zend_Db , puedes usar ZF + Doctrine .
- No te gusta Zend_Controller podrías probar CodeIgniter + Doctrine + ZF
Puede usar Zend_Openid sin usar la solución MVC de ZF .
También puede comenzar a usar Zend en su aplicación actual sin reescribir todo.
Recomiendo ASP.NET MVC con LINQ to SQL o LINQ a entidades como ORM.
Para responder a su información adicional, pasar de PHP 4 a PHP 5 es probablemente un momento de oro para reescribir su marco de trabajo para abordar algunos de los problemas que tiene.
También puede aprovechar la oportunidad para aumentar la separación de capas. Por ejemplo, dice que tiene algunas lentitudes, posiblemente relacionadas con la sobrenormalización. Bueno, si su marco está abstrayendo el acceso a los datos lo suficiente, debería poder agregar algo de almacenamiento en caché (como memcached) a esa capa y la aplicación no necesita saber nada.
También podría usar el mismo esfuerzo para agregar el registro de una manera bastante fácil. Si utiliza una capa de objeto, puede agregar el registro al almacenamiento de datos genérico y obtener una gran cantidad de registros de forma prácticamente gratuita.
Otras ralentizaciones pueden deberse a una indexación inadecuada de la base de datos. Y esto no está relacionado con tu marco. Si está utilizando MySQL, active el inicio de sesión lento de la consulta y ejecute EXPLAIN sobre algunos de ellos. Debería ver qué columnas necesitan indexación que no lo son.
PHP en sí mismo no es un lenguaje lento. La lentitud estará en otra parte. :-)
Si creaste todo el framework tú mismo, te sugiero que simplemente lo actualices para PHP 5 y sigas adelante desde allí. La mayoría del código PHP 4 "solo funcionará" en PHP 5; las excepciones son el código que usa las nuevas palabras reservadas, y el código que se basa en la forma en que PHP 4 difiere de PHP 5, lo que significa algunas cosas en las clases y referencias al borde de las capacidades de PHP 4.
Si es un proyecto de pasatiempo y te sientes un poco descontento con el estado actual del proyecto, diría: definitivamente prueba .net. Por la misma razón, sugeriría jsp o casi cualquier otro tipo de lenguaje / plataforma / tiempo de ejecución posible: la diversión y la experiencia. Incluso si después de un tiempo decides volver a php mantendrás la "nueva perspectiva" de cómo se pueden hacer las cosas. Por otro lado, puede ser difícil abandonar el código y los métodos antiguos. Una reescritura completa es difícil porque al principio pierdes todas las correcciones de errores, los pequeños retoques y los trucos, volviendo al punto uno. Y generalmente no obtienes exactamente el mismo resultado. Pero si va a construir una versión (mejorada) 2.0 de todos modos y quiere estirarse ... vaya, pruebe algo nuevo. Incluso si fallas, al menos tienes algo sobre lo que bloguear en tu sitio :)
editar: También sería posible exportar solo partes del código o desarrollar las nuevas funciones en .net, siempre que pueda "soportar" las dos bases de código separadas. Y también puede consultar http://www.codeplex.com/Phalanger , un compilador de .net para php. (No lo he intentado todavía)
Simplemente intentaría cambiar sección por sección lentamente a PHP5, tratar de mantenerme actualizado con el nuevo framework lentamente pero no reconstruir todo el sitio web (si es un sitio grande).
Para su problema con la base de datos, puede comenzar en un entorno de desarrollo para desnormalizar su base de datos donde sabe que es lenta.