Vous êtes sur la page 1sur 20

12/10/2020

Cours
Architectures n-tiers et orientées
services
NAHLA HADDAR
MAÎTRE ASSISTANT, ISIM-
ISIM-SFAX, UNIVERSITÉ DE SFAX
MEMBRE DU LABORATOIRE MIRACL

AUDITOIRES: LFIIM3, LATMW3


© 2018
2018--2021

1
Avant propos

 L’objectif de ce cours est d’initier les étudiants à l’implémentation


de différents types d’architectures (1, 2, 3 et n tiers) en utilisant les
technologies Java, JEE, et JAX-RS

1
12/10/2020

Architectures CHAPITRE 1 :
EVOLUTION DES ARCHITECTURES
Web WEB

3
Plan du chapitre

 1ère génération- Architecture centralisée (1-tiers),


 2ème génération- Architecture client-serveur (2-tiers)
 3ème génération- Architecture client-serveur (3-tiers)
 4ème génération- Architecture n-tiers et orientées
services

2
12/10/2020

4
Rappel

 Les trois couches d’une application:


o Présentation
o Traitement
o Données
 Le découpage et la répartition de ces couches permettent de distinguer les
architectures applicatives suivantes :
o L'architecture 1-tiers,
o l'architecture 2-tiers,
o l'architecture 3-tiers,
o les architectures n-tiers.

5
1ère génération- Architecture centralisée
(1-tiers)
 Avantages:
o Assure la haute disponibilité et l’intégrité
des données, et offre à l’entreprise un
système cohérent et fiable.
o Coût d’administration faible
 Inconvénients:
o Interface utilisateur en mode caractères
o La performance du système tout entier
repose sur les capacités de traitement de
l'ordinateur central, c'est la raison pour
laquelle ce modèle est parfois qualifié
d'« informatique lourde ».
Présentation
+
Traitement

3
12/10/2020

6
2ème génération- Architecture client-
serveur (2-tiers)

 La gestion des données est prise en


charge par un SGBD centralisé,
s’exécutant le plus souvent sur un Présentation
serveur de BD. +
Traitement
 L’ensemble des traitements sont
applicatifs par le poste client.
 Avantage: interface utilisateur riche
 Inconvénients:
o Client lourd
o Mauvaise sécurité: exposition du
schéma des BDs aux clients

7
3 ème génération - Architecture client-
serveur (3-tiers) (1/5)

 Lorsque nous accédons à un site Internet, nous utilisons la technologie Client-


serveur.
 Il nous faut :
o Une application cliente (navigateur Web : Mozilla Firefox, Google Chrome, Internet
Explorer) auquel nous fournissons l’adresse du site recherché du type
http://www.unsite.net.
o Une application serveur (serveur Web : AppacheHTTP Server, IIS-Internet Information
Server, Tomcat).
o Un protocole HTTP (HyperText Transfer Protocol): Le protocole HTTP décrit les
mécanismes d’organisation et de transmission des données numériques lors d’un
échange entre un client (le navigateur) et un serveur Web

4
12/10/2020

8
3 ème génération - Architecture client-
serveur (3-tiers) (2/5)

 L’application Cliente envoie une requête au serveur Web désigné par l’URL
(Uniform Resource Locator) .

9
3 ème génération - Architecture client-
serveur (3-tiers) (3/5)

 Le serveur Web contacté répond au client en affichant l’ensemble des


informations stockées et organisées sur son disque dur à l’URL donnée.

5
12/10/2020

10
3 ème génération - Architecture client-
serveur (3-tiers) (5/5)
Tier 1 Tier 2 Traitement Tier 3
Requête HTTP
Présentation Serveur web
Réponse HTTP Ou Serveur Serveur
d’applications BD
Poste Client

 Les données sont toujours gérées de façon centralisée,


 La présentation est toujours prise en charge par le poste client,
 La logique applicative est prise en charge par un serveur web ou un serveur
d’applications,
 Avantages: client léger, sécurité (pas d’exposition du schéma de la BD).
 Inconvénient: importante charge pour le serveur d’applications.

11
Serveur de BD

 C’est un système entièrement dédié à la gestion des données en


gérant les accès concurrents et la confidentialité des données.

 Un outil d’administration des informations de façon centralisée.

 MySQL est un exemple de serveur de bases de données libres


fiables et très performants.

 Oracle, Sybase et Microsoft (SQLServer) se répartissent le marché


des serveurs de bases de données.

6
12/10/2020

12
Serveur web VS. Serveur d’application

 Un Serveur web c’est pour les sites web.


o Un serveur web = serveur http + interpréteur (par exemple interpréteur pour le
langage PHP)
 Un Serveur d’applications c’est pour les applications web
o Un serveur d’applications = serveur http + conteneur web
 Un site Web est un ensemble de pages Web stockés dans un
serveur , alors qu’une application web est une application
informatique classique. La seule différence est qu'elle doit formater
son résultat (ses informations de sortie) en HTML au lieu de les écrire
sur la console ou dans une interface graphique.

13
Serveur d’applications

 Exemples: il en existe plusieurs sur le marché, que l'on peut découper


en deux secteurs.
o les solutions propriétaires et payantes : WebLogic et WebSphere, respectivement
issues de chez Oracle et IBM, sont les références dans le domaine. Massivement
utilisées dans les banques et la finance notamment, elles sont à la fois robustes,
finement paramétrables et très coûteuses.

o les solutions libres et gratuites : Apache Tomcat, JBoss, GlassFish et Jonas en sont
les principaux représentants.

7
12/10/2020

14
Protocole HTTP (1/3)

15
Protocole HTTP (2/3)

 Principe du fonctionnement du protocole HTTP :


1. En tapant l’URL d’un site, l’internaute envoie une requête au serveur.
2. Une connexion s’établie entre le client et le serveur sur le port 80.
3. Le navigateur envoie une requête à l’aide de la méthode Get, Post qui précise
comment l’information est envoyée.
4. Le serveur répond à la requête en envoyant une réponse HTTP composé d’un code
(200 pour un accord, 400 pour une erreur due au client, 500 pour une erreur due au
serveur) et les données à afficher.
5. La connexion est fermée. Pour afficher une nouvelle page du site, une nouvelle
connexion doit être établie

8
12/10/2020

16
Protocole HTTP (3/3)

 Les méthodes GET() et POST():


o GET( ) : requête avec des valeurs (paramètres).
 Lorsque les paramètres sont visibles dans l’URL, cela signifie que la méthode utilise
pour envoyer la requête est la méthode GET.
 L’URL http://www.unsite.net/rechercher?nom=karim&prenom=saleh
 Inconvénients :
 Rendre visible des données sensibles telles qu’un mot de passe ou un code de carte
bancaire.
 La longueur de la chaîne transférée est limitée.

o POST( ) : envoie les paramètres dans le corps de la requête et non via l’URL.
 Aucune valeur n’apparaît dans l’URL

17
4ème génération- Architecture n-tiers et
orientées services
Requête HTTP Traitement

Réponse HTTP
Présentation
Serveur
Poste Client BD
Serveurs web ou
d’applications
 Principe Répartir la charge du serveur applicatif sur n serveurs d’applications.
Principe:
 Avantage:: capacité de répondre à un grand nombre de requête dans un
Avantage
temps optimisé.
 Inconvénient: problème d’interopérabilité (exprime la capacité du serveur
Inconvénient:
d’application à communiquer et à utiliser les ressources d'autres serveurs
comme, par exemple, les documents créés par une certaine application).

9
12/10/2020

18
Références
 R. Courdier, cours «Urbanisation des Systèmes d’Information », Laboratoire d’Informatique et de Mathématique (LIM), 2015, URL:
http://lim.univ-reunion.fr/staff/courdier/old/cours/si/2_Urbanisme_des_SI.mht

 W3C Working Group Note, Web Services Architecture, 2004, URL: https://www.w3.org/TR/ws-arch/

 C. Plumejeaud, EAI (Enterprise Application Integration), Urbanisation des SI - NFE107, Fiche de lecture, 2008,

URL: http://lig-membres.imag.fr/plumejeaud/NFE107-fichesLecture/EAI.ppt

 Y. Pollet, Architectures : du client-serveur à la SOA (Introduction aux architectures réparties), CNAM, Chaire d’intégration des
systèmes.

 Humberto Cervantes, thèse « Vers un modèle à composants orienté services pour supporter la disponibilité dynamique », LSR, équipe
Adèle.

 T. Zlitni, cours « développement web 2.0 » , université de Sfax, ISIMS, 2013.

 Xebia Business Integration Architect, Comprendre et Savoir utiliser un ESB dans une SOA, Xebia, 2007,

URL: http://xebia.developpez.com/tutoriels/java/esb-soa/

Chapitre 2 – Gestion de
bases de données en
Java
COURS ARCHITECTURE N-TIERS ET ORIENTÉES SERVICES
DR. NAHLA HADDAR OUALI
AUDITOIRES: LFIIM3, LATMW3
© 2019-2020

10
12/10/2020

20
Plan du Chapitre

 Introduction

 Étapes d’accès à une base de données

 Exception SQLException

 Établir une connexion à la base

 Gestion des requêtes et récupération des résultats

21
Introduction

 JDBC : Java Data Base Connectivity


o Est une API fournie avec Java (depuis sa version 1.1) permettant de se
connecter à des bases de données.
o L'API JDBC a été développée de telle façon à permettre à un programme de
se connecter à n'importe quel serveur de base de données en utilisant la même
syntaxe, c'est-à-dire que l'API JDBC est indépendante du SGBD.
o Seule la phase de connexion au SGBD change
 Permet de faire tout type de requêtes
o Sélection de données dans des tables, création de tables et insertion
d'éléments dans les tables, etc.
 Packages : java.sql

11
12/10/2020

22
Étapes d'accès à une BDD
 Première étape
o Précisez le type de « driver » que l'on veut utiliser
o Le Driver permet de gérer l'accès à un type particulier de SGBD
 Deuxième étape
o Récupérez un objet « Connection » en s'identifiant auprès du SGBD et en précisant la base
utilisée
 Etapes suivantes
o A partir de la connexion, créez un « Statement » (état) correspondant à une requête
particulière
o Exécutez ce Statement au niveau du SGBD
o Fermez le Statement
 Dernière étape
o Se déconnectez de la base en fermant la connexion

23
Exception SQLException

 Toutes les méthodes étudiées dans ce cours peuvent lever


l'exception SQLException
 Exception générique lors d'un problème d'accès à la base, lors de
la connexion ou d'une requête.
 Opérations possibles sur cette exception:
o int getErrorCode() : le code de l'erreur renvoyé par le SGBD (et
dépendant du type du SGBD)
o void printStackTrace(): affiche le message d’erreur sur le console
o String getMessage(): retourne le message d’erreur

12
12/10/2020

24

Établir une
connexion à la CHAPITRE 3 – GESTION DE BASES DE
DONNÉES EN JAVA

base

25
Choix du Driver

 Classe DriverManager
o Gestion du contrôle et de la connexion au SGBD
 Méthodes principales:
o static void registerDriver(Driver driver)
 Télécharge et enregistre une instance du Driver d’un type de
SGBD particulier
 Le driver est dépendant du SGBD utilisé

13
12/10/2020

26
Choix du Driver

 Exemples de Drivers selon le type de la base de


données:

Base de données Classe du Driver


Derby org.apache.derby.jdbc.ClientDriver
MySQL com.mysql.jdbc.Driver
Oracle oracle.jdbc.driver.OracleDriver
Postgre org.postgresql.Driver
MS Access sun.jdbc.odbc.JdbcOdbcDriver
Microsoft SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver

27
Récupérer l’objet Connection

 Toujours dans la Classe DriverManager


 static Connection getConnection(String url, String user,
String password)
o Crée une connexion permettant d'utiliser une base
o Peut lancer une exception SQLException
o url : identification de la base considérée sur le SGBD
 Format de l'URL est dépendant du SGGB utilisé
o user : nom de l'utilisateur qui se connecte à la base
o password : mot de passe de l'utilisateur

14
12/10/2020

28
Exemple : Accès à une base Derby

 Paramètres de la base:
connexionBD
o Fonctionne sur le serveur localhost sur le port 1527
o Base s’appelle « testDB»
o Utilisateur qui se connecte : « root», mot de passe : « admin»

29
Autres exemples d’URL de BD

Base de données Exemple d’URL de BD

MySQL jdbc:mysql://localhost:3306/myDBName
Oracle jdbc:oracle:thin:@localhost:1521:myDBName
Postgre jdbc:postgresql://localhost:5432/myDBName
MS Access jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)}; DBQ=myDBName.mdb;
Microsoft SQL Server jdbc:sqlserver://localhost:1433;databaseName=
myDBName

15
12/10/2020

30

Gestion des
requêtes et CHAPITRE 3 – GESTION DE BASES DE

récupération
DONNÉES EN JAVA

des résultats

31
Exécution d’une requête

 Étape1 - créer un statement


o Classe: Connection
o Méthode d’objet: public Statement createStatement()
o Exemple:

Con est un objet de type Connection


 Étape 2 - définir et exécuter l’ordre: deux types d'ordres possibles
o Update : mise à jour du contenu de la base
o Query : consulation (avec un select) des données de la base

16
12/10/2020

32
Méthodes de la classe Statement
 Ordre de type Query:
o Méthode: ResultSet executeQuery(String ordre)
 Exécute un ordre de type SELECT sur la base
 Retourne un objet de type ResultSet contenant tous les résultats de la requête
 Ordre de type Update:
o Méthode: int executeUpdate(String ordre):
 Exécute un ordre de type INSERT, UPDATE, DELETE, CREATE Table, etc.
 Retourne un entier indiquant le nombre de tuples (lignes) modifiés pour un INSERT, UPDATE et
DELETE, ou alors 0 pour les instructions ne retournant rien (CREATE par exemple)
 void close(): Ferme l'état
o Exemple: supposons que « con » est un objet de type Connection qui établie une
connexion à la BD.

33
Lecture des résultats d’une sélection (1/2)
Classe ResultSet
 Contient les résultats d'une requête SELECT
o Plusieurs lignes contenant plusieurs colonnes
o On y accède ligne par ligne puis valeur par valeur dans la ligne
 Accès aux colonnes/données dans une ligne
o [type] get[Type](int col) ou [type] get[Type](String name_col)
 Retourne le contenu de la colonne col dont l'élément est de type [type], avec
[type] pouvant être String, int, float, boolean ...

Exemple:

17
12/10/2020

34
Lecture des résultats d’une sélection (2/2)

Classe ResultSet
 Changements de ligne:
o boolean next(): Se place à la ligne suivante s'il y en a une
 Retourne true si le déplacement a été fait, false s'il n'y avait pas d'autre ligne
o boolean previous(): Se place à la ligne précédente s'il y en a une
 Retourne true si le déplacement a été fait, false s'il n'y avait pas de ligne précédente
o boolean absolute(int index): Se place à la ligne numérotée index
 Retourne true si le déplacement a été fait, false sinon

 Fermeture du ResultSet
o void close()

35
Exemple (1/3)

 Soit une base de données qui contient les deux tables suivantes:
o categorie (codecat, libellecat)
o produit (codprod, nomprod, #codecat)
1. Lister toutes les caractéristiques de toutes les catégories.
2. Ajouter une catégorie « céréales » de code 5 dans la table
catégories

18
12/10/2020

36
Exemple (2/3): Liste des catégories

connexionBD ();

con.close();

37
Exemple (3/3): Ajout d’une catégorie

connexionBD ();

con.close();

19
12/10/2020

38
Références

 Eric Cariou, cours «Introduction à JDBC, Accès aux bases de données en


Java», Université de Pau et des Pays de l’Adour, dép. Informatique, Janvier
2010,
 Cyrille Herby , Tutoriel «JDBC : la porte d'accès aux bases de données», avril
2018
URL: https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-
en-java/26258-jdbc-la-porte-dacces-aux-bases-de-donnees

20

Vous aimerez peut-être aussi