Cours partie1 elgarrai zineb

  • View
    540

  • Download
    14

  • Category

    Software

Preview:

DESCRIPTION

Le module Développement des applications Client / Serveur

Citation preview

COURS : PROGRAMMATIONCLIENT/SERVERCLIENT/SERVER

11

ELGARRAI zineb 2010-2011

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

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

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

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

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

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

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

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

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

INTRODUCTIONA 2 ARCHITECTURE 2 TIERS

1111

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

TACHES DU CLIENT

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

1313

TACHES DU SERVEUR

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

1414

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

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

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

TECHNOLOGIE ADO NETTECHNOLOGIE ADO.NET

1818

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

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

LE MODÈLE OBJET ADO.NET

2121

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

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

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

2424

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

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

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

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

2828

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

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

RAPPEL SUR SQLEXERCICESEXERCICES

3131

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

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

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

3333

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

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

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

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

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

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

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

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

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

TP1Voir l’enoncé

4343