2009-03-30 13 views
9

Sé que es un poco subjetivo pero, si te pusieras en mis zapatos , ¿qué invertirías en aprender?Dilema: ¿Debo aprender Seaside o un framework de Python?

Quiero escribir una aplicación web que trate de forma segura cantidades relativamente modestas de datos privados de personas, unos miles de registros de unos pocos Kb cada uno pero cosas que deben mantenerse seguras, direcciones, números de teléfono, etc. he hecho varios proyectos web en PHP/MYSQL y he decidido, aunque es práctico, realmente no me gusta PHP y no quiero hacer otro gran proyecto en él ...

Como tal, supongo que es mejor que aprenda algo nuevo, por lo que estoy considerando 2 opciones (aunque me complacerá entretener a los demás si tiene alguna sugerencia). Sin embargo, estoy teniendo serios problemas para decidir. Ambos se ven bastante involucrados, así que en lugar de simplemente saltar y perder potencialmente días para ponerse al tanto de ellos lo suficiente como para tomar una decisión informada, pensé en venir aquí y contar alguna opinión.

Así que las dos opciones que estoy considerando son ...

Uno de los marcos Web PYTHON - TurboGears parece bien considerados? Ventaja: De todos los idiomas que he intentado Python es, de lejos, mi favorito. Hay montones de frameworks para elegir y he hecho bastantes codificaciones python no web en los últimos años. Desventaja: ¡hay mucho para elegir, así que es difícil elegir! ¿Necesita ejecutar un proceso de servidor único? o mod_python? que no me gusta el sonido de. Lo que sí me gusta es la noción de separación de procesos y compartimentación, es decir, si la cuenta de un usuario se ve comprometida, le da a un atacante ningún poder contra el resto del sistema. No tengo claro hasta qué punto una solución de Python manejaría eso.

Escribiéndolo como una aplicación SEASIDE ¿Qué creo que se ejecuta en un servidor de aplicaciones Squeak? Adv: Por lo que he escuchado, permitiría una buena compartimentación de usuarios ya que cada uno tendría su propia pequeña máquina virtual privada, independiente de todos los sistemas de otros usuarios, lo que puede parecer maravilloso desde el punto de vista de seguridad, escalado y redundancia. Dis: No he hecho ningún Smalltalk desde la Uni hace 15 años y nunca profundicé demasiado en eso. No veo mucha ayuda de nivel de entrada para el mar o que muchos proyectos lo usan. Sospecho que configurar un servidor para ejecutarlo es difícil por la misma razón, es decir, no porque sea intrínsecamente difícil, sino porque habrá menos ayuda en línea y por la presunción de que ya eres bastante sincero con Sqeak/Smalltalk.

Entonces, ¿qué piensa la gente? ¿Sería capaz de obtener de manera eficiente el tipo de separación y compartimentación fuerte que estoy buscando con un framework de Python? ¿Seaside es tan bueno como pienso en términos de aislar a los usuarios unos de otros? ¿Podría estar mejor, en cuanto a seguridad, apegándome a los idiomas con los que estoy más familiarizado, para no cometer ningún error n00b o valdrá la pena que Seaside escalara la curva de aprendizaje y sea más seguro, comprensible y sostenible a largo plazo? ? ¡Al final del día no es una decisión de vida o muerte y siempre puedo salir bajo fianza si empiezo con una y luego la odio así que por favor nadie se enzarzará en una guerra de lenguaje sagrado y comenzará a pegarle fuego a alguien! ;-)

Saludos para todas las respuestas, esto se pone

Roger :)

Respuesta

10

Descargo de responsabilidad: Realmente no me gusta PHP, Python es agradable, pero no se acerca a Smalltalk en mi libro. Pero soy un Smalltalker parcial. Algunas respuestas sobre Seaside/Squeak:

P: ¿Qué creo que se ejecuta en un servidor de aplicaciones Squeak?

Seaside se ejecuta en varios Smalltalks diferentes (VW, Gemstone, Squeak, etc.). El término "servidor de aplicaciones" no se usa realmente en el país Smalltalk. :)

P: Por lo que he escuchado, permitiría una buena compartimentación de usuarios ya que cada uno tendría su propia VM privada independiente de todos los sistemas de otros usuarios que suena maravilloso desde el punto de vista de seguridad, escalado y redundancia.

Sí, cada usuario tiene su propia WASession y todos los componentes de la interfaz de usuario que el usuario ve son instancias que viven en el servidor en esa sesión. Así que compartir el estado entre sesiones es algo que debes hacer explícitamente, generalmente a través de un db.

P: Hace 15 años que no hago ningún Smalltalk desde la Uni y nunca profundicé demasiado en él. No veo mucha ayuda de nivel de entrada para el mar o que muchos proyectos lo usan.

Smalltalk es fácil de usar y hay todo un libro en línea gratis en Seaside.

P: Sospecho que configurar un servidor para ejecutarlo es difícil por la misma razón, es decir, no porque sea intrínsecamente difícil, sino porque habrá menos ayuda en línea y una presunción de que ya estás bastante optimizado con Sqeak/Smalltalk.

No, no es difícil. :) De hecho, bastante trivial. Toneladas de ayuda: Seaside ml, IRC en freenode, etc.

P: ¿Seaside es tan bueno como creo en términos de aislar a los usuarios unos de otros?

Yo diría que sí.

P: ¿Podría estar mejor, en términos de seguridad, apegándome a los idiomas con los que estoy más familiarizado, así no cometo ningún error n00b o valdrá la pena escalar la curva de aprendizaje y ser más seguro, comprensible y mantenible a largo plazo?

El argumento asesino a favor de Seaside en mi humilde opinión es el verdadero modelo de componentes. Realmente, realmente lo hace maravilloso para interfaces de usuario complejas y mantenimiento. Si tienes miedo de aprender "algo diferente" (pero ni siquiera lo considerarías en primer lugar, supongo), entonces te advertiría. Pero si no tienes miedo, probablemente te encante.

Además, Squeak (o VW) es un entorno de desarrollo realmente impresionante: depuración de sesiones de Seaside en vivo, cambio de código en el depurador y reanudación, etc.

4

Al considerar un marco Web Smalltalk, miran Aida/Web también. Aida tiene seguridad incorporada con administración de roles/usuarios/grupos y un fuerte control de acceso, que puede ayudarlo mucho en su caso. De esta forma, puede lograr una separación lo suficientemente segura de los usuarios a nivel de usuario en una imagen. Pero si realmente lo desea, puede separarlos con la ejecución de muchas imágenes también.Pero esto trae un mayor mantenimiento y lo pensaría dos veces si vale la pena.

8

Yo diría que echa un vistazo a Django. Es un framework de Python con un sistema de autenticación listo que es independiente del sistema operativo de alojamiento, lo que significa que los compromisos se limitan a la aplicación que se vio comprometida (salvo que se explote contra el servidor web que aloja el proceso de Python).

+0

No creo que Django aborde directamente sus preocupaciones principales de seguridad, que parece estar accidentalmente compartiendo datos entre los usuarios. Si bien es bueno evitar los errores sql, si tiene uno, puede mostrar datos al usuario equivocado. No puedo imaginarme cómo hacerlo accidentalmente en el mar. también considere zope –

+0

Descargo de responsabilidad: No sé nada de Seaside. Sin embargo, se pueden cometer errores en cualquier entorno, así que no veo cómo la compartimentación evitaría errores, especialmente los errores de SQL (a menos que tenga todos los usuarios de la aplicación como usuarios de DB, lo que sería un dolor de cabeza de mantenimiento en mi humilde opinión) –

+0

Tiene razón si usa una base de datos SQL. Zope y seaside no usan bases de datos SQL (a menos que las agregue explícitamente). –

1

Creo que ha resumido los pros y los contras. Seaside no es que es difícil de configurar (lo he instalado dos veces para varios proyectos) pero su uso definitivamente afectará su forma de trabajar: además de volver a aprender el idioma, probablemente tenga que ajustar un montón de suposiciones sobre su flujo de trabajo.

También depende de otros dos factores

  • Si otras personas serán eventualmente su mantenimiento, que tendrá mejor suerte para encontrar los programadores de Python
  • Si usted está haciendo un sitio altamente estado, Mar va para vencer a los pantalones de cualquier otro marco que he visto.
10

Olvídese de mod_python, hay WSGI.

Recomendaría Django. Se ejecuta en cualquier servidor WSGI, hay mucho para elegir. Hay mod_wsgi para Apache, wsgiref - Implementación de referencia incluida en Python y many more. También Google App Engine es WSGI, e incluye Django.

Django es muy popular y su comunidad está creciendo rápidamente.

6

He estado llegando a la orilla del mar yo mismo, pero en muchos sentidos es muy difícil de empezar, que no tiene nada que ver con el Smalltalk que se puede recoger muy rápidamente. El desafío es que estás realmente protegido de escribir html directamente.

En la mayoría de los marcos, cuando te quedas atascado en cómo hacer algo, siempre hay una solución para resolverlo al usar la plantilla. Posteriormente, puede descubrir que esta solución causa problemas de claridad en el camino y, de hecho, hay mejores soluciones integradas en el marco, pero fue capaz de avanzar desde ese problema hasta que aprendió la forma correcta de hacerlo.

Seaside no tiene plantillas, por lo que no obtendrá esa muleta. Ningún problema me ha dejado perplejos de forma permanente, pero algunos me han llevado más tiempo de lo que me hubiera gustado resolver. La otra cara de esto es que terminas aprendiendo la metodología costera mucho más rápido porque no puedes hacer trampa.

Si decide ir a la ruta costera, no dude en publicar en la lista de correo junto al mar en squeakfoundation.org. Al principio me pareció intimidante porque no ves muchas preguntas para principiantes debido al poco tráfico, pero la gente está dispuesta a ayudar a los principiantes allí.

También hay un puñado de desarrolladores junto al mar que monitorean stackoverflow regularmente. Buena suerte.

+0

Siempre se puede hacer: "aCanvas html: '

algunos html en bruto

'" si está desesperado. :) – Julian

5

echó un vistazo a www.nagare.org?

Un marco especialmente para aplicaciones web en lugar de sitios web.

Se basa en los conceptos de Seaside pero se programa en Python (nagare despliega una distribución de python llamada Stackless Python para que las continuaciones funcionen).

Al igual que Seaside, generará automáticamente HTML, pero adicionalmente puede usar plantillas según sea necesario.

Ha sido abierto recientemente por http://www.net-ng.com/ quienes tienen muchos años de experiencia en la entrega de aplicaciones/sitios web en marcos web de calidad como zope y plone.

Estoy investigando por mi cuenta en este momento para ver si se ajusta a mis necesidades, por lo que no puedo decir lo que pienso en la naturaleza. Si echas un vistazo, por favor da tu opinión.

+0

Decidí aprender el framework web2py (era gluón) al final. Es un framework de aplicaciones web de pila completa basado en python holístico y un entorno de desarrollo en uno y mis experiencias con él son relativamente buenas hasta ahora, aunque es bastante joven y bastante lejos de implementarse todavía. Tiene una interfaz/IDE basada en un navegador web que puede hackear usted mismo, ya que está escrita en python y puede crear paquetes de aplicaciones de código de bytes automáticamente que puede distribuir e implementar en cualquier otra instancia de web2py. También es bastante pequeño. – user84643

3

Estoy jugando con Seaside yo mismo y encontré que this tutorial es invaluable para obtener una idea de las capacidades del framework.

+0

Actualmente es el mejor tutorial disponible. –