2011-06-05 5 views
6

Dispondré de aplicaciones nativas para iPhone y Android, y más adelante un sitio web móvil (para otras plataformas móviles), todas dirigidas a un back-end que administre usuarios, configuraciones, videos, gráficos sociales, etc. También tendré una web dinámica sitio con una gran cantidad de videos, fotos y administración de gráficos sociales. El sitio web básicamente será una versión más funcional de las aplicaciones en los teléfonos. El back-end consiste en almacenamiento de video, transcodificación, un motor de recomendación de video, opciones para compartir el video con su red.¿Cuál es la mejor tecnología para apoyar aplicaciones móviles y un sitio web desde el mismo back-end?

Mi idea es que debería crear una capa común de servicios de aplicaciones que exponga una API REST que devuelva JSON, y que las aplicaciones y el sitio web hablen con esta API.

Mi pregunta es si debo mantener el sitio web y los servicios en una sola tecnología o usar Java para la capa de servicios, y Rails o Python para que el sitio web aproveche su supuesto tiempo de desarrollo más rápido. El sitio tendrá una gran cantidad de JavaScript y AJAX para soportar el comportamiento dinámico. Si utilizo Rails o Python, ¿deberían también hablar REST/JSON a la capa de servicios? En términos de implementación y administración de escala, parecería que seguir con una tecnología como Java para todas las piezas de back-end podría ser mejor; pero, por otro lado, Rails y Python prometen tiempos de desarrollo y mantenimiento más rápidos para la capa web. Si uso Rails para el nivel web, ¿tendría sentido implementarlo en JRuby dentro de la misma JVM que la capa de servicios para tener menos partes móviles para administrar en el servidor web/de aplicaciones?

El sitio puede crecer a millones de usuarios y videos. El equipo de desarrollo tiene experiencia en Java, con algo de Python, pero son inteligentes y pueden aprender rápidamente otras tecnologías.

Siéntase libre de sugerir la pila de tecnología de su elección.

+1

Esto es muy subjetivo y demasiado amplio; Estás preguntando algo en lo que muchas empresas basan su negocio y han evolucionado durante más de una década; el móvil no sucedió con el iPhone, simplemente se volvió mucho más complejo por eso. – Esko

+1

Comprendo de dónde viene Archie. A pesar de que otras compañías han evolucionado esto, es útil intentar implementarlo correctamente desde el principio. Los errores arquitectónicos cuestan una tonelada de dinero para arreglar. Estoy aquí 2 años después buscando las respuestas a la misma pregunta. –

Respuesta

1

Éstos son algunos consejos basados ​​en mi experiencia:

  • crear una capa de API para su API JSON. Utilice Spring MVC o JAX-RS allí
  • para el front-end web puede usar griales - combina las fortalezas de lenguajes dinámicos como ruby ​​y python con la potencia de la JVM y la pila java.
  • puede optar por utilizar solo su API de su sitio, o exponer solo algunas de las funciones a través de la API y usar el resto internamente.
  • para comunicación interna intente no agregar sobrecarga - puede comenzar con clases de servicio simples (por ejemplo, granos de primavera). Exponerlos como servicios web es dañino, imo. Sí, parece que sus módulos están desacoplados, pero dificulta la flexibilidad. Dado que los servicios son apátridas, se pueden invocar desde cualquier lugar, por lo que puede activarlos fácilmente e invocarlos en la misma JVM que la aplicación Grails.
+0

Bozho, gracias por una respuesta útil. Tengo algunas preguntas de seguimiento basadas en su respuesta: – archie65

+0

Usted dice usar Spring MVC "o" JAX-RS. ¿Tiene que ser uno o el otro? ¿Son tecnologías equivalentes? He considerado usar Jersey para exponer una API REST de Java usando JAX-RS. ¿Spring MVC también permite exponer una API REST JSON? Para el sitio, ¿me estás recomendando que llame a los Spring Beans de Grails? ¿Por qué crees que exponerlos como servicios web dificulta la flexibilidad?Si un servicio necesita ser utilizado tanto por el móvil como por el sitio web, ¿tendré un servicio Bean Y un contenedor REST? ¿Qué piensas de jRuby? – archie65

+0

sí, spring mvc permite exponer REST JSON API. Puede usar la primavera con maillot y la primavera con mvc de muelles (spring mvc es un armazón separado) – Bozho

Cuestiones relacionadas