2010-04-15 10 views
13

Escuché muchas buenas opiniones sobre el lenguaje Python. Dicen que es maduro, expresivo, etc. Estoy buscando frameworks de aplicaciones empresariales listos para producción en Python. Por "producción listo" quiero decir:¿Existe un framework de aplicaciones web preparado para producción en Python?

  • admite la asignación objetiva-relacional con el almacenamiento en caché y desciption declarativa (como JPA, Hibernate, etc ..)
  • controles orientada a la ayuda interfaz de usuario - no hay plantillas HTML sino algo así como JSF (RichFaces, icefaces) o GWT, vaadin, ZK
  • descomposición del componente y la inyección de dependencia (como EJB o primavera)
  • unidad y pruebas de integración
  • buen soporte IDE
  • agrupación, mod ularity etc (como Terracota, OSGi, etc ..)
  • existen aplicaciones exitosas en ella escritas por empresas como IBM, Oracle, etc (me refiero a las aplicaciones de negocio reales no Twitter)
  • podría tener soporte comercial

¿Es posible en el mundo de Python? O únicas opciones son:

  • uso de Python y escriben todo, desde la parte inferior (demasiado caros comparados)
  • palo para Java EE
  • pila compra .NET
+3

Si usted no sabe nada acerca de Python se puede cambiar a un marco basado en Python probablemente no es una idea muy buena. –

+9

¿Quiere todas las características de Java EE ... En Python? ¡PEGUE A JAVA! – jonwd7

+2

Casi todos los marcos cumplen con los criterios de "producción preparada". Pero usted hace la pregunta en forma ("¿hay alguna?") Que es esencialmente argumentativa. ¿Por qué hacer la pregunta de esa manera? –

Respuesta

14

Por el contexto, trabajo en un gran banco privado en Suiza, escribiendo aplicaciones empresariales en la pila J2EE.

Existen muchos frameworks web "preparados para producción" en Python. Y hay muchos sitios web grandes basados ​​en Python.

Dicho esto, creo que Python es una mala elección para una aplicación Enterprisy. Se puede usar como un lenguaje adhesivo o un lenguaje de scripting (nuestros scripts de implementación son Python). Lo más sorprendente para mí es la compatibilidad con versiones anteriores (Python 3.x no es compatible con versiones anteriores de Python 2.x). La filosofía de Python parece ser más para innovar y mejorar el lenguaje, suavizarlo y no necesariamente para respaldar programas escritos hace 10 años.

En el lado del framework web, me encanta Django, pero definitivamente es demasiado joven y evoluciona demasiado rápido para ser utilizado en la empresa. No tengo mucha experiencia con otros frameworks basados ​​en Python.

Si desea un marco orientado a la empresa, tendrá que quedarse con las pilas de la empresa (Java/.Net).

Por otro lado, incluso en el mundo de Java, hay una tendencia a utilizar marcos que son menos emprendedores.Think Spring vs EJB2 o EJB3 son mucho más ligeros que EJB2. O piense que Flex (que está lejos de ser un marco empresarial, en mi opinión) se usa cada vez más en la empresa. Entonces, si su empresa es de mente abierta, lista para saltar al futuro, usar Django, RoR u otro Web 2.0 moderno, marcos basados ​​en registros activos, de código abierto, de próxima generación basados ​​en la comunidad ... puede que no sea tan exagerado. ..

Y, por último, para responder a algunos de sus puntos directamente:

  • apoyo de ORM/almacenamiento en caché/...: Sí, pero la mayoría de las soluciones se basan en el registro activo, que está muy bien para el 90 % de lo que es posible que desee hacer, pero es sin duda no es tan completa/complejo como JPA/Hibernate
  • interfaz de usuario orientada al control: no, y te vas a encontrar un estándar, por lo que no encontrará componentes 3 ª parte. Lo más cerca que podría obtener es la integración con jQuery UI u otro JS marcos
  • inyección de dependencias: Hay un puerto de la primavera a Python, mantenida por SpringSource. Pero DI no está en la filosofía de Python. El mismo problema se resolverá con funciones, argumentos predeterminados y cierres. Y podríamos argumentar que la solución Pythonic es más limpia que la forma Java ...
  • pruebas de unidad/integración: soporte muy bueno, marcos de pruebas múltiples. Aún así, el soporte no es tan bueno como Java donde tenemos toneladas de herramientas en torno a las pruebas.
  • buen soporte IDE: hay limitaciones técnicas al ammount de apoyo que puede proporcionar a un lenguaje dinámico, pero por lo menos tanto Eclipse y Netbeans tiene un gran apoyo para Python.
  • clustering/modularity: la agrupación se resolverá con una "infraestructura sin uso compartido" y/o almacenamiento en caché distribuido. No hay soluciones para la modularidad (en el sentido OSGI) hasta donde yo sé. Pero desafiaría eso muy a menudo OSGI es una solución para un problema que no tenemos en la empresa ...
+0

¡Gran comparación! –

+2

Creo que la compatibilidad con versiones anteriores es irrelevante, ya que Python 2 aún es compatible. No es como Java, donde se supone que siempre debes actualizar a la versión más alta, las dos líneas están creciendo en paralelo por ahora. – Kylotan

+6

Python es bastante más compatible con versiones anteriores que la implementación típica de C++/Java, con la * posible * excepción de Python 3.x. Veo muchas más roturas por los cambios en el compilador JVM/C++, sin mencionar los cambios en la biblioteca, que por las actualizaciones de Python. Incluso los cambios necesarios para pasar de 2.x a 3.x son leves en comparación con algunos de los cambios en C++ y Java en los últimos años. Parece que hay pocas otras razones para no llamar Python 'Enterprisy', teniendo en cuenta lo bien que se integra y resúmenes. –

27

Django parece la opción obvia. Es por mucho el marco más estable y desarrollado, utilizado por several large corporations.

Como es un framework de Python, generalmente puede usar cualquier módulo de Python, así como los muchos módulos que se han hecho para Django.

Debe cumplir con todas sus necesidades, y no es terriblemente difícil de aprender/implementar.

+1

yay para Django! (si solo hubiera más trabajos de django) –

+2

Django +1, y por cierto, odio web2py y los que fuerzan a su subordinado a usar web2py ... – satoru

+3

Django parece pobre para mí. Los modelos se ven bien, hay un soporte de transacción simple basado en anotaciones. La capa de visualización y el sistema de plantillas es extremadamente pobre e inaceptable. No quiero pensar en solicitar, OBTENER, PUBLICAR, sino en métodos y eventos. La capa de vista debe reabastecerse (Flex quizás) No pude encontrar ningún componente con estado. Django es una herramienta para crear sitios web y tiendas virtuales pero no para aplicaciones empresariales. –

4

Como se mencionó, django es quizás el marco de aplicación web python más estable. Para responder a sus puntos a su vez:

  • admite el mapeo objetivo-relacional con el almacenamiento en caché y la declaración declarativa (como JPA, Hibernate, etc.). Sí, ver django models
  • controles orientados soporte de interfaz de usuario - no hay plantillas HTML sino algo así como JSF (RichFaces, icefaces) o GWT, vaadin, ZK. No. Las plantillas de django están ahí, pero podrías agregar alguna otra capa de vista con bastante facilidad.
  • descomposición de componente e inyección de dependencia (como EJB o Spring). No estoy seguro ya que no he usado EJB.
  • unidad y pruebas de integración. Sí, vea django testing.
  • buen soporte IDE. Bastante bueno. Ver eclipse + pydev
  • agrupamiento, modularidad, etc. (como Terracota, OSGi etc.). No lo se
  • existen aplicaciones exitosas escritas en ella por compañías como IBM, Oracle, etc. (me refiero a aplicaciones comerciales reales, no a Twitter). En su mayoría, organizaciones de noticias como LA Times y Washington Post.
  • podría tener soporte comercial. Hay algunos like this.
1

¿Ha tenido un vistazo a Jython? Jython es una implementación de Python para Java Virtual Machine. Es posible ejecutar Django en Jython: Django on Jython y usar Jython y Django con un servidor de aplicaciones Java EE: Django on Glassfish.

Si aún no ha seleccionado definitivamente Python, puede echar un vistazo a Groovy con Wicket o Grails como el marco de aplicación web.

5

Salida Zope ...

+0

+1: todo lo requerido, más la opción de soporte comercial. –

+0

Zope 2 es un servidor de aplicaciones y Zope 3 es una arquitectura de componentes? Necesito ambos Zope 2 y 3 o 3 solo hace el truco? Zope parece prometedor. –

1

¿Qué pasa con Plone? visita http://www.plone.org para más información. Utilizado en muchas aplicaciones de nivel empresarial.

Algunas organizaciones que utilizan Plone: ​​

CIA, el FBI, la NASA, Oxfam, el Gobierno Federal de Brasil, Novell, la lista continúa.

Para obtener información acerca de las soluciones desplegadas y estudios de casos visitar www.plone.net

+0

Plone está basado en Zope. – Unreason

Cuestiones relacionadas