Hi Web, création de sites internet en Suisse
à Yverdon-les-Bains
Téléphone
078 914 86 22
E-mail
info@hiweb.ch

Différence entre un serveur d’application et un serveur web

Différence entre un serveur d'application et un serveur web

Quelle est la différence entre un serveur web et un serveur d’application ?

Aujourd’hui nous allons essayer de répondre à la question  que tout développeur amateur s’est posé, au moins une fois dans sa vie :  “Quelle est la différence entre un serveur web et serveur d’application ? “.

Pour répondre à cette question je vous propose d’exposer les différentes couches à empiler pour arriver à monter un serveur d’application.

Couche 1 : Serveur web Http

Pour commencer, il nous faut tout d’abord :  Un serveur http, c’est un serveur qui gère exclusivement des requêtes HTTP. Il a pour rôle d’intercepter les requêtes Http, sur un port qui est par défaut 80, pour les traiter  et générer ensuite des réponses Http. Tous les serveurs web embarquent un daemon Http (httpd) ou équivalent  qui s’occupe de cette fonctionnalité.

La couche n 1 : Serveur Web Http

Pour commencer, il nous faut tout d’abord :  Un serveur http, c’est un serveur qui gère exclusivement des requêtes HTTP. Il a pour rôle d’intercepter les requêtes Http, sur un port qui est par défaut 80, pour les traiter  et générer ensuite des réponses Http. Tous les serveurs web embarquent un daemon Http que l’on nomme (httpd) ou équivalent  qui s’occupe de cette fonctionnalité ou tâche.

Exemple de serveurs web connu : Nginx, Apache, Lighttpd, IIS…Les fonctionnalités d’un serveur WEB :

A part sa fonction basique qui est d’intercepter et de donner des réponse en Http, un serveur web  peut avoir d’autres fonctionnalités comme:

  • La gestion du contenu, comme la redirection des requêtes http, la personnalisation des messages d’erreurs, ou la gestion des timeout..
  • La gestion de la sécurité, comme les fonctionnalités de restriction des accès par domaine, par utilisateur, par groupe ou par adresse IP,

dans le serveur apache par exemple ces fonctionnalités sont implémentées sous forme de modules (mod_alias, mod_authn_core, mod_proxy…).

Couche n 2 : Conteneur web

Ensuite, on va étendre notre serveur web pour devenir un conteneur Web. Cette extension va permettre d’avoir la possibilité d’exécuter des programmes écrits avec des langages de programmation ( java, php, C# ou autres ) dans le serveur web.

Par exemple le serveur Tomcat n’est autre qu’un serveur Apache couplé avec un moteur web java et, les serveurs tel-que easyPhp, wamp ou Xamp ne sont que des serveurs Apaches couplés avec un moteur web php.

 

Maintenant, on va se concentrer sur le serveur Tomcat qui est un conteneur web java (et pas un serveur d’application jee), pour analyser son architecture.

 

Le conteneur web Tomcat, est composé d’un moteur jsp, un moteur servlet et d’un descripteur de déploiement pour les modules web de type war. Ces moteurs sont en réalité des API qui sont implémentés dans le serveur Tomcat, et qui permettent de faire déployer seulement des applications web Java de type war.

Les applications java de type EAR, ne peuvent pas être déployées dans Tomcat, parce que tout simplement le serveur manque les API nécessaires et conformes aux spécifications  pour l’implémentation des serveurs d’application java jee.

Par exemple, si vous utiliser la bibliothèque JPA dans votre application web et vous le déployez sur un serveur Tomcat, vous serez obligé d’embarquer les jars JPA dans le répertoire lib de l’application, alors que si vous déployez sur un serveur d’application comme JBOSS, vous n’aurez besoin d’aucun jar additionnel.

Couche 3 : Serveur d’application

Donc, vous l’avez bien compris, il faut étendre encore plus le serveur Tomcat pour devenir un vrai serveur d’application java jee.

L’extension nécessaire est composée de deux parties essentielles :

  1. Un conteneur EJB qui encapsule les traitements des Entreprise JavaBeans.
  2. Un ensemble de services répartie en :
    1. Des services d’infrastructures
      1. JDBC (Java DataBase Connectivity) API d’accès aux bases de données relationnelles.
      2. JNDI (Java Naming and Directory Interface) API d’accès aux services de nommage et aux annuaires d’entreprises.
      3. JTA/JTS (Java Transaction API/Java Transaction Services) API pour la gestion de transactions.
      4. JCA (JEE Connector Architecture) API de connexion au système d’information de l’entreprise comme les ERP.
      5. JMX (Java Management Extension)  API permettant de développer des applications web de supervision d’applications
    1. Des services de communication:
      1. JAAS (Java Authentication and Authorization Service) API de gestion de l’authentification.
      2. JavaMail API pour la gestion de courrier électronique.
      3. JMS (Java Message Service) API de communication asynchrone entre application.

 

Tableau comparatif d’un serveur d’application avec un serveur web

Serveur webServeur d’application
Déploiement WAROui checkOuicheck
Déploiement EARNon (seulement servlets et  JSP) cancelOuicheck
Pool de connexionNon cancelOuicheck
Gestion des transactions distribuéesNoncancelOuicheck
Traitement JMSNon cancelOuicheck
ClustringNon cancelOuicheck
Load balancingNon cancelOuicheck
FonctionnellementHéberge exclusivement des applications web (Ihm ou web service)  en accès HTTP Peut héberger en plus des applications d’entreprise EAR qui utilisent des ressources JMS

Comments

  1. Merci pour cet excellent article.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *