2010-03-04 9 views
5

Actualmente estoy trabajando en un MMO basado en navegador y he elegido la pila LAMP debido al costo extremadamente bajo para empezar en producción (comparado con Windows + IIS + ASP.NET/C# + SQL Server, incluso aunque tengo MSDN Universal). Sin embargo, necesitaré un marco PHP para esto, ya que no es una tarea fácil. No estoy restringido por otra cosa que no sea la capacidad de ejecutar en Linux, ya que usaré una solución dedicada de alojamiento en la nube (y una imagen VMWare para el desarrollo) y puedo configurarla según sea necesario.Pregunta de estructura de PHP

En ningún orden específico:

  1. Tiene que ser fácilmente escalable; esto es crucial. Si el juego se convierte en un éxito constante, con el tiempo superará al servidor más allá de lo que proporciona el host y debería trasladarse a varios servidores con equilibrio de carga. Es crucial que esto se pueda hacer con el mínimo esfuerzo. Sé que esto podría requerir el seguimiento de convenciones estrictas, por lo que si conoce alguno para su marco sugerido, explique qué se necesitaría.
  2. Tiene que proporcionar módulos para todas las tareas principales: autenticación, ACL, acceso a bases de datos, MVC, etc. Uno o dos módulos faltantes están bien, siempre que puedan escribirse e integrarse fácilmente.
  3. Debe admitir la internacionalización. Creo que no hay excusa para que ningún framework web proporcione medios para traducir la aplicación y cambiar de idioma sin un gran esfuerzo por parte del programador.
  4. Debe contar con un muy buen soporte de la comunidad y, preferiblemente, soporte comercial también. Sí, sé que QCodo/QCubed es muy agradable, pero no está lo suficientemente maduro para esta tarea.
  5. Se requiere compatibilidad suave con AJAX. Si el marco viene con widgets compatibles con AJAX o tiene una manera fácil de agregar AJAX no es relevante, siempre que AJAX sea fácilmente factible. Planeo usar jQuery + Dojo o uno solo, no estoy seguro.
  6. Hacer cosas de forma auto-mágica cuando mejora la legibilidad y alivia mucho esfuerzo sería especialmente bueno si generalmente es confiable y no interfiere con otros requisitos. Este parece ser el caso de CakePHP.

He leído muchas comparaciones y sé que es un debate muy candente. La respuesta general es "prueba y ve por ti mismo lo que más te convenga". Sin embargo, no puedo decir que sea fácil para esta tarea y estoy pidiendo su experiencia en la creación de aplicaciones con requisitos similares. Hasta ahora estoy entre Zend y CakePHP por los criterios generales, sin embargo, todos los marcos bien conocidos ofrecen la misma funcionalidad de una manera u otra con diferentes enfoques, cada uno con sus propias ventajas y desventajas.

ediciones:

  1. soy un poco nuevo a MVC, sin embargo, estoy dispuesto a aprenderlo y no me importa si un marco es más fácil para los nuevos en MVC. Tengo mucho tiempo para aprender MVC y otras arquitecturas (o como se llamen) que recomiendas.
  2. Utilizaré Zend como un "framework" de utilidad, a pesar de que es solo una colección de librerías (aunque algunas buenas, como me han dicho).
  3. Los contendientes actuales de PHP son: CakePHP, Kohana, Zend solo.
+0

¿Por qué llamas ZF un marco de utilidad? No es solo una colección de bibliotecas. Es un marco débilmente acoplado, lo que significa que puede usar todas sus clases por separado, pero juntas forman un marco sólido que puede ser (y es) utilizado para desarrollar rápidamente aplicaciones web grandes y complejas. –

+0

Su interfaz débilmente acoplada combinada con su configuración-sobre-convencional hace que sea más un marco de utilidad a mis ojos. Es solo una opinión. – CMircea

+0

Algo para leer: http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/ –

Respuesta

2

La ampliación no es un problema que puede esperar que se resuelva un marco web. Incluso los MMO exitosos con presupuestos casi ilimitados han recurrido a sharding y instancias. El mejor enfoque es diseñar su aplicación para que sea modular. A medida que surja la necesidad, puede mover las funciones principales a servidores separados. El chat, el inventario y las subastas son en gran parte características independientes y no necesitan alojarse en el mismo servidor, por ejemplo. Para evitar ciertas vulnerabilidades en el juego, necesitará un servicio de mensajería entre sus servidores, y ninguno de los principales marcos web lo proporciona.

El talón de Aquiles en los frameworks web de PHP es la falta de memoria persistente. CakePHP es tan lento porque todo el framework web debe reiniciarse para cada solicitud. Los cachés de código de operación como APC solo eliminan la necesidad de analizar los archivos fuente de PHP.

Me gustaría sugerir fuertemente que se tiene en cuenta los marcos web en otros idiomas. Python, Ruby y Java son excelentes opciones. Todos estos lenguajes se ejecutarán en servidores Linux de bajo costo y no sufren la limitación anterior.

+1

He elegido PHP como el mejor para mí, porque: 1) Encuentro que Java es horrible en muchos aspectos. No puedes evitarlo 2) Python es molesto como el infierno con su sangría; Vengo de C++. 3) Ruby nunca deja de sorprenderme con su facilidad para confundirme. – CMircea

+0

Además, hay un experimento que va a ejecutar PHP en .NET como cualquier otro idioma y el estado actual parece muy prometedor. Aunque si el juego se vuelve popular y la gestión de esa carga se vuelve demasiado engorrosa, podría ensuciarme las manos y codificar lo maldito en C++/Qt o C++/CLI en .NET como un módulo FastCGI. – CMircea

+0

Vengo de C++ también, y todos los idiomas que mencioné han crecido en mí con un poco de experiencia. Por otro lado, trabajo con PHP todos los días y he llegado a disgustar bastante. – Matthew

4

Veo que ha mirado a Zend y CakePHP, pero me gustaría señalarle una dirección diferente.

http://kohanaphp.org/

Kohana es lo que yo usaría si estoy todavía estaba usando PHP. Tomaron CodeIgniter y lo bifurcaron de una manera que hace que php se sienta mucho menos basado en archivos y mucho más basado en objetos. Tienen una gran solución de plantillas, y también tienen módulos para todo lo que discutiste excepto ACL (no sé qué es eso, así que tal vez sí lo tengan).

De todos modos, creo que vale la pena echarle un vistazo.

En escalabilidad
Me di cuenta de algunas conversaciones sobre la velocidad. Aunque creo que Kohana manejó las cosas muy rápido para nosotros, no creo que esto tenga mucho que ver con el marco, ya que tiene que ver con otras herramientas.

Primero he aumentado la velocidad en muchas de mis aplicaciones de php al soltar apache para nginx. Nginx con PHP ejecutándose como fastcgi es mucho más liviano y con tiempos de carga realmente mayores para http://ukclasslist.com. Todavía usamos Apache localmente y la copia que se ejecuta en nuestro servidor es más rápida que nuestra versión local.

Si todavía tiene problemas con la velocidad, especialmente con la captura de grandes cantidades de datos, debe buscar en Memcache.

+0

¿Qué estás usando ahora en lugar de PHP? – Omar

+0

He mirado Kohana, básicamente es un CodeIgniter mejorado. TBH todos los marcos pueden manejar muy bien mi tarea, pero tengo dificultades para decidir cuál sería la mejor para mi tarea. – CMircea

+0

@Baddie: ¿RoR? ASP.NET? JSP? Mucha variedad. – CMircea

0

En primer lugar, este es un buen recurso en marcos de PHP:

http://www.phpframeworks.com/

que puede conseguir en la idea facilidad que existe una buena comparación de allí.

En segundo lugar, no te recomiendo que pasar por este gran tutorial sobre MVC en phpro.org:

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

+0

Gracias por el tutorial de MVC, comenzaré a leerlo. Se ve muy bien a primera vista. – CMircea

+0

@iconiK: gracias ......... – Sarfraz

0

CodeIgniter es un marco increíble que tiene un buen apoyo de la comunidad y puede escalar bien también. Además, no es necesario tener acceso de shell para implementar la aplicación. Y la integración de MVC hace que escribir aplicaciones sea realmente fácil.

+0

Esta es la alabanza general de un marco que vi en otras preguntas, que no es lo que estoy buscando. Estoy familiarizado con las ventajas de CodeIgniter y el hecho de que es bueno para el alojamiento compartido, pero tengo todo un VPS a mi disposición, ninguno de ellos importa más. – CMircea

+0

¿qué necesita el acceso al shell? – WalterJ89

+0

1 era escalabilidad: CI tiene esto más que otros marcos –

0

Actualmente puede tener tanto CakePHP como Zend Framework en uno. Zend Framework está un poco más cerca de una biblioteca que cualquier otra cosa. Por lo tanto, no es difícil utilizar las bibliotecas de Zend en Cakephp. Lo mejor de ambos mundos.

here is an example de un componente o controlador para hacerlo.

También parece que la proformancia sería muy importante. usted puede encontrar este interesante http://avnetlabs.com/php/php-framework-comparison-benchmarks

En cuanto a escalabilidad maybe this question can help

+0

CakePHP es lento, lo sé. No, espera, no lento. Muerte lenta. Lento como el infierno! – CMircea

3

estoy pesonally fan de Kohana. Tengo CodeIgniter antes de esto y Kohana (como yo lo veo) es esencialmente todo lo bueno en CodeIgniter sin muchas de las limitaciones. v3 es la última versión de Kohana y es más robusta y flexible que v2.

El rendimiento varía según la forma en que utilice un marco y sus fortalezas y debilidades inherentes en comparación con otros marcos. Su mejor opción es usar APC (que pronto formará parte de PHP 6) o eAccellerator para almacenar en caché los scripts PHP compilados.

1

Probar Agavi. Simplemente el mejor framework de PHP que hay. Tiene todo lo que necesita y puede extender, configurar o cambiar la implementación de las clases principales a través de fábrica.

Entornos libremente definibles (desarrollo, montaje, producción, etc.), contextos (web, SOAP, consola, etc.), tipos de salida (conjunto personalizado de procesadores con diseños/capas/ranuras/parámetros/encabezados HTTP) como HTML, JSON, PDF o $ WHATEVER y simplemente el mejor sistema de enrutamiento.

Utiliza XML para la configuración y realmente hace USE de ella con archivos principales, validación de esquema y XIncludes. Buen sistema de validación de entrada con validación estricta siendo el valor predeterminado (y no solo para GET/POST, sino también para todas las demás entradas, como encabezados, archivos y cookies). Agregue algunas sutilezas i18n/i10n y magia SOAP integrada y tendrá el marco PHP más flexible y potente disponible (no "web", solo framework).

Un poco corto en la documentación, pero tiene la única verdadera aplicación MVC en comparación con Kohana, CakePHP, Zend y todos esos otros marcos ... sólo echar un vistazo a él y hacer preguntas en el IRC o el usuario lista de correo. Después de una curva de aprendizaje pronunciada, es la última vez que echó un vistazo a otros marcos (PHP) durante mucho tiempo. :-)

+0

Olvidé mencionar muchas cosas como el almacenamiento en caché, ranuras (conjuntos de acciones/vistas/plantillas/validaciones/caché), pruebas y módulos y probablemente muchos otros cosas. Symfony y Agavi están basados ​​en el mismo proyecto (mojavi) y Symfony2 va mucho en dirección a Agavi en términos de algunas características básicas (como configuraciones XML, solo tragamonedas, PHPUnit, diseños personalizados, etc.). Parece que los chicos de Agavi tienen un punto en alguna parte. :-) – asdf

+0

No me gustan los archivos de configuración XML honestamente. Son demasiado detallados. Prefiero los archivos de configuración de matriz de Zend Framework. Para los tipos de salida, solo necesito HTML y JSON, y eso no es un problema en ningún framework. MVC no es un problema en ninguno de los marcos que conozco y no veo nada diferente en Agavi a este respecto. Sin embargo, parece bastante bonito, así que lo echaré un vistazo. – CMircea