Cours partie1 elgarrai zineb

43
COURS : PROGRAMMATION CLIENT/SERVER CLIENT/SERVER 1 1 ELGARRAI zineb 2010-2011

description

Le module Développement des applications Client / Serveur

Transcript of Cours partie1 elgarrai zineb

Page 1: Cours partie1 elgarrai zineb

COURS : PROGRAMMATIONCLIENT/SERVERCLIENT/SERVER

11

ELGARRAI zineb 2010-2011

Page 2: Cours partie1 elgarrai zineb

RAPPEL SUR POO

Objet?Un objet est une entité cohérente rassemblant desdonnées et du code travaillant sur ses données

Classe?Une classe peut être considérée comme un moule àpartir duquel on peut créer des objets

on dit que les classes sont la méta donnée des objets

22

Page 3: Cours partie1 elgarrai zineb

RAPPEL SUR POORAPPEL SUR POO

L’encapsulation?

la séparation nette entre la partie publique d'un objet (oui f ) l d l' ili d l i i éinterface) seule connue de l'utilisateur de la partie privée ouimplémentation qui doit rester masquée.

Tous les langages orientés objet n'imposent pas derespecter le principe d'encapsulation C'est donc aurespecter le principe d encapsulation. C est donc auprogrammeur de veiller personnellement au grain.

33

Page 4: Cours partie1 elgarrai zineb

RAPPEL POO

L’héritage?

L'héritage est le second des trois principes fondamentauxd di i é bj Il h é d d i ldu paradigme orienté objet. Il est chargé de traduire leprincipe naturel de Généralisation / Spécialisation« La classe dérivée est une version spécialisée de sa classe« La classe dérivée est une version spécialisée de sa classede base »

L'héritage multiple est une extension au modèle d'héritageL héritage multiple est une extension au modèle d héritagesimple où l'on autorise une classe à posséder plusieursclasses mères afin de modéliser une généralisation multiple.g p

44

Page 5: Cours partie1 elgarrai zineb

RAPPEL POO

Classe abstraite?

Elle ne fournit pas d'implémentation pour certaines de cesméthodes qui sont dites méthodes abstraites.Une classe abstraite ne peut avoir d'instance.But des classes abstraites:définir un cadre de travail pour les classes dérivées en proposantun ensemble de méthodes que l'on retrouvera tout au long del'arborescence Ce mécanisme est fondamental po r la mise enl'arborescence. Ce mécanisme est fondamental pour la mise enplace du polymorphisme.

55

Page 6: Cours partie1 elgarrai zineb

RAPPEL POORAPPEL POO

Interface?

Une interface est semblable à une classe sans attribut (maispouvant contenir des constantes) dont toutes les méthodes sontabstraites.une classe implémente une interface si elle propose unei lé i h d é h d dé i i fimplémentation pour chacune des méthodes décrites en interfaceles méthodes décrites dans les interfaces sont, par définition,polymorphes puisqu'elles sont implémentées de façonpolymorphes puisqu elles sont implémentées de façonindépendante dans chaque classe implémentant une mêmeinterface

66

Page 7: Cours partie1 elgarrai zineb

RAPPEL POORAPPEL POO

Agrégation?

Un type de relation entre deux classes qui traduit cette foisl l i E é d P èdles relations « Est composé de ... » ou « Possède … » ou encore « a… ».L'une des caractéristiques principale de l'agrégation est saL une des caractéristiques principale de l agrégation est sacardinalité

77

Page 8: Cours partie1 elgarrai zineb

RAPPEL POO

Polymorphisme?

Il permet à une méthode d'adopter plusieurs formes surd l diffédes classes différentes.

L h ?La surcharge?

La surcharge est un mécanisme fréquemment proposé parl l d t i t d’ i êles langages de poo et qui permet d’associer au même nomde méthode / fonction / procédure différentes signatures.

88

Page 9: Cours partie1 elgarrai zineb

RAPPEL POORAPPEL POO

Constructeur?

Méthode spéciale, à mi chemin entre la méthode de classel é h d d'i h é d é l bjet la méthode d'instance chargée de créer un nouvel objet

en mémoire et d'initialiser son état.

99

Page 10: Cours partie1 elgarrai zineb

RAPPEL POORAPPEL POO

Message?

Unique moyen de communication fourni par les objets.U i i d d i h bi llUne invocation de message se traduit habituellement parl'activation d'une méthode.D'ailleurs dans la plupart des langages orientés objetD ailleurs, dans la plupart des langages orientés objetmodernes, il n'y a pas de distinction entre les notions demessage et de méthodeg

1010

Page 11: Cours partie1 elgarrai zineb

INTRODUCTIONA 2 ARCHITECTURE 2 TIERS

1111

Page 12: Cours partie1 elgarrai zineb

ARCHITECTURE 2-TIERS

Une architecture 2-tiers est composée de deux éléments, unclient et un serveur et où le tiers (Les parties) fait référencenon pas à une entité physique mais logiquenon pas à une entité physique mais logique.Représentation :

1212

Page 13: Cours partie1 elgarrai zineb

TACHES DU CLIENT

présentation des donnéesEnvoie des requêtes (Demandes)

1313

Page 14: Cours partie1 elgarrai zineb

TACHES DU SERVEUR

Sauvegarde des donnéesTraitement des requêtes (Réponse)

1414

Page 15: Cours partie1 elgarrai zineb

ARCHITECTURE 2 -TIERS

En définitive et dans la perspective d'une architecture 2-tiers avecn ser e r de base de données (SGBD) le schéma précédent seraun serveur de base de données (SGBD) le schéma précédent sera

plus exactement le suivant :

1515

Page 16: Cours partie1 elgarrai zineb

AVANTAGES D'UNE ARCHITECTURE 2-TIERS

le développement d'une architecture 2-tiers peut être réalisérapidement toute chose étant égale par ailleurs à lacomplexité du projetcomplexité du projet

La plupart des outils de développement dans l'architectureLa plupart des outils de développement dans l architecture2-tiers sont robustes et mènent d'eux mêmes à destechniques RAD (Rapid Application Development) quiq ( p pp p ) qpeuvent être utilisées pour s'assurer que les spécificationsdes utilisateurs sont précisément et totalement prises encompte.

1616

Page 17: Cours partie1 elgarrai zineb

LES INCONVÉNIENTS D’UNE ARCHITECTURE 2-TIERSLES INCONVÉNIENTS D UNE ARCHITECTURE 2-TIERS

problèmes de contrôle des évolutions de versions et de redistributionproblèmes de contrôle des évolutions de versions et de redistributiondes applicationsEn termes de sécurité l'architecture 2-tiers peut être complexe dans laEn termes de sécurité l architecture 2-tiers peut être complexe dans lamesure où il sera nécessaire à l'utilisateur d'avoir autant d'accèsprotégé par mot de passe que d'accès serveursp g p p ql'aspect propriétaire de l'application client. Le marché del'informatique se caractérise par volatilité de certaines de sesentreprises qui n'ont pas de fait une très longue pérennité. Dans cecontexte et ces contraintes, la question de la viabilité à long terme,d' ppli ti li t pr priét ir t élém t i ifi tif àd'une application client propriétaire, est un élément significatif àprendre en compte dans le choix d'une architecture 2-tiers.

1717

Page 18: Cours partie1 elgarrai zineb

TECHNOLOGIE ADO NETTECHNOLOGIE ADO.NET

1818

Page 19: Cours partie1 elgarrai zineb

TECHNOLOGIE ADO.NET

ADO .NET est un regroupement de types (classes,interfaces, …) dans l'espace de nom System.Dataconstruits par Microsoft afin de manipuler des donnéesconstruits par Microsoft afin de manipuler des donnéesstructurées dans le .NET Framework.ADO NET échange toutes ses informations au formatADO .NET échange toutes ses informations au formatXML

1919

Page 20: Cours partie1 elgarrai zineb

ADO.NETADO.NET

L'entité la plus importante d’ADO .NET permettant degérer les données en local dans une mémoire cachecomplètement déconnectée de la source de données (donccomplètement déconnectée de la source de données (doncindépendante de cette source) est le DataSet et lacollection de classes qui lui sont liées.q

2020

Page 21: Cours partie1 elgarrai zineb

LE MODÈLE OBJET ADO.NET

2121

Page 22: Cours partie1 elgarrai zineb

ADO.NET: DESCRIPTION DES OBJETSObjet Description

Connection Ouvre une connexion vers une source de d é é ifidonnées spécifique

Command Exécute une commande sur une source de donnéesdonnéesLit un flux de données à partir d'une source de données en mode connecté Le mode d'accès DataReader données en mode connecté. Le mode d accès est en lecture seule avec un curseur en avant seulement.

DataSetReprésente un ensemble de données en mode déconnecté. Il peut être constitué de DataSet plusieurs tables ainsi que des relations et contraintes existant entre elles. R lit D t S t t é t l i à 22

DataAdapter Remplit un DataSet et répercute les mises à jour dans la source de données.

22

Page 23: Cours partie1 elgarrai zineb

RÉSUMÉRÉSUMÉ

Pour le mode connecté:1- Connection2-Commanded3-Reader

Pour le mode déconnecté:1- Connection1 Connection2-Commande3 Dataset3-Dataset4-Dataadapter

2323

Page 24: Cours partie1 elgarrai zineb

FOURNISSEURS DE DONNÉES NET FOURNISSEURS DE DONNÉES .NET FRAMEWORK

2424

Page 25: Cours partie1 elgarrai zineb

RÔLE

Un fournisseur de données .NET Framework (FDNF) estutilisé pour la connexion à une base de données,l'exécution de commandes et l'extraction de résultatsl exécution de commandes et l extraction de résultatsCes résultats sont soit traités directement, soit accédés àdistance entre couchesdistance entre couches.Les FDNF créent une couche minimale entre la source dedonnées et votre code afin d'augmenter les performancesg psans sacrifier la fonctionnalité

2525

Page 26: Cours partie1 elgarrai zineb

LES FDNF INCLUS DANS LE .NET FRAMEWORK.

Fournisseur de données .NET Framework

Description

Fournisseur de données .NET Framework pour SQL Server

Fournit un accès aux données pour MicrosoftSQL Server version 7.0 ou ultérieure. Utilisel'espace de noms System Data SqlClientl espace de noms System.Data.SqlClient.

Fournisseur de données .NET Framework pour OLE DB

Pour les sources de données exposées à l'aide deOLE DB Utilise l'espace de nomsFramework pour OLE DB OLE DB. Utilise l espace de nomsSystem.Data.OleDb.

Fournisseur de données .NET Pour les sources de données exposées à l'aide deFramework pour ODBC

pODBC. Utilise l'espace de nomsSystem.Data.Odbc.

F i d d é NET P l d d é O l LFournisseur de données .NET Framework pour Oracle

Pour les sources de données Oracle. Lefournisseur de données .NET Framework pourOracle prend en charge le logiciel client Oracle à

26partir de la version 8.1.7 et utilise l'espace denoms System.Data.OracleClient.

26

Page 27: Cours partie1 elgarrai zineb

FDFNFDFN

Pour pouvoir faire appel aux classes proposées par ADO.Net il est nécessaire d'inclure une référence à l'espace denoms correspondant Vous pouvez soit inclure l'espacenoms correspondant. Vous pouvez soit inclure l espaceSystem.Data soit inclure des classes de cet espace commeSystem.Data.OleDb ou System.Data.SqlClient ; touty y q ;dépend de la source de données utilisée.

Imports System.Data

Imports System.Data.SqlClientp y q

2727

Page 28: Cours partie1 elgarrai zineb

LA DIFFÉRENCE ENTRE LE MODECONNECTÉ ET EN MODE DÉCONNECTÉ

2828

Page 29: Cours partie1 elgarrai zineb

LE MODE CONNECTÉLE MODE CONNECTÉ

Mode connecté :

Ce mode permet à un client de se connecter à un serveur de base ded é l li f l i ldonnées et tant que le client ne fermera pas la connexion, le serveurse souviendra de lui. Lorsque l'on désirera récupérer des informations(SELECT) on les recevra au compte-gouttes c'est-à-dire une par(SELECT), on les recevra au compte gouttes, c est à dire une parune.

2929

Page 30: Cours partie1 elgarrai zineb

LE MODE DÉCONNECTÉLE MODE DÉCONNECTÉ

Mode déconnecté :

Le but de ce mode est de récupérer en un bloc une portion del b d d é fi d' ff d i l lla base de données afin d'effectuer des traitements en localsur la machine du client. On aura donc une ouverture deconnexion à la base de données la récupération en un seulconnexion à la base de données, la récupération en un seulbloc du résultat puis la fermeture de la connexion.

3030

Page 31: Cours partie1 elgarrai zineb

RAPPEL SUR SQLEXERCICESEXERCICES

3131

Page 32: Cours partie1 elgarrai zineb

EXERCICES

1. Ecrire une requête qui permet de sélectionner tous les produits que la société commercialise.Aj d d i à l B D2. Ajouter des nouveaux produits à la B.D. ;

3. Supprimer le produit n° 1M difi l d d i ° 24. Modifier le nom du produit n° 2

3232

Page 33: Cours partie1 elgarrai zineb

Partie II : Intégrer les accès aux données dans

le client en mode connectéle client en mode connecté

3333

Page 34: Cours partie1 elgarrai zineb

L’OBJET CONNECTIONL OBJET CONNECTION

La connectivité à SQLServer est assurée par l'objetSqlConnection de l'espace de nomsSystem Data SqlClientSystem.Data.SqlClient.

vous devrez utiliser l'objet OleDbConnection si votrevous devrez utiliser l objet OleDbConnection si votrefournisseur est un fournisseur OleDb

L'ouverture d'une connexion est réalisée par la méthodeOpen et la fermeture par la méthode Close.Open et la fermeture par la méthode Close.

3434

Page 35: Cours partie1 elgarrai zineb

EXEMPLE DE GESTION D'UNE CONNEXION

Imports System.dataImp rt S t m D t SqlCli ntImports System.Data.SqlClient

Public Sub MaConnection() Dim strCon As String = "Data Source=localhost; IntegratedDim strCon As String = Data Source=localhost; Integrated Security=SSPI;" & "Initial Catalog=Nom_BD“

trytry Dim oConnection As SqlConnection = New SqlConnection(strCon)

oConnection.Open()Console.WriteLine("Etat de la connexion : " & oConnection.State)

oConnection.Close()catch e as Exception

Console.WriteLine("L'erreur suivante a été rencontrée :" & e.Message) End Try 35End Try

End Sub 35

Page 36: Cours partie1 elgarrai zineb

L’OBJET COMMANDUne fois la connexion vers une base de données effectuée, vouspouvez exécuter une requête et récupérer son résultat en utilisantl'objet Command.

La création d'un objet Command nécessite l'instanciation d'un objetSqlCommand. Cet objet expose différentes méthodes Execute à

ili l l é l dutiliser selon le résultat attendu :

L méth d E ec teReader p t êtr tili é p r ré pér r n jLa méthode ExecuteReader peut être utilisée pour récupérer un jeud'enregistrements et retourne un objet DataReader.La méthode ExecuteScalar récupère une valeur unitaireLa méthode ExecuteScalar récupère une valeur unitaire.La méthode ExecuteNonQuery exécute une commande neretournant pas de lignes. 36retournant pas de lignes. 36

Page 37: Cours partie1 elgarrai zineb

EXEMPLE D'UTILISATION D'UN OBJET COMMAND

Public Shared Sub Main()Di C A S i "D S l lh d S i SSP " " i i lDim strCon As String = "Data Source=localhost; Integrated Security=SSPI;" + "Initial

Catalog=Northwind"Dim strRequete As String = "INSERT INTO Region VALUES (5,'Sud')"Try

Dim oConnection As New SqlConnection(strCon)Dim oCommand As New SqlCommand(strRequete, oConnection)q ( q , )oConnection.Open()oCommand.ExecuteNonQuery()oConnection Close()oConnection.Close()

Catch e As Exception Console.WriteLine(("L'erreur suivante a été rencontrée :" + e.Message))

End TryEnd TryEnd Sub 'Main

End Class 'CommandeSQL3737

Page 38: Cours partie1 elgarrai zineb

L'OBJET DATAREADERL OBJET DATAREADER

L'objet DataReader permet de récupérer d'une source dedonnées un flux en lecture seule en avant seulement (readonly forward only) Il résulte de l'exécution de la méthodeonly, forward only). Il résulte de l exécution de la méthodeExecuteReader sur un objet Command.L'objet DataReader ne stocke en mémoire qu'une seuleL objet DataReader ne stocke en mémoire qu une seuleligne à la fois, permettant ainsi d'augmenter lesperformances d'une application et d'en réduire la charge.

3838

Page 39: Cours partie1 elgarrai zineb

L’OBJET DATAREADER

Il dé d' ili bj iIl est recommandé d'utiliser cet objet si :

V ' p b i d é li h d d éVous n'avez pas besoin de réaliser un cache des donnéesVous traitez un jeu d'enregistrements trop important pourêtre stocké en mémoireêtre stocké en mémoireVous souhaitez accéder à des données rapidement enlecture seule en avant seulement

Comme l'objet DataReader a été conçu pour accéder auxd é l d é il ê idonnées selon un mode connecté, il ne peut être transmisentre différents tiers applicatifs ce que réalisait unRecordset déconnecté. 3939

Page 40: Cours partie1 elgarrai zineb

L’OBJET DATAREADERL OBJET DATAREADER

Par défaut, un DataReader charge une ligne entière en mémoire àh q e ppel de l méthode Readchaque appel de la méthode Read.

Il est possible d'accéder aux valeurs de colonnes soit par leurs nomsIl est possible d accéder aux valeurs de colonnes soit par leurs nomssoit par leurs références ordinales.

Une solution plus performante est proposée permettant d'accéderaux valeurs dans leurs types de données natifs (GetInt32, GetDouble,G S i )GetString .)

Par exemple si la première colonne de la ligne indicée par 0 est dePar exemple si la première colonne de la ligne indicée par 0 est detype int, alors il est possible de la récupérer à l'aide de la méthodeGetInt32 de l'objet DataReader.

4040

Page 41: Cours partie1 elgarrai zineb

L’OBJET DATAREADER

Exemple:Dim iColonne As IntegerDim iColonne As IntegeriColonne = oDataReader.GetInt32(0)

La méthode Close ferme un objet DataReader.si l'objet Command utilisé contient des paramètres en sortie ou desj pvaleurs de retours, ils ne pourront être récupérés qu'a l'issue de lafermeture du DataReader.

Pour augmenter les performances, il est parfois nécessaire desoumettre plusieurs requêtes à la fois L'objet DataReader répond à cesoumettre plusieurs requêtes à la fois. L objet DataReader répond à cebesoin avec la méthode NextResult permettant de passer d'un jeud'enregistrement à un autre.

4141

Page 42: Cours partie1 elgarrai zineb

EXEMPLE D'EXTRACTION DE DONNÉES AVEC L'OBJETD RDATAREADER

Dim strCon As String = "Data Source=localhost; Integrated Security=SSPI;" + "Initial Catalog=North"

Dim strRequete As String = "SELECT CategoryID, CategoryName FROM Categories;« "Try

Dim oConnection As New SqlConnection(strCon)Dim oConnection As New SqlConnection(strCon)Dim oCommand As New SqlCommand(strRequete, oConnection)oConnection.Open()Dim oReader As SqlDataReader = oCommand.ExecuteReader()Do

Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}", oReader.GetName(0), oReader.GetName(1))

While oReader Read()While oReader.Read() Console.WriteLine(ControlChars.Tab + "{0}" + ControlChars.Tab + "{1}",

oReader.GetInt32(0), oReader.GetString(1)) End While

Loop While oReader.NextResult()oReader.Close()oConnection.Close()

Catch e As Exception 42Catch e As Exception Console.WriteLine(("L'erreur suivante a été rencontrée :" + e.Message))

End Try

42

Page 43: Cours partie1 elgarrai zineb

TP1Voir l’enoncé

4343