scala wicket lift

Para mi próximo proyecto, una aplicación web, ¿debería usar scala+wicket o scala+lift?



(3)

He realizado varias webapps en Lift. Proveniente de un fondo de Java tradicional con un montón de Maven + JSF / Facelets + Spring + Hibernate, debo admitir que, aunque amo a Scala, me siento frustrado con algunas de las debilidades de Lift. En particular, creo que los fragmentos de código a menudo combinan las reglas de negocios con los detalles de la interfaz. Además, la implementación de pruebas unitarias integrales es muy difícil.

No estoy familiarizado con Wicket, pero en este momento estoy escribiendo una aplicación utilizando Play Framework. La compatibilidad con Scala funciona bastante bien y hay un módulo Akka. Akka es maravilloso para cualquier tipo de aplicación no trivial que necesite escalar.

El juego parece muy prometedor, aunque todavía está en desarrollo activo, la documentación también parece ser bastante buena. El marco CRUD es bueno para llegar a un estado funcional rápidamente o para crear una interfaz de administración simple para datos que no se cambiarán muy a menudo.

Dadas las diversas ventajas del lenguaje Scala, he decidido escribir mi próxima aplicación web en Scala. Sin embargo, ¿debería usar Wicket o Lift? Estoy familiarizado con Wicket, y me gusta bastante, pero sé muy poco acerca de Lift. ¿Aprender Lift vale el esfuerzo en este contexto?

En palabras de orden, ¿cómo se compara Lift con Wicket? Dado que la aplicación web estará en Scala, ¿podría usar Lift hacer mi vida como desarrollador más fácil?


Si te gusta Wicket, debes seguir con lo que sabes y te gusta. Wicket es un excelente marco web y hacer Scala & Wicket es muy bueno porque puedes usar los rasgos de Scala para componer clases en Wicket ... realmente reduce la diferencia frente a Java.

La elevación tiene fortalezas que Wicket no tiene:

  • Mucho mejor soporte Ajax. El soporte Ajax de Lift es mucho menos detallado que el de Wicket. Si va a hacer un montón de Ajax, aprender Lift podría ser valioso.
  • Cometa de apoyo. Si su aplicación tiene un componente de inserción de servidor, Lift ofrece un mejor soporte para cometas que cualquier otro marco web.
  • El ascensor es más parecido a Scala. Si viene de Java, entonces el uso de la combinación de patrones y el paso de funciones de Lift es una curva de aprendizaje.

En cuanto a los comentarios en este hilo, me gustaría estar en desacuerdo con algunas de las declaraciones hechas:

  • Lift no requiere que mezcle la presentación y la lógica empresarial. Hay toneladas de opciones para que usted estructure su aplicación de manera apropiada para su estilo de codificación, desde un completo divorcio de presentación y lógica hasta mezclar los dos de forma salvaje y libre. Tu elección.
  • Levantar no hace lo mismo que los rieles. Lift no es otro marco de MVC para mí también, ni me dediqué mucho de mi tiempo a los aspectos de CRUD de Lift. Lift se trata de seguridad, productividad del desarrollador, capacidad de mantenimiento y creación de aplicaciones web altamente interactivas (Ajax y Comet). Las bibliotecas de Lift contienen una gran cantidad de módulos que incluyen una serie de módulos ORM, soporte JSON, etc. Esto se debe en parte a la escasez de bibliotecas en Scala hace dos o tres años, y debido al hecho de que la comunidad de Lift es impresionante y el proceso de lanzamiento de apoyo y de Lift funciona muy bien (los lanzamientos de hitos mensuales son lo suficientemente estables para impulsar a Foursquare).
  • Lift no está enfocado en el ciclo de solicitud / respuesta HTTP. Lift se centra en abstraer a los que están lejos. El desarrollador pasa menos tiempo preocupándose por la denominación de los parámetros y más tiempo centrándose en la lógica empresarial.

Pero, una vez más, si te gusta Wicket, seguir con Wicket es una excelente opción ... Wicket es aún mejor en Scala.


Wicket y Lift son bestias bastante diferentes. Tengo algunos conocimientos sobre ambos marcos (pero lejos del nivel de experto que suele ver aquí):

Wicket: Cada página del sitio web tiene una página de plantilla HTML y una clase de respaldo Java / Scala. La magia de Wicket consiste en conectar la página de la plantilla HTML a la clase correspondiente y asignar cada ID de Wicket en la plantilla al método correcto en la clase para que los datos sean visibles en la página HTML generada que se envía al cliente. Eso es. Wicket es pura web y nada más. Es muy fácil componer sus propios componentes gráficos en Wicket y heredarlos.

Lift: Lift fue creado por David Pollak como una reacción a los problemas que tuvo con Rails. Lo que necesitaba era rendimiento y seguridad. El levantamiento es más rápido y más seguro que los rieles. En realidad es muy seguro y maneja los ataques de inyección de SQL, CRSF, XXS, automáticamente.

Lift hace lo mismo que Rails (mapas para DB), pero es muy diferente de Rails. La herencia mental de Rails es visible, ya que algunas de las API en Lift utilizan la sintaxis de Ruby (con subrayado y signos de interrogación en los inspectores), algo que podría sorprender al desarrollador de Scala. Lift no es un marco MVC clásico como Wicket, es Model-ModelView-View. En realidad, Lift está más centrado en el ciclo de solicitud-respuesta. Está pensado para simular la programación de GUI controlada por eventos (como Java Swing o .NET GUIs). Esto significa que los elementos y acciones HTML se escriben en el mismo lugar:

var inputName = "" SHtml.text(inputName,s => inputName = s)

Este código creará una etiqueta HTML de entrada como esta:

<input type="text" value=""/>

y conecte una función a una variable para que la entrada se almacene. La estructura es la misma incluso si se usa AJAX en lugar de HTTP GET / POST.

El lifting es expresivo y potente, pero no muy fácil.

Por favor corríjame si esto no es correcto!