2012-09-24 15 views
8

Para construir api para una aplicación a gran escala, ¿qué método es mejor interms de rendimiento? ¿Debo usar Rabl, Jbuilder o construir objetos json manualmente? Estoy construyendo api/endpoints para aplicaciones móviles.Rabl, Jbuilder o manual json build for api?

Respuesta

17

En términos de rendimiento, debe intentar crear algunas pruebas de rendimiento básicas y perfilarlas.

Asuma que la parte más complicada de las asociaciones de modelos de su aplicación es su punto más débil en términos de capacidad de respuesta y diseñe su prueba al respecto.

En general, hay algunas otras cosas que debe tener en cuenta.

  • as_json anulaciones obtendrán rápidamente de la mano en sus modelos, y se convierten en una parte frágil de su aplicación. Muchas personas consideran una API como una vista y, por lo tanto, la lógica para ello debe separarse del Modelo, para que sea flexible/intercambiable y comprobable. Esta es la principal ventaja de JBuilder y RABL. Finalmente, incluso una simple API JSON construida con as_json pedirá refactorización cuando sea necesario ampliarla, por lo que probablemente valga la pena la complejidad inicial de aprendizaje/uso de una DSL. Dicho esto, ciertamente hay algunos casos en los que está perfectamente bien usar as_json; solo debe tener en cuenta los problemas de escalabilidad y mantenimiento.

  • Jbuilder solía tener un rendimiento bastante pobre, sin embargo, esto se mejoró mucho más o menos al mismo tiempo que esta pregunta se publicó por primera vez. Antes de eso, RABL era mucho más eficiente. En este punto, Jbuilder es un toque más rápido.

  • El DSL de RABL es generalmente menos favorecido que el de Jbuilder, puede ser una dificultad para comenzar y en el mantenimiento posterior. El DSL de Jbuilder es generalmente más simple y fácil de aprender/usar, en ambos casos YMMV, pero el consenso general parece ser que Jbuilder es más fácil de usar y ejecutar.

Dado que esta cuestión es de 5 meses de edad, lo siento, no lo vi antes, espero que hace mucho tiempo ha sido tomado la decisión.

+0

¡Gran idea! ¡Gracias! –

+0

Después de haber usado JBuilder mucho más que RABL, debo dejar en claro que también estoy un poco predispuesto hacia eso. – ocodo

+0

Dado que tengo una API muy básica, ¿sería malo si acabo de utilizar un application_controller.rb con una ruta personalizada para cada llamada API? –

0

Sugiero Jbuilder. Porque Jbuilder tiene un desarrollo central de Rails. Por lo tanto, en el momento de la actualización no puede crear un problema.