Question

Je me suis disputé avec des amis de l'université et nous ne pouvons pas en arriver à un cadre qui offre un cadre plus évolutif pour les applications Web (et qui reste très rapide).

L'un appelle jsp, l'autre ruby ??autre php et ainsi de suite. Puis-je vous demander de nous préciser en quoi de plus de potentiel d'évolutivité?

J'espère que je ne dupliquerai rien de ce que j'ai cherché mais que je n'ai trouvé aucune question précédente comme celle-ci.

Edit: Si vous pouviez faire une comparaison à ce sujet, ce serait bien:)

Était-ce utile?

La solution 4

(cinq ans plus tard ...)

J'ai trouvé cet article de blog qui compare les infrastructures Web dépendantes de plusieurs langues. Et maintenant, cela répond à peu près à la question que j’avais posée en 2008.

http://www.techempower.com/blog/2013 / 03/28 / framework-benchmarks /

Autres conseils

Ruby et PHP ne sont pas des frameworks webapp. Ce sont des langages de programmation populaires pour le développement Web.

De manière générale, l’évolutivité des applications Web n’est pas une propriété d’un langage de programmation et un framework Webapp donné ne peut tout au plus pas entraver l’évolutivité . Une bonne évolutivité est davantage une propriété de la conception d'applications.

Il y a beaucoup trop de frameworks webapp disponibles pour une comparaison point par point qui soit loin d'être encyclopédique.

Vous pouvez également vous attaquer à l'évolutivité d'une application donnée de plusieurs manières. L'une des solutions consiste à définir une portée étroite et bien définie et à obtenir des performances brutes impressionnantes, de sorte qu'une seule machine puisse desservir des milliards d'unités de travail. Le meilleur exemple est Mailinator .

Une autre solution consiste à faciliter la gestion de charges croissantes en utilisant simplement "&"; ajouter plus de matériel. Quasiment tous les frameworks webapp basés sur une base de données peuvent évoluer de cette façon: ajoutez simplement plus de serveurs d'applications entre un équilibreur de charge et une base de données partagée. Si vous formulez le problème de cette manière, votre principale préoccupation est de concevoir l’application de manière à minimiser 1. les conflits de bases de données 2. le chargement de bases de données.

La dernière façon est de concevoir le système pour qu'il soit incroyablement parallèle. Google étant le meilleur exemple.

En résumé: les langages ou les frameworks ne font pas d’applications évolutives, contrairement aux architectes de logiciels.

EDIT: Pour être clair, ma réponse porte sur l'évolutivité , c'est-à-dire la capacité de gérer des charges croissantes sans modifier la conception. Cette propriété est différente de la vitesse d'exécution.

Les algorithmes compteront davantage pour l'évolutivité que le langage utilisé.

Cela dit, il y aura des différences de vitesse d'exécution entre les langues. Je crois que Java (les servlets et les JSP compilées en servlets, c’est-à-dire en code natif) sera plus rapide que Ruby et PHP de quelque manière que ce soit). Il existe également une tonne de frameworks Web pour Java qui vous inciteront à faire les choses de la meilleure façon pour l’évolutivité.

Concevez également votre application de sorte qu'elle puisse s'exécuter facilement derrière un équilibreur de charge et que l'évolutivité devienne beaucoup plus facile :) Ce n'est cependant pas mon domaine d'expertise.

L’extensibilité de la structure Web est une question assez complexe (certains diraient que le concours p155ing). À moins que vous n'obtenez des méga dollars (bonne chance avec cela de nos jours) et que vous puissiez assurer des millions de visiteurs par jour, tous ces frameworks peuvent le gérer correctement (tout comme ASP.NET).

Personnellement, je choisirais toujours ASP.NET. Il est aussi évolutif que tout et possède les meilleurs outils de développement. Le seul inconvénient est l'hébergement et les coûts du système d'exploitation.

Vous pouvez également consulter les Qu'est-ce qui est plus rapide? PHP vs ASP vs JSP vs CGI, etc. "

Je pense que Java / Java EE est le seul "framework". conçu à partir de zéro pour développer des applications distribuées / en cluster et qui encourage les bonnes pratiques à partir de spécifications (EJB, JTA ...).

Mais comme d’habitude, ça dépend. Ce genre de questions a souvent tendance à déclencher des guerres:)

Je ne suis pas sûr que l'un de ces frameworks que vous avez mentionné entravera sérieusement l'évolutivité.

Tout dépend de la mise en œuvre.

Je me concentrerais tout d'abord sur le bon fonctionnement de votre application Web, puis sur le caractère évolutif lorsque cela deviendrait problématique. En d'autres termes, "traversons ce pont quand nous y arrivons".

A: C dll ISAPI (ou module apache personnalisé):)

Même dans ce cas, les frais généraux du serveur Web, l’analyse des demandes http et le traitement des pages html, rendent la durée d’exécution de vos applications presque inutile. Si vous exécutez votre application en tant qu'application CGI, attendez-vous à encore moins de performances.

Pour l’évolutivité sur le Web, il est vraiment question d’ajouter plus de serveurs et d’équilibrer la charge, de soulager le serveur en plaçant la base de données (si elle est très utilisée) sur un serveur séparé.

Les performances brutes de ces langages ne sont pratiquement pas inquiétantes. Utilisez celui que vous voulez utiliser, avec lequel vous serez le plus productif. Préoccupez-vous des autres problèmes que vous rencontrerez: réseau, sécurité, exactitude.

Plusieurs points positifs déjà. Mon point principal serait le suivant: une personne connaissant parfaitement Python sera probablement en mesure de créer du code plus évolutif à l’aide de Python que de Java. Et il existe de nombreux sites de très grande taille qui utilisent toutes les technologies que vous avez mentionnées, donc je ne pense pas qu'il y ait vraiment de gros avantage dans les deux cas.

Dans la plupart des cas, vous devriez vous en tenir à ce que vous connaissez bien, sauf s'il existe une raison sérieuse de changer de direction.

Je suis tombé sur cette question et j'ai remarqué que certains parlent de vitesse, d’autres d’évolutivité. J'ai écrit un article de blog expliquant la différence:

http://www.fransekman.com/scalability -ou-performances-ce-que-tu-veux dire /

"Un site Web à haute évolutivité est un site Web dont le niveau de performance peut être maintenu en ajoutant une plus grande capacité lorsque la charge augmente". Ceci peut être réalisé dans n'importe quel langage de programmation et presque n'importe quel framework. Certains frameworks ont des fonctionnalités intégrées, ce qui peut rendre plus simples à mettre en œuvre certaines choses d’évolutivité communes.

Un langage compilé fonctionnera généralement plus rapidement qu'un langage interprété. Je pense donc que Ruby et PHP commencent derrière le huitième point, mais cela dépend vraiment de la manière dont vous utilisez le langage et de la structure du code.

Toutes les langues auront leurs propres meilleures pratiques et modèles pour construire des applications évolutives et il y aura souvent des compromis en fonction de la fonctionnalité de l'application proposée.

Si vous souhaitez savoir comment les principaux sites utilisent LAMP pour atteindre l’évolutivité, consultez partage de base de données .

Le choix d’un framework Web a moins d’impact sur l’évolutivité (la capacité d’adaptation) que l’architecture de votre site. La plupart des infrastructures Web modernes se prêtent très bien à la mise à l'échelle. C'est donc vraiment votre configuration de déploiement qui mérite votre attention.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top