J'écris des applications Java d'entreprise et des services web au travail ( Spring , Hibernate, Maven, RESTEasy) et PHP (CakePHP) et Python (Django) pour mes projets annexes.
Bien que je vois la valeur qu'apporte l'inversion de contrôle, la programmation orientée aspect, etc. que Spring apporte, je ne sais pas comment les applications Web massives qui ne sont pas sur la pile Java gèrent sans un cadre comme Spring.
Alors, les développeurs doivent-ils simplement "supporter" des composants étroitement couplés et d'autres griefs que Spring élimine ou ai-je raté quelque chose?
Pour ceux qui ne connaissent pas Spring, les fonctionnalités que nous utilisons le plus sont:
Inversion du conteneur Control: configuration des composants applicatifs et gestion du cycle de vie des objets Java,
Programmation orientée aspect: permet la mise en œuvre de routines transversales,
Gestion des transactions: unifie plusieurs API de gestion des transactions et coordonne les transactions pour les objets Java.
Réponses:
D'autres plates-formes n'ont pas besoin de Spring, car ces langages ne sont pas aussi restrictifs que Java.
Je vais donner un exemple avec node.js
la configuration du serveur se fait soit en code soit en un simple fichier de configuration json. Quant aux systèmes IoC génériques, nous n'en avons tout simplement pas besoin, Javascript est un langage expressif et dynamique. Oui, vous avez besoin d'IoC mais c'est simple, passez des dépendances à vos objets en tant que paramètres de fonction.
Je ne pense tout simplement pas que nous ayons besoin de quelque chose comme ça, nous écrivons du code modulaire et cela fonctionne.
noSQL est incroyablement populaire. Il n'y a aucune notion de transaction.
Personnellement, je dirais que de tels systèmes sont gonflés et trop conçus et que vous n'en avez tout simplement pas besoin. D'autres langues et plates-formes restent simplement allégées et agiles.
la source
Dans la plupart des langages de haut niveau, il est trivial d'écrire en utilisant les principes de conception AOP et / ou IoC.
Tout ce dont vous avez besoin pour implémenter AOP est que le langage prenne en charge des fonctions d'ordre supérieur. Par exemple:
Vous pouvez également suivre les principes généraux de l'IoC ou de l'injection de dépendances lors de la programmation. Vous n'avez pas besoin d'un conteneur particulier pour fournir cette capacité. Vous pouvez simplement écrire le code de cette façon.
la source
Eh bien Python apprécie le printemps aussi Spring Python .
Le framework Spring a été créé pour faciliter le développement Java et ce qui est vrai pour le développement Java n'est pas nécessairement vrai pour le développement Ruby ou Python.
Ruby, par exemple, a des capacités de métaprogrammation, ce qui signifie que vous pouvez créer votre propre AOP.
Ironiquement, les nouveaux frameworks Web Java tentent d'attraper les frameworks Django et Rails (voir les frameworks Grails and Play! Par exemple).
la source
Pour Python, BlueBream (alias Zope 3) fournit ce que fait Spring et plus encore.
La complexité et la puissance ont un prix, il y a des moments où vous ne voulez pas les payer.
De nombreux programmeurs trouvent BlueBream intimidant et beaucoup trop pour ce qu'ils doivent faire, ils préfèrent des boîtes à outils plus légères et plus petites. La plupart des autres solutions (Django, etc.) sont basées sur le paradigme MVC.
Vous pouvez également voir des forces similaires en action dans l'espace Java, avec des choses comme le magnifique Playframework .
la source