2010-07-31 2 views
8

Peut-Python être une bonne alternative à une application web qui serait autrement développé avec Java EE? Si oui, quel (s) framework (s) d'application web Python peuvent être un bon choix? S'il vous plaît voir les détails sur l'application ci-dessous. J'ai demandé à quelques personnes à ce sujet, qui ont travaillé pendant une bonne période sur l'une ou l'autre des applications Web Java EE et Python, et j'ai reçu quelques réponses indiquant que Python pourrait ne pas être un bon choix, principalement en raison de facilité de mise à l'échelle, qui est l'un des besoins. L'autre raison donnée était le manque relatif de développeurs Python dans la partie du monde où l'application est en cours de développement. Nous pourrions être en mesure de surmonter le second, mais pas sûr de la première. L'application en question est un domaine financier B2B, avec quelques types d'utilisateurs différents (comme dans: "acteurs" ayant différents rôles de la vie réelle - par exemple acheteurs, vendeurs), certains utilisateurs d'administration, utiliseront un SGBDR , aura CRUD (Créer/Lire/Mettre à jour/Supprimer) plus la fonctionnalité de recherche pour les tableaux maîtres, certains types de transactions impliquant des tables maître et transaction, (avec une logique assez simple, pas très complexe) tous les écrans de recherche (requêtes). Environ 80 fonctionnalités, où les fonctionnalités sont principalement mappées aux écrans de l'application; pas tous, cependant. Il aura également quelques types de travaux par lots, pour lesquels il est prévu de les exécuter à des moments où les utilisateurs ne sont pas autorisés à utiliser l'application. Will JavaScript et AJAX sur le front-end. Possédera la fonctionnalité d'envoyer des courriels aux utilisateurs, non seulement pour l'inscription ou la réinitialisation des mots de passe, mais aussi pour les informations liées à la transaction. Aucune lecture programmatique des emails entrants cependant. L'objectif est de parvenir à un niveau d'échelle moyen en termes de nombre d'utilisateurs et de transactions (payants), pas très élevé, mais pas trop petit - disons de l'ordre de 10 000 utilisateurs, de moins de 10 000 utilisateurs. qui 2000 peut accéder simultanément à l'application dans un délai de 15 à 20 minutes. Ce sera une application SaaS (Software as a Service).Peut-Python être une bonne alternative pour l'application web qui serait autrement fait dans Java EE?

Je sais que la question est très générale et ouverte et je m'attends à quelques réponses sur les lignes de "Cela dépend" :) mais je veux toujours obtenir des points de vue de personnes qui ont travaillé sur de telles choses.

N'hésitez pas à poser plus de questions si nécessaire pour répondre. Je vais y répondre sauf pour tout ce qui est confidentiel.

Merci.

Edit 1:

apprécie vraiment toutes les réponses. Je prendrai un peu de temps pour y réfléchir, puis je reviendrai avec d'autres questions (originales, ou en réponse aux réponses) ou des commentaires, le cas échéant.

+1

Tout langage peut bien fonctionner, il commence d'abord par votre expérience avec Java et Python, ce qui sera un facteur important. –

+0

Oui, n'importe quelle langue peut fonctionner. Mais il veut connaître la disponibilité des cadres robustes pour ne pas avoir à réinventer la roue. –

Répondre

5

C'est une très bonne alternative. Votre projet m'a l'air d'avoir besoin de beaucoup de programmation personnalisée, ce qui, dans le monde Python, indiquerait que votre application web se base sur Pylons (http://pylonshq.com/). Pylons est principalement une couche de colle, et vous choisirez un moteur de modèle et ORM (essayez SQLAlchemy (http://www.sqlalchemy.org/) pour la puissance maximale ou SQLObject (http://www.sqlobject.org/) pour une couche un peu plus simple) de votre choix. Vous voudrez probablement générer les fichiers PDF en utilisant ReporLab (http://www.reportlab.com/). Pour la partie email, vous aurez un long chemin avec la fonctionnalité de messagerie intégrée de Python (voir les documents sur le site web de Python).

Edit 1: vous avez certainement déjà pensé, mais ..: succès dépend bien sûr beaucoup sur les compétences des développeurs que vous avez accès à, à savoir si le savoir Python déjà, ou sont désireux et rapide à apprendre. Je dirais que Python est un très bon débutant, mais il faut un peu de temps pour devenir vraiment 'Pythonic' (plus ou moins traductible avec les caractéristiques de Python, par exemple en utilisant des fonctionnalités telles que les générateurs, les listes, getattr et setattr etc).

Edit 2: aussi, jetez un oeil à PyPI, l'index des paquets Python, http://pypi.python.org/pypi à « vitrine » pour les modules qui va offrir des fonctionnalités supplémentaires pour vous. Il y a un lot d'entre eux.

+0

Merci pour votre réponse. – Anonymous

3

Tout langage/cadre est un bon choix, s'il est utilisé correctement par des développeurs compétents. Parfois, le meilleur choix est celui avec lequel votre équipe est la plus familière. Compte tenu de votre espace client, si vous souhaitez passer à un cadre de «productivité plus élevée», je suggère Grails

Il est implémenté dans Groovy, que les développeurs Java peuvent assimiler naturellement, et dispose de divers outils pour générer des guerres, qui peuvent être déployés dans votre conteneur de servlet préféré. Il faut beaucoup de peine de la tradition J2EE développement, tant que vous suivez les conventions. Il a une tonne de plugins robustes pour des choses comme l'authentification/autorisation. Cela vous fera économiser beaucoup de temps.

+0

Merci pour votre réponse. – Anonymous

+0

@anonymous Pas de problème – hvgotcodes

3

Je pense que Python conviendrait parfaitement à vos besoins, et vous obtiendrez probablement le développement beaucoup plus rapidement qu'avec une solution basée sur Java.

Il existe plusieurs frameworks d'applications Web Python matures. Django est le plus populaire et fera probablement beaucoup de ce que vous voulez hors de la boîte.

Il est peu probable que la performance soit un problème pour les chiffres que vous donnez - tout goulot d'étranglement est susceptible d'être dans l'accès à la base de données, donc la vitesse du langage que vous utilisez est largement hors de propos. Python est fast enough to run YouTube, et ils ont des ordres de grandeur plus d'utilisateurs que vous. (Si vous n'avez pas le temps de visionner la présentation liée, l'ingénieur responsable de l'évolutivité de YouTube indique que 99,999% de son code d'application est écrit en Python).

+0

Merci pour votre réponse. – Anonymous

2

La mise à l'échelle est largement indépendante de votre choix de langue, mais oui, python peut très bien s'adapter à ce que vous décrivez. Beaucoup de grands sites utilisent Python, y compris reddit et youtube (voici un bref writeup on why reddit uses python).

Cadre: Django est un cadre très populaire, avec de bonnes fonctionnalités d'administration intégrées, comprend un ORM qui parle avec les principales bases de données, comprend beaucoup de fonctionnalités, et dispose d'une communauté dynamique qui produit constamment de nouvelles applications et extensions . Nous l'utilisons et l'aimons.

Pour vos besoins AJAX/CRUD/Rest, jetez un oeil à django-piston, un moyen simple de créer des API basées sur le repos.

+0

Merci pour votre réponse. – Anonymous

Questions connexes