ventajas tutorial funciona español ejemplos desventajas definicion como caracteristicas javascript scala architecture playframework lift

tutorial - Levanta, juega! o BlueEyes(con un montón de marcos de Javascript)



javascript tutorial (7)

Me encuentro en un poco de enigma. Estoy construyendo una aplicación nueva y moderna basada en la web y no solo tengo que elegir una tecnología, sino que debo elegir una arquitectura. Creo que es justo decir que en estos días es una decisión difícil porque tenemos más opciones que hace 5 años.

Lo primero es lo primero, tomé la decisión de que Scala será el lenguaje del lado del servidor. Tengo mis razones, y esto no es una publicación de Scala contra XYZ, se ha hecho esa elección. También he aceptado el hecho de que estamos en la web, en la nube, por lo que ni siquiera voy a intentar alejarme de Javascript. Tal vez lo haga con CoffeeScript, pero estaré escribiendo código alojado en el navegador.

Ahora, suponiendo que Scala, la mayoría de la gente probablemente saltaría a cualquiera de los dos Play! o Lift . Probablemente jugar! dado que cuenta con el respaldo de Typesafe , pero creo que tengo otra pregunta más importante que debe responder primero. ¿Qué es la arquitectura ? Si quiero un cliente muy rico, ¿realmente necesito más que una simple capa de servicio sin estado basada en el hecho de que tendremos una tonelada de Javascript de todos modos? No estoy seguro de que sea una aplicación web de una sola página, pero ¿es algo como BlueEyes potencialmente la elección correcta? Levanta y juega! son mucho más pesados, ya que asumen mucha más responsabilidad. Generan el HTML y para estos marcos, el navegador es bastante tonto. Cosas como el enrutamiento, la validación, el soporte Ajax y Comet son todas preocupaciones del lado del servidor. Debido a que el navegador es más capaz hoy en día, las funciones ricas e interactivas se implementan normalmente generando e inyectando Javascript desde el servidor.

Mi pregunta se reduce a esto. ¡Voy con un Lift / Play tradicional! ¿el marco donde el servidor asume la responsabilidad tanto del cliente como del servidor o voy con una capa de servicio al estilo de cliente rico + REST donde el cliente asume un papel más prominente en la aplicación? Una arquitectura en la que el cliente se ocupa del enrutamiento, la validación, el enlace, etc. Veo marcos como KnockOut.js , Sammy.js , Sproutcore , Backbone.js , ... No los voy a enumerar todos, pero son suficientes para digamos que todos adoptan algunas de estas características del marco desde una perspectiva del lado del cliente.

Si elijo Reproducir, ¿estoy renunciando a parte de esa rica interfaz de usuario? ¿Qué sucede con las situaciones en las que deseo proporcionar servicios API para la integración / mashup / móvil? ¡Cómo jugaría! ayudame aqui Claramente BlueEyes juega bien aquí. Creo que necesito una capa de servicio independientemente.

Si elijo BlueEyes, ¿qué aspecto tiene mi código de cliente? ¿Cuántos de estos marcos basados ​​en Javascript necesito para darme lo que necesito? Todavía quiero la mayor parte de mi lógica de negocios en mi capa de servicio, pero el enrutamiento, la vinculación ... todo lo relacionado con la IU sería una preocupación del cliente.

No estoy seguro de que haya una respuesta correcta o incorrecta, pero creo que esta comunidad probablemente pueda orientarme en la dirección correcta.

También publiqué esto en mi blog en http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228


¿Qué es la arquitectura ?

¡Jugar! recomienda encarecidamente que su servidor use una arquitectura MVC, creando paquetes en un patrón estándar:

app/ controllers/ Application.scala views/ Application/ index.scala.html models/ public/ images/ stylesheets/ javascripts/

Esto hace que sea más fácil seguir la arquitectura que romperla.

No puedo hablar ni de Lift ni de BlueEyes, pero afaik ninguno de ellos fomenta una arquitectura tan fuertemente.


Si elijo Reproducir, ¿estoy renunciando a parte de esa rica interfaz de usuario?

¿Qué es exactamente lo que quieres decir con una interfaz de usuario rica? más javascript en la interfaz?

Si considera - HTML5 + CSS3 + jQuery como una interfaz de usuario enriquecida - entonces estos funcionan muy bien con cualquier "backend" (Lift / Play).

La otra cosa que tal vez quiera considerar es la madurez del marco. Como mencionó, Play 2.0 es compatible con Scala de forma nativa, cuenta con el respaldo de Typesafe y se está adoptando rápidamente. Además, puede exponer fácilmente los servicios REST y consumirlos en la interfaz (uno de sus requisitos).

Inclinándose hacia HTML5 + CSS3 + jQuery + Play 2.0 :)

solo mis pensamientos ..


Definitivamente, eche un vistazo a http://twitter.github.com/finagle antes de tomar una decisión. Finagle puede hacerse cargo de la mayoría de las cosas de tu backend. Se diseña en torno a una arquitectura muy flexible que separa las preocupaciones de forma inteligente mediante el uso de filtros.


He mirado Apache Click, Wicket, un poco Lift (siento un poco como Wicket), y luego juego 1.2.4. Hasta ahora todo bien con Play. Realmente hermoso enfoque para el desarrollo web. ¡Sigan con el buen trabajo, jueguen! equipo.


La Play 2.0 Beta contiene una aplicación de ejemplo que es exactamente lo que está buscando (ZenContacts). El lado del servidor es solo un grupo de interfaces relajadas, mientras que el lado del cliente aprovecha el coffeescript, etc. para crear una interfaz de usuario enriquecida.


Por lo que yo sé, ambos juegan! y Lift se puede usar básicamente como un "back-end", y puedes usar HTML5 + CSS + JS como tu "front-end"; no necesariamente restringen su capacidad para crear el extremo delantero que desea, por lo que rechazarlos por esa razón sería una tontería. Observe que cosas como knockout.js anuncian que "funcionan con cualquier marco web". Sin embargo, puede ser cierto que son más "pesados" de lo que necesita.

Nunca he oído hablar de BlueEyes antes, pero parece estar dirigido a un tipo particular de caso de uso. Si eso se ajusta a su factura, entonces probablemente será la solución más optimizada para su problema.

Pero si esto es algo que realmente planea poner en la web, "el enrutamiento, la validación, el enlace, etc." prácticamente deben ser manejados por el back-end; Simplemente no puedo imaginar que cualquiera de estas cosas (de manera segura) sea manejada por un código que se ejecuta en el navegador del cliente. Además, si sus usuarios eligen deshabilitar JavaScript, su sitio web sería completamente inutilizable.


Si todo lo que quieres es una API REST en el backend, entonces Lift, Play! o Blueye funcionará bien. Pero solo señalaré las ventajas de usar Lift.

  1. No es cierto que Lift intente imponer ambos extremos, el delantero y el trasero. Apoyamos el uso exclusivo de REST de Lift y se fomenta para el proyecto correcto.
  2. Si bien Lift incluye jQuery y blueprint, puedes usar cualquier biblioteca javascript y css framework, actualmente hay muchas personas en la lista de correo que muestran cómo usan el boostrap de Twitter con Lift. Vea este módulo Lift que ayuda a integrar Bootstrap.
  3. Con Lift, puede comenzar sin estado, y si en el camino encuentra que sus necesidades cambian, puede ir a todo el estado. Incluso puedes mezclarlos y combinarlos en la misma aplicación.
  4. ¿Quieres una interfaz de usuario moderna? El soporte del cometa de Lift es uno, si no el mejor, por ahí. Muy simple de usar, probado y probado en muchos navegadores / cargas de trabajo. He escrito varias publicaciones que muestran el apoyo del cometa de Lift.
  5. Si decide utilizar Lift tanto para el extremo delantero como para el trasero, obtendrá de forma gratuita una aplicación que está protegida de forma predeterminada, sin necesidad de preocuparse por xss, xsrf o muchas de las 10 principales vulnerabilidades de seguridad OWASP.
  6. Necesita apoyo comercial, hay una lista creciente here
  7. ¿Necesitas entrenamiento? Hay un entrenamiento básico en Londres y el fundador de Lift también ofrece otras sesiones de entrenamiento.
  8. Hay varios libros sobre Lift disponibles. Lift in Action , Simply Lift y Exploring Lift
  9. Hay una community muy activa dispuesta a ayudar.
  10. ¿Quién usa Lift? Solo por nombrar algunos: Foursquare , OpenStudy , The Guardian UK , StackMob y muchos más.

Bueno, debería detenerme aquí, pero en resumen, Lift es un marco impresionante que tiene mucho que ofrecer, tomas tanto o tan poco como necesites.