2010-07-12 7 views
20

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 sobre Lift. ¿Vale la pena aprender el Levantamiento en este contexto?Para mi próximo proyecto, una aplicación web, ¿debería usar scala + wicket o scala + lift?

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

+0

¿Qué va a hacer su aplicación? que características necesita? ¿Qué le gustaría poder hacer que Wicket no admita, o no admita fácilmente? –

+0

La aplicación web podría llegar a ser muy compleja pero, para hacerlo simple, supongamos que la aplicación web tendrá una página que contiene varios campos de búsqueda y una tabla que muestra los resultados de la búsqueda. La mayoría de las otras páginas probablemente también contengan formularios. – Ceki

Respuesta

29

Si te gusta Wicket, debes seguir con lo que sabes & como. Wicket es un buen framework web y está haciendo Scala & Wicket es muy agradable porque puedes usar los rasgos de Scala para componer clases en Wicket ... realmente reduce el texto estándar frente a Java.

Ascensor tiene puntos fuertes que Wicket no:

  • Mucho mejor soporte para Ajax. El soporte de Ajax de Lift es mucho menos detallado que el de Wicket. Si vas a hacer mucho Ajax, aprender Lift podría ser valioso.
  • Comet support. Si su aplicación tiene un componente de inserción de servidor, Lift ofrece mejor soporte de cometa que cualquier otro marco web.
  • El ascensor es más parecido a Scala. Si vienes de Java, el uso que hace Lift de la coincidencia de patrones y el paso de funciones es una curva de aprendizaje.

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

  • Ascensor no requiere que se mezcla la presentación y la lógica de negocio. Hay un montón de opciones para que pueda estructurar su aplicación de forma adecuada para su estilo de codificación, desde un divorcio completo de la presentación y la lógica hasta la mezcla de ambos libremente. Tu elección.
  • El ascensor no hace lo mismo que Rails. Lift no es otro marco de MVC demasiado personal, ni tampoco dedicé gran parte de mi tiempo a los aspectos CRUD de Lift. El objetivo de Lift es la seguridad, la productividad del desarrollador, el mantenimiento y la creación de aplicaciones web altamente interactivas (Ajax y Comet). Las bibliotecas de Lift contienen una gran cantidad de módulos que incluyen varios módulos ORM, soporte JSON, etc. Esto se debe en parte a la escasez de bibliotecas en Scala hace 2-3 años atrás y debido a que la comunidad Lift es increíble y de apoyo y el proceso de liberación de elevación funciona muy bien (versiones de hito mensuales que son lo suficientemente estables como para potenciar Foursquare.)
  • El levantamiento no se centra en el ciclo de solicitud/respuesta HTTP. Lift se enfoca en abstraerlos. El desarrollador pasa menos tiempo preocupándose por el nombre 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 gran opción ... Wicket es aún mejor en Scala.

10

He realizado varias aplicaciones web en Lift. Viniendo de un fondo Java tradicional con muchos 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 a menudo mezclan las reglas comerciales con los detalles de la interfaz. Además, implementar pruebas unitarias integrales es muy difícil.

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

El juego se ve muy prometedor, a pesar de que todavía está en desarrollo activo, la documentación parece ser bastante buena también. El marco CRUD es perfecto para llegar rápidamente a un estado funcional o para construir una interfaz de administración simple para datos que no se modificarán con mucha frecuencia.

+2

+1 en Play. Se ve tremendamente increíble! –

+0

+1 Play. Simple, liviano, sin estado = escalable, poderoso .... – sirmak

+0

¿estás sugiriendo java + play o scala + jugar aquí? – rogerdpack

15

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

Wicket: cada página en el sitio web tiene una página de plantilla HTML y una clase de respaldo Java/Scala. La magia de Wicket es conectar la página de plantilla HTML a la clase correspondiente y asignar cada ID de Wicket en la plantilla al método correcto de la clase para que los datos estén visibles en la página HTML generada enviada al cliente. Eso es. Wicket es puro Web y nada más. Es muy fácil componer tus propios componentes gráficos en Wicket y heredar de ellos.

Ascensor: 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 ascensor es más rápido y más seguro que los rieles. En realidad es muy seguro y maneja la inyección SQL, CRSF, XXS, reproduce ataques automáticamente.

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

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

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

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

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

La elevación es expresiva y potente, pero no es muy fácil.

Por favor, corríjame si esto no es precisa.

+0

No describiría Wicket como "MVC clásico" en absoluto. De hecho, los problemas de MVC es exactamente lo que hace un trabajo impresionante de superar. No hay realmente "controladores" en Wicket. También es muy OO, lo que lo hace muy composable en formas en que MVC es terrible. No diría que el Web MVC típico es muy cierto para la arquitectura orientada a objetos en absoluto. – jpswain

+0

@ orange80 Probablemente estés en lo correcto. Si Swing es MVC puro, entonces Wicket no es "tanto" MVC (como Swing). Lo que probablemente me hizo confundir es que tanto Swing como Wicket son muy OO, tal como dices. –

Cuestiones relacionadas