Serveur d'applications, serveur Web: quelle est la différence?

23 août 2002

Q: Quelle est la différence entre un serveur d'applications et un serveur Web?

UNE:

Un serveur Web traite exclusivement les requêtes HTTP, tandis qu'un serveur d'applications sert la logique métier aux programmes d'application via un nombre illimité de protocoles.

Examinons chacun plus en détail.

Le serveur Web

Un serveur Web gère le protocole HTTP. Lorsque le serveur Web reçoit une requête HTTP, il répond par une réponse HTTP, telle que le renvoi d'une page HTML. Pour traiter une demande, un serveur Web peut répondre avec une page ou une image HTML statique, envoyer une redirection ou déléguer la génération de réponse dynamique à un autre programme tel que des scripts CGI, des JSP (JavaServer Pages), des servlets, des ASP (Active Server Pages ), JavaScripts côté serveur ou une autre technologie côté serveur. Quel que soit leur objectif, ces programmes côté serveur génèrent une réponse, le plus souvent en HTML, à afficher dans un navigateur Web.

Comprenez que le modèle de délégation d'un serveur Web est assez simple. Lorsqu'une demande arrive sur le serveur Web, le serveur Web transmet simplement la demande au programme le mieux à même de la traiter. Le serveur Web ne fournit aucune fonctionnalité au-delà de la simple fourniture d'un environnement dans lequel le programme côté serveur peut exécuter et renvoyer les réponses générées. Le programme côté serveur fournit généralement des fonctions telles que le traitement des transactions, la connectivité de base de données et la messagerie.

Bien qu'un serveur Web ne prenne pas lui-même en charge les transactions ou le regroupement de connexions à la base de données, il peut employer diverses stratégies de tolérance aux pannes et d'évolutivité telles que l'équilibrage de charge, la mise en cache et la mise en cluster, des fonctionnalités souvent affectées à tort comme des fonctionnalités réservées uniquement aux serveurs d'applications.

Le serveur d'application

Quant au serveur d'applications, selon notre définition, un serveur d'applications expose la logique métier aux applications clientes via différents protocoles, y compris éventuellement HTTP. Alors qu'un serveur Web traite principalement l'envoi de code HTML à afficher dans un navigateur Web, un serveur d'applications fournit un accès à la logique métier à utiliser par les programmes d'application client. Le programme d'application peut utiliser cette logique comme il appellerait une méthode sur un objet (ou une fonction dans le monde procédural).

Ces clients de serveur d'applications peuvent inclure des GUI (interface utilisateur graphique) exécutées sur un PC, un serveur Web ou même d'autres serveurs d'applications. Les informations qui circulent entre un serveur d'applications et son client ne se limitent pas à un simple balisage d'affichage. Au lieu de cela, les informations relèvent de la logique du programme. Étant donné que la logique prend la forme d'appels de données et de méthodes et non de HTML statique, le client peut utiliser la logique métier exposée comme il le souhaite.

Dans la plupart des cas, le serveur expose cette logique métier via une API de composant, telle que le modèle de composant EJB (Enterprise JavaBean) trouvé sur les serveurs d'applications J2EE (Java 2 Platform, Enterprise Edition). De plus, le serveur d'applications gère ses propres ressources. Ces tâches de contrôle d'accès comprennent la sécurité, le traitement des transactions, la mise en commun des ressources et la messagerie. Comme un serveur Web, un serveur d'applications peut également utiliser diverses techniques d'évolutivité et de tolérance aux pannes.

Un exemple

Prenons par exemple une boutique en ligne qui fournit des informations sur les prix et la disponibilité en temps réel. Très probablement, le site fournira un formulaire avec lequel vous pouvez choisir un produit. Lorsque vous soumettez votre requête, le site effectue une recherche et renvoie les résultats intégrés dans une page HTML. Le site peut implémenter cette fonctionnalité de nombreuses manières. Je vais vous montrer un scénario qui n'utilise pas de serveur d'applications et un autre qui le fait. Voir en quoi ces scénarios diffèrent vous aidera à voir la fonction du serveur d'applications.

Scénario 1: serveur Web sans serveur d'applications

Dans le premier scénario, un serveur Web fournit à lui seul les fonctionnalités de la boutique en ligne. Le serveur Web prend votre demande, puis la transmet à un programme côté serveur capable de gérer la demande. Le programme côté serveur recherche les informations de tarification à partir d'une base de données ou d'un fichier plat. Une fois récupéré, le programme côté serveur utilise les informations pour formuler la réponse HTML, puis le serveur Web la renvoie à votre navigateur Web.

Pour résumer, un serveur Web traite simplement les requêtes HTTP en répondant avec des pages HTML.

Scénario 2: serveur Web avec un serveur d'applications

Le scénario 2 ressemble au scénario 1 en ce que le serveur Web délègue toujours la génération de réponse à un script. Cependant, vous pouvez désormais placer la logique métier pour la recherche de prix sur un serveur d'applications. Avec ce changement, au lieu que le script sache comment rechercher les données et formuler une réponse, le script peut simplement appeler le service de recherche du serveur d'applications. Le script peut ensuite utiliser le résultat du service lorsque le script génère sa réponse HTML.

Dans ce scénario, le serveur d'applications sert la logique métier pour rechercher les informations de tarification d'un produit. Cette fonctionnalité ne dit rien sur l'affichage ou sur la manière dont le client doit utiliser les informations. Au lieu de cela, le client et le serveur d'applications envoient des données dans les deux sens. Lorsqu'un client appelle le service de recherche du serveur d'applications, le service recherche simplement les informations et les renvoie au client.

En séparant la logique de tarification du code générateur de réponse HTML, la logique de tarification devient beaucoup plus réutilisable entre les applications. Un deuxième client, comme une caisse enregistreuse, pourrait également appeler le même service qu'un commis vérifie un client. En revanche, dans le scénario 1, le service de recherche de prix n'est pas réutilisable car les informations sont intégrées dans la page HTML. Pour résumer, dans le modèle du scénario 2, le serveur Web gère les requêtes HTTP en répondant avec une page HTML tandis que le serveur d'applications sert la logique d'application en traitant les demandes de tarification et de disponibilité.

Mises en garde

Récemment, les services Web XML ont brouillé la frontière entre les serveurs d'applications et les serveurs Web. En passant une charge utile XML à un serveur Web, le serveur Web peut désormais traiter les données et répondre de la même manière que les serveurs d'applications l'ont fait dans le passé.

En outre, la plupart des serveurs d'applications contiennent également un serveur Web, ce qui signifie que vous pouvez considérer un serveur Web comme un sous-ensemble d'un serveur d'applications. Alors que les serveurs d'applications contiennent des fonctionnalités de serveur Web, les développeurs déploient rarement des serveurs d'applications dans cette capacité. Au lieu de cela, en cas de besoin, ils déploient souvent des serveurs Web autonomes en tandem avec des serveurs d'applications. Une telle séparation des fonctionnalités améliore les performances (les requêtes Web simples n'affectent pas les performances du serveur d'applications), la configuration du déploiement (serveurs Web dédiés, mise en cluster, etc.) et permet une sélection de produits de premier ordre.

Tony Sintes est un consultant indépendant et fondateur de First Class Consulting, une société de conseil spécialisée dans la mise en relation de systèmes d'entreprise disparates et la formation. En dehors de First Class Consulting, Tony est un écrivain indépendant actif, ainsi que l'auteur de Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092).

En savoir plus sur ce sujet

  • Pour plus d' articles sur des serveurs d'applications, naviguer sur le serveurs d' applications Java section « JavaWorld Index par sujet s

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Vouloir plus? Consultez la page d'index des questions-réponses Java pour consulter le catalogue complet des questions-réponses

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Pour plus de 100 conseils Java perspicaces de certains des meilleurs esprits dans l'entreprise, visitez le « JavaWorld de Java Conseils page d' index

    //www.javaworld.com/columns/jw-tips-index.shtml

  • En savoir plus sur les serveurs d'application et les serveurs Web dans notre discussion Enterprise Java

    //forums.idg.net/[email protected]@.ee6b80a

  • Inscrivez - vous JavaWorld hebdomadaire gratuit » Enterprise Java newsletter

    //www.javaworld.com/subscribe

  • Vous trouverez une multitude d'articles liés à l'informatique provenant de nos publications sœurs sur .net

Cette histoire, "Serveur d'applications, serveur Web: quelle est la différence?" a été initialement publié par JavaWorld.