Vous êtes sur la page 1sur 26

Développement d'application

client/serveur
avec le langage C#

1
Plan

1. Architecture Client/Serveur
2. Architecture 2-tiers
3. Architecture 3-tiers
4. Architecture n-tiers
5. ADO.NET
6. Fournisseurs de données
7. Architecture ADO.NET
8. Modes de connexion
7. Mode connecté
8. Mode déconnecté

2
Architecture Client/Serveur
• L'environnement client-serveur désigne un mode
de communication à travers un réseau entre
plusieurs ordinateur : l'un, qualifié de client, envoie
des requêtes ; l'autre, qualifié de serveur, attend
les requêtes des clients et y répond.
• En général, les serveurs sont des ordinateurs
dédiés au logiciel serveur, et dotés de capacités
supérieures à celles des ordinateurs personnels en
termes de puissance de calcul, d'entrées-sorties et
de connexions réseau.
• Les clients sont souvent des ordinateurs personnels.
Clients

3
Architecture Client/Serveur
Avantages de cette architecture :
• Unicité de l'information : pour un site web
dynamique par exemple , certains articles du site sont
stockés dans une base de données sur le serveur. De
cette manière, les informations restent identiques.
Chaque utilisateur accède aux mêmes informations.
• Meilleure sécurité : Lors de la connexion un PC
client ne voit que le serveur.
• Meilleure fiabilité : En cas de panne, seul le serveur
fait l'objet d'une réparation.
• Facilité d'évolution : Une architecture client/serveur
est évolutive car il est très facile de rajouter ou
d'enlever des clients, et même des serveurs.

4
Architecture Client/Serveur

Inconvénients de cette architecture :

• Un coût d'exploitation élevé (bande passante, câbles,


ordinateurs surpuissants)
• Si trop de clients veulent communiquer avec le
serveur au même moment, ce dernier risque de ne
pas supporter la charge.
• Si le serveur n'est plus disponible, plus aucun des
clients ne fonctionne

5
Architecture 2-tiers

• Ce type d'architecture (2-tier en anglais) caractérise


les environnements client-serveur où le poste client
demande une ressource au serveur (serveur de base
de données) qui la fournit à partir de ses propres
ressources.

6
Architecture 3-tiers
L'architecture logique du système est divisée en trois
niveaux ou couches :
• couche présentation: Un client équipé d'une interface
utilisateur (généralement un navigateur web).
• couche métier: Un serveur d'application (appelé
middleware) qui fournit la ressource.
• couche accès aux données: Un serveur de données
qui fournit au serveur d'application les données
requises pour répondre au client.
Métier
Présentation
Accès aux données

7
Architecture n-tiers

• L'architecture n-tiers est aussi appelée architecture


distribuée ou architecture multi-tiers.

• L'architecture n-tiers qualifie la distribution


d'applications entre de multiples services.

• Elle permet de tirer pleinement partie de la notion de


composants métier réutilisables et modulables.

8
ADO.Net

• ADO.Net est la bibliothèque logicielle d’accès aux


données fournie dans le Framework .Net. C’est un
ensemble de classes permettant de récupérer et de
manipuler des données.

• La connexion à une source de données s’effectue


par le biais d’un fournisseur.

9
Fournisseurs de données

• Chaque fournisseur de données permet la


communication avec un type de base de données.
• Ces fournisseurs permettent de récupérer et de
transférer des modifications entre l’application et
une base de données.
• Toutes les classes permettant d’utiliser ces
fournisseurs se trouvent dans l’espace de nom
System.Data. Sur le Framework 3.5, il existe
quatre types de fournisseurs : Sql Server , OLE DB,
ODBC, Oracle.

10
Fournisseurs de données
Plusieurs espaces de noms sont disponibles avec ADO .Net
parmi lesquels :
• OleDb: System.Data.OleDb
OleDB est une interface permettant l'accès " universel "
aux données de n'importe quel type indépendamment de
leur format ou de leur méthode de stockage (Excel,
fichiers texte,…).
• ODBC(Open Database Connectivity): System.Data.Odbc
ODBC permet d'interfacer de façon standard une
application à n'importe quel serveur de bases de
données.
Le logiciel ODBC de Microsoft est fourni avec les pilotes
pour les SGBD: Access, SQL Server,….

11
Fournisseurs de données

• Sql Server : System.Data.SqlClient


Fournisseur de données spécifiques pour SGBD SQLServer.

• Oracle: System.Data.OracleClient

Propose un accès à des sources de données Oracle (v8.1.7


ou supérieure)

12
Architecture ADO.NET

13
Accéder à la base de données
• Pour dialoguer avec la base de données, tous les
fournisseurs implémentent les classes suivantes:
Objet Description
Ouvre une connexion vers une source de données
Connection
spécifique
Command Exécute une commande sur une source de données

Lit un flux de données à partir d'une source de


DataReader données en mode connecté. Le mode d'accès est en
lecture seule.

Représente un ensemble de données en mode


déconnecté. Il peut être constitué de plusieurs tables
DataSet
ainsi que des relations et contraintes existant entre
elles.

Remplit un DataSet et transmettre les mises à jour


DataAdapter
dans la source de données.

14
Modes de connexion
• L’ADO.NET permet de séparer les actions d’accès ou
de modification d’une base de données.
L’ADO.NET permet l’accès à la base de données en
deux modes:

 Le mode connecté : accès direct et en temps réel


à la base de données

 Le mode déconnecté : manipuler une base de


données sans être connecté à celle-ci, il suffit juste
de se connecter pendant un court laps de temps
afin de faire une mise à jour.

15
Modes de connexion
Modes Avantages Inconvénients

- La connexion est permanente, - gaspille beaucoup de ressource:


par conséquence les données tous les utilisateurs ont une
sont toujours à jour. connexion permanente avec le
Connecté - La gestion est simple, il y a serveur, même si l’utilisateur n’y
connexion au début de fait rien. Ce qui entraine aussi
l’application puis déconnexion à des problèmes d’accès au réseau.
la fin.

-il est possible de brancher un


nombre important d’utilisateurs
- Les données ne sont pas
sur le même serveur. En effet,
toujours à jour, ce qui peut aussi
ils se connectent le moins
Déconnecté entrainer des conflits lors des
souvent et durant la plus courte
mises à jour.
durée possible.
- l’application gagne en
performance par la disponibilité
des ressources pour les
connexions.
16
17
Objet Connection
• Chaine de connexion:
Voici Quelques paramètres disponibles dans la chaine de
connexion:
Paramètre Description

Data Source Indique le nom ou l’adresse réseau du serveur.


Initial Catalog
Indique le nom de la base de données .

Indique s’il faut un nom et un mot de passe. Si la


Integrated
valeur et sur False, un login et password seront
Security
demandés.

Indique le mot de passe associé au compte SQL


Pwd
Server.

User ID Indique le nom du compte SQL Server.

18
Objet Connection
• OleDB: base de donnée ACCESS
using System.Data.OleDb;
class Connexion
{
static void Main(string[] args)
{
string source ="Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\\bd1.accdb"; //chaîne de la connexion: Provider=nom du fournisseur
OleDbConnection connexion = new OleDbConnection(source);
try {
connexion.Open(); //ouvrir la connexion
}
catch (Exception ex) { Console.WriteLine("problème de connexion,
"+ex.Message); }
connexion.Close(); //fermer la connexion
}
} 19
Objet Connection
• ODBC: base de donnée ACCESS
Il faut ajouter d’abord la base de données dans l’utilitaire de Windows « Sources
de données ODBC »
using System.Data.Odbc;
class Connexion
{
static void Main(string[] args)
{
string source = " Dsn=bd1"; /*chaîne de la connexion: Dsn=nom de la
source de données*/
OdbcConnection connexion = new OdbcConnection(source);
try { connexion.Open();
}
catch (Exception ex) { Console.WriteLine(« problème de connexion,
"+ex.Message); }
connexion.Close();
} } 20
Objet Connection
• Sql Server: base de donnée Microsoft Sql Server
using System;
using System.Data.SqlClient;
class Connexion
{
static void Main(string[] args)
{
string source = "Data Source=SARA\\SQLEXPRESS01; Initial
Catalog=db1;Integrated Security=True; ";
SqlConnection connexion = new SqlConnection(source);
try { connexion.Open();
}
catch (Exception ex) { Console.WriteLine("problème de connexion,
"+ex.Message); }
connexion.Close();
} }
21
Objet Command
• les requêtes SQL et les procédures stockées sont
exécutées à partir de l’objet Command:

SqlCommand commande= new SqlCommand();


commande.Connection = connexion;
commande.CommandText = "SELECT * FROM Client";

Ou:
SqlCommand commande = new SqlCommand("SELECT * FROM Client",
connexion);

Ou:
SqlCommand commande = connexion.CreateCommand();
commande.CommandText = "SELECT * FROM Client";

22
Objet Command
• Exécuter une requête (INSERT,UPDATE,DELETE):
commande.ExecuteNonQuery();
Exemple:
SqlCommand commande= new SqlCommand();
commande.Connection = connexion;
commande.CommandText =
"DELETE FROM maTable WHERE id < " +valeur;
int nbEnregistrementsAffectes = commande.ExecuteNonQuery();
if (nbEnregistrementsAffectes > 0)
{ Console.WriteLine(nbEnregistrementsAffectes + " enregistrements su
pprimés");
}
else
{ Console.WriteLine("Aucun enregistrement supprimé"); }
23
Objet Command
• Exécuter une requête (SELECT):
 La Requête Retourne un objet:
commande.ExecuteScalar ();
Exemple:
commande.CommandText =
"SELECT NomClient FROM Clients WHERE IdClient = " +valeur;
string nomDuClient = commande.ExecuteScalar().ToString();
Console.WriteLine("Mon client s'appelle " + nomDuClient);

24
Objet DataReader
• Exécuter une requête (SELECT):
 Retourne plusieurs enregistrements (DataReader):
SqlDataReader reader = maCommande.ExecuteReader();
On n'oublie pas de fermer le reader : reader.Close();
Exemple:
commande.CommandText = "SELECT idClient,nomClient FROM Clients " ;
SqlDataReader reader = commande.ExecuteReader();
while (reader.Read()){
Console.WriteLine(reader["idClient"].ToString() + " ," + reader["nomClient"].ToSt
ring());
// ou
Console.WriteLine(reader[0].ToString() + " ," + reader[1].ToString());
}
reader.Close();
25
Exemple
using System;
using System.Data. SqlClient;
class Connexion{
static void Main(string[] args)
{
string source = "Data Source=SARA\\SQLEXPRESS01; Initial Catalog=bd1;Integrated
Security=True";
SqlConnection connexion = new SqlConnection(source);
connexion.Open();
SqlCommand commande= new SqlCommand();
commande.Connection = connexion;
commande.CommandText = "select * from Clients " ;
SqlDataReader reader = commande.ExecuteReader();
while (reader.Read()){
Console.WriteLine(reader["idClient"].ToString() + " ," + reader["nomClient"].ToString());
// ou
Console.WriteLine(reader[0].ToString() + " ," + reader[1].ToString()); }
reader.Close();
connexion.Close();
26
}

Vous aimerez peut-être aussi