C# Programming Introduction

Programming · course

Voir tous les documents en programmation

Introduction C#

1

Langage C# :

Dans ce cours, C# est utilis afin dassembler une application d velopp e avec .NET.

La compilation en C# ne donne pas un programme binaire, contrairement au C et au C++. Le code

C# est en transform dans un langage interm diaire (CIL ou MSIL) que l'on peut ensuite distribuer.

Ce code, bien s r, n'est pas ex cutable lui-m me.

Le code en langage interm diaire (CIL) prend l'apparence d'un .exe comme les programmes

habituels, mais il ne contient en revanche pas de binaire. Lorsqu'on lex cute, il est lu par un autre

programme (analyseur de programmes, appel e CLR) qui v rifie la s curit du code et le compile

en vrai programme binaire.

Il est possible de cr er des programmes .EXE qui pourront directement tre ex cut par le CLR, et

galement possible de cr er des biblioth ques sous la forme d'un fichier poss dant l'extension

.DLL . On appelle ces deux formes de programmes des Assembly , ayant une signature unique

(Strong Name).

Les fichiers .EXE sont des Assembly de processus (lancer une application) et les fichiers .DLL sont

des Assembly de biblioth ques (partag es entre plusieurs applications .exe afin de r utiliser du

code d j crit). Le DLL doit r sider dans le m me r pertoire que le fichier EXE.

On consid re 2 types dAssembly :

" Priv e : d di lutilisation dun programme particulier et se situe dans larborescence du

programme qui lutilise.

" Partag e : utilis par un ensemble de programmes diff rents et se situe dans le GAC (Global

Assemblies Cache) o une v rification dint grit est effectu e lors de lajout.

Classes, H ritage, Polymorphisme&

2

Lorient objet est un ensemble de r gles, de concepts, doutils du langage de programmation pour

rendre le d veloppement plus ais gr ce au groupement d l ments.

Classe :

Le mot cl class est pr c d par le niveau d'acc s : Public signifie que n'importe qui peut cr er des

objets partir de cette classe, Private restreint lacc s la classe, Protected (recommand ), et

Internal retire lacc s toutes les m thodes et tous les l ments qui ne partagent pas la m me

Assembly (qui ne font pas parti du m me fichier compil ).

Les m thodes peuvent retourner une valeur l'appelant.

Si le type de retour, le type r pertori avant le nom de la m thode, n'est pas void, la m thode peut

retourner la valeur l'aide du mot cl return. Le mot cl return arr te galement l'ex cution de la

m thode.

Si le type de retour est void, une instruction return sans valeur est quand m me utile pour arr ter

l'ex cution de la m thode. Sans le mot cl return, la m thode arr te de s'ex cuter quand elle

atteint la fin du bloc de code.

Objet :

Bien qu'ils soient quelquefois utilis s l'un la place de l'autre, une classe et un objet sont des

choses diff rentes. Une classe d finit un type d'objet, mais il ne s'agit pas d'un objet en soi. Un

objet est une entit concr te bas e sur une classe ; quelquefois appel une instance d'une classe.

Lorsqu'une instance d'une classe est cr e, une r f rence l'objet est renvoy e au programmeur.

Constructeur :

chaque fois qu'une classe ou qu'une structure est cr , son constructeur est appel : il permet

lutilisateur de d finir des valeurs par d faut, de limiter l'instanciation et d' crire un code souple

et facile lire. Si lutilisateur nen fournit pas, C# en cr era un par d faut (sans param tres).

H ritage de classe :

L'h ritage se fait par le biais d'une d rivation, ce qui signifie qu'une classe est d clar e l'aide

d'une classe de base partir de laquelle elle h rite des donn es et comportements ( l'exception

des constructeurs).

Une classe peut tre d clar e comme abstraite : elle contient des m thodes abstraites ayant une

d finition de signature mais aucune impl mentation et ne peut pas tre instanci es. En revanche,

une classe sealed ne permet pas d'autres classes de d river d'elle.

3

Polymorphisme :

Cest le mot grec qui signifie plusieurs formes et il prend deux aspects distincts :

-

  • Au moment de l'ex cution, les objets d'une classe d riv e peuvent tre trait s comme des

objets d'une classe de base. Lorsque cela se passe, le type d clar de l'objet n'est plus

identique son type au moment de l'ex cution.

Les classes de base peuvent d finir et impl menter des m thodes virtuelles et les classes

d riv es peuvent les substituer, ce qui signifie qu'elles fournissent leur propre d finition et

impl mentation. Au moment de l'ex cution, quand le code client appelle la m thode, le CLR

recherche le type et appelle cette substitution de la m thode virtuelle.

Les m thodes virtuelles permettent d'utiliser des groupes d'objets li s de fa on uniforme.

Le polymorphisme peut tre utilis en deux tapes :

1. Cr er une hi rarchie de classe dans laquelle chaque classe de forme d rive d'une classe de

base commune.

2. Utiliser une m thode virtuelle pour appeler la m thode appropri e dans une classe d riv e

via un seul appel la m thode de classe de base.

Les membres virtuels :

Quand une classe d riv e h rite d'une classe de base, elle gagne toutes les m thodes, les champs,

les propri t s et les v nements de la classe de base. Le concepteur de la classe d riv e peut

choisir de :

" Substituer les membres virtuels dans la classe de base,

" H riter de la m thode de classe de base la plus proche sans la substituer,

" D finir une nouvelle impl mentation non virtuelle de ces membres qui masque les

impl mentations de la classe de base.

Une classe d riv e peut substituer un membre de classe de base, uniquement si le membre de

classe de base est d clar virtual ou abstrait. Le membre d riv doit utiliser le mot cl override

pour indiquer explicitement que la m thode est con ue pour participer dans l'appel virtuel.

Conversion de type et exception

4

Les types :

La biblioth que de classes .NET Framework d finit un ensemble de types num riques int gr s,

ainsi que des types plus complexes de constructions logiques, telles que le syst me de fichiers, les

connexions r seau, les collections et les tableaux d'objets, ainsi que les dates.

Le compilateur int gre les informations de type dans le fichier ex cutable sous forme de

m tadonn es. Le Common Language Runtime (CLR) utilise ces m tadonn es au moment de

l'ex cution pour garantir davantage la s curit de type quand il alloue et r cup re la m moire.

Les types Built-in : Ensemble standard de types int gr s num riques (bool, float, int, etc.)

Les types de syst me commun (CTS) : Les types d riv s d'autres types, appel s types de base.

Chaque type dans le CTS est d fini soit comme un type de valeur (d finit avec le mot cl struct) ou

d'un type de r f rence (d finit avec le mot cl class). Cela comprend tous les types personnalis s

dans la biblioth que de classes .NET Framework et aussi les types d finis par l'utilisateur.

Les types personnalis s : cr es en utilisant une structure, une classe, une interface ou une

num ration. La biblioth que de classes du Framework .NET est une collection de types

Publicité

personnalis s fournis par Microsoft.

Les types de valeur : Ils h ritent directement de System.ValueType, qui h rite de System.Object et

ont un comportement sp cial dans le CLR. Ils contiennent directement leurs valeurs, ce qui signifie

que la m moire est allou e tant que la variable est d clar e.

Enum est utilis pour d clarer une num ration.

Strcut est un type de valeur utilis pour encapsuler des petits groupes de variables connexes. Une

structure partage la m me syntaxe que les classes.

Une structure peut impl menter des interfaces, mais ne peut ni d clarer un constructeur par

d faut ou un destructeur, ni initialiser des champs sauf sils sont d clar es comme const ou static,

ni h riter d'une autre structure ou de classe.

Contrairement aux classes, les structures peuvent tre instanci es sans l'aide d'un op rateur new.

Les types de r f rence : d fini comme une classe, d l gu , tableau ou interface. Au moment de

l'ex cution, la variable contient la valeur null jusqu' ce quil y ait cr ation dune instance de l'objet

en utilisant lop rateur new, ou assignation un objet qui a t cr .

5

Cast et conversions de types :

C# est typ statiquement lors de la compilation : une fois d clar e, une variable ne peut donc plus

tre red clar e ou utilis e pour stocker des valeurs d'un autre type, sauf si ce type peut tre

converti au type de la variable.

Toutefois, lutilisateur peut avoir besoin de copier une valeur dans une variable d'un autre type.

Par exemple, une variable de type entier doit passer une m thode dont le param tre est de type

double. Ces types d'op rations sont appel s conversions de types :

Conversions implicites : aucune syntaxe sp ciale n'est requise parce que la conversion est de type

s curis et que les donn es ne seront pas perdues. Pour les types num riques int gr s, une

conversion implicite peut tre effectu e lorsque la valeur stocker peut tre stock e dans la

variable en n tant ni tronqu e ni arrondie.

Pour les types r f rence, il existe toujours une conversion implicite entre une classe et l'une de ses

interfaces ou classes de base directes ou indirectes. Aucune syntaxe sp ciale n'est n cessaire parce

qu'une classe d riv e contient toujours tous les membres d'une classe de base.

Conversions explicites (casts) : Si une conversion ne peut pas

tre faite sans risque de perte d'informations, le compilateur

exige une conversion explicite, appel e cast. Cest une fa on

le compilateur que quune

d'informer explicitement

conversion va avoir lieu et qu'une perte de donn es peut se

produire. Le programme ne se compile pas sans le cast.

Pour effectuer un cast, il faut sp cifier le type voulu entre

parenth ses devant la variable convertir.

Les exceptions :

Les fonctionnalit s de gestion des exceptions du langage C# aident g rer les situations

inattendues ou exceptionnelles qui surviennent pendant l'ex cution. Les exceptions sont cr es

l'aide du mot cl throw et leur gestion utilise les mots cl s try, catch et finally.

Les exceptions peuvent tre g n r es par le Common Language Runtime (CLR), par le .NET

Framework ou des biblioth ques tierces ou par le code d'application.

Type anonyme, expression Lambda, M thode dextension

6

M thodes dextension :

d tendre

permettent

Elles

les

fonctionnalit s offertes par un type, en

d finissant de nouvelles m thodes qui

seront invoqu es en utilisant la syntaxe

normale dappel dune m thode. Ce

sont des m thodes statiques, d clar es

en utilisant le mot cl this comme

modificateur de port e, pour le premier

param tre de la m thode.

Expression Lambda :

Elles repr sentent un moyen plus simple d crire

les m thodes anonymes. Elle est compos e de 3

parties : une liste de param tres, le signe =>, et

une expression.

Les variables gauche de lexpression sont les

param tres et lexpression droite le traitement.

Les param tres peuvent tre explicites ou

implicites. Dans le second cas, le type est d duit de lexpression.

Types anonymes :

C# 3 propose la possibilit de cr er des

types anonymes et de retourner des

instances de ce type, au moyen du mot

cl new.

LINQ (Langage Integrated Query)

7

Les requ tes LINQ est un langage de requ tage pour interroger des BD SQL, des documents XML,

des collections .Net, etc.

Exemple LINQ

Toutes les op rations de requ tage LINQ se d roulent

en trois tapes :

1. R cup rer la source de donn es.

2. Cr er la requ te.

3. Ex cuter la requ te.

Dans le langage LINQ, lex cution de la requ te est

ind pendante de la requ te en soit.

Ex cution des requ tes LINQ :

Ex cution diff r e : Lex cution seffectue en diff r

lorsquil y a it ration de ladite variable dans une boucle

foreach.

Forcer lex cution imm diate : Les requ tes qui ex cutent des fonctions d'agr gation sur un

intervalle d' l ments r cup r s partir dune source de donn es doivent d'abord parcourir ces

l ments. Ceci est le cas des requ tes Count, Max,

Average et First. Ces requ tes sex cutent donc sans

expliciter la boucle dex cution foreach. Ce type de

requ tes retourne une seule valeur.

Afin de force lex cution imm diate de nimporte quelle

requ te et stocker son r sultat dans le cash, on peut faire

ou

appel

Publicité

ToArray<TSource>, ou bien en pla ant la boucle foreach

directement apr s la d claration de la requ te.

ToList<TSource>

m thodes

aux

Les requ tes LINQ de base :

Filtrage : Les requ tage de filtrage sont les plus utilis es. Il sagit de filtrer une liste de donn es

selon une expression bool enne.

8

Lexemple suivant illustre un filtre qui exclue tous les

customers dont la city nest pas London. Autrement dit

ceux pour qui (cust.city == london ) = false

Ordonnancement : La clause orderby permet dordonner la s quence retourn e selon le

comparateur par d faut du type ordonner.

Par exemple, la requ te suivante retourne une liste de

customers ordonn s par nom. Parce que name est de type

comparateur par d faut effectue un

string,

ordonnancement alphab tique de A Z.

le

Groupement : La clause group permet de grouper les r sultats selon une cl (key) quon sp cifie.

Chaque l ment de la liste est un objet qui a une cl et une liste d l ment group s selon cette cl .

Jointure : La clause join associe deux s quences d l ments qui ne sont pas explicitement li s dans

la source de donn es. On peut, par exemple, effectuer une jointure pour r cup rer les customers

et les distributors qui ont la m me location.

Transformation des donn es avec LINQ :

Le LINQ permet aussi de transformer les donn es de maintes fa ons pour en cr er un output

diff rent. Il est possible de :

-

Joindre de multiples entr s dans une seule s quence de sortie.

  • S lectionner un sous-ensemble de chaque l ment source en :

" S lectionner uniquement un membre de l l ment source. (Ex : select cust.City ;)

" Cr er des l ments qui continent une ou plusieurs propri t s de l l ment source. (Ex :

select new {Name = cust.Name, City = cust.City} ;)

  • Transformer des objets en m moire en XML.

Types de relations dans les requ tes LINQ :

Les requ tes LINQ sont fortement typ es aux l ments sources lint rieur de la requ te elle-

m me et lors de lex cution de la requ te. Le type de variable lint rieur de la requ te doit donc

tre compatible au type de l l ment source et au type de la variable dit ration. Les requ tes

peuvent transformer ou pas la sources de donn es.

Introduction Framework .NET

9

Quest-ce que .NET ?

Cest un mod le de programmation unifi , une plate-forme de d ploiement et dex cution

int gr e Windows.

L'infrastructure de d veloppement .NET Framework s'appuie sur la norme Common Language

Infrastructure (CLI), ayant ainsi acc s toutes les biblioth ques install es dans l'environnement

d'ex cution.

Composants de larchitecture .NET :

Common Language Runtime : moteur d'ex cution.

Base Class Library : biblioth que de fonctionnalit s compos es de

classes, interfaces de types r utilisables.

Biblioth que de classes portable : projet dans Visual Studio qui permet

de d velopper et de construire des assemblages manag s.

Managed Extensibility Framework (MEF) : biblioth que pour cr er des

applications extensibles permettant d'utiliser les extensions sans

aucune configuration requise.

Dynamic Language Runtime : fournit l'environnement d'ex cution sous contr le du CLR.

WinRT ou Windows Runtime API : fournit les l ments de l'interface utilisateur et donne acc s aux

fonctionnalit s de lOS.

Asp.Net : utilis pour construire des applications web riche bas sur Internet.

Windows Store Apps : permet de profiter de nouvelles API de WinRT.

WPF : permet de cr er des applications en incluant l'interface utilisateur, les 2D et 3D et le

multim dia. Il rend l'interface utilisateur plus rapide, volutive et ind pendante de la r solution.

Silver Light : technologie bas e cross-browser web qui permet de fournir des applications Internet

riches (RIA) embarqu s dans des pages Web.

Ado.Net : utilis pour cr er la couche d'acc s aux donn es.

10

LINQ : permet d'interroger les diff rentes sources de donn es (BD SQL, XML docs, jeux de donn es

ADO.NET etc.) l'aide de requ tes SQL.

Ado.Net Entity Framework : utilis pour interroger et stocker des donn es dans les BD

relationnelles en mode ORM.

Parallel Extension : permet de distribuer le code sur plusieurs processeurs.

WCF : utilis pour la construction et le d veloppement de services bas s sur les normes WS- *.

Asp.Net WebAPI : plateforme pour la construction de services http.

SignalR : biblioth que simplifiant l'ajout de fonctionnalit s Web en temps r el.

WF : utilis pour construire un moteur de workflow de l'entreprise et les r gles orient e processus.

Microsoft (/ Common)

Intermediate Language :

langage de programmation, de format

interm diaire, ind pendant de la machine qui peut tre converti en langage machine par le CLR.

Global Assembly Cache : permet de partager un Assembly au niveau dune machine.

Architecture en couches :

Une application typique n-tiers comprend une couche de pr sentation, une couche interm diaire

et une couche dacc s aux donn es. La meilleure fa on de les s parer est de cr er des projets

distincts pour chaque niveau. Cela augmente la maintenabilit et l' volutivit de l'application, et

permet l'adoption plus facile des nouvelles technologies appliqu es un seul niveau, sans revoir

l'ensemble de la solution.

Les principes SOLID :

SOLID combin s ensemble, permettent la cr ation des logiciels faciles entretenir et tendre.

S Single-Responsiblity Principle : un sous-syst me, un module, une classe ou une fonction ne

devrait pas avoir plus dune responsabilit (un objectif).

O Open-Closed Principle : les classes devraient tre ouvertes pour l'extension, mais ferm e pour

modification (elle ne peut tre modifi e que par extension, sans modification de son code source).

L Liskov substitution Principle : si S est un sous-type de T, alors tout objet de type T peut tre

remplac par un objet de type S.

I Interface Segregation Principle : aucun client ne d pend de m thodes qu'il n'utilise pas.

D Dependency Inversion Principle : Les modules de haut niveau ne doivent pas d pendre des

modules de bas niveau. Les deux doivent d pendre d'abstractions. Les abstractions ne doivent pas

Publicité

d pendre des d tails. Les d tails doivent d pendre des abstractions.

Entity Framework

11

ORM (Object Relational Mapping) :

Cest un outil qui sert manipuler d'une mani re automatis e les donn es de lobjet vers la base

de donn es relationnelle. LORM comprend trois parties principales qui sont les objets de classe,

les objets de la BD et les informations de Mappage pour les objets de la BD (Tables, Vues et

Proc dures de stockage).

Entity Framework :

EDM (Entity Data Model) : ensemble de concepts qui d crivent la structure des donn es. Il se

compose de trois parties principales :

  • Mod le conceptuel : contient les entit s et leurs relations.
  • Mod le de stockage : mod le de conception de BD qui contient des tables, vues, proc dures

stock es, ainsi que leurs relations et les cl s.

  • Mapping : contient des informations sur la fa on dont le mod le conceptuel est mapp sur le

mod le de stockage.

LINQ to Entities : permet d' crire des requ tes par rapport au mod le conceptuel Entity Framework

l'aide du langage Visual Basic ou C#.

EntitySQL : langage similaire SQL qui permet d'interroger des entit s dans Entity Framework.

Object Service : composant d'Entity Framework qui vous permet dins rer, mettre jour et

supprimer des donn es exprim es sous forme d'objets. Il prend en charge les requ tes LINQ et les

requ tes Entit SQL par rapport aux types d finis dans un mod le EDM (Mod le de donn es

d'entit ).

Entity Client Data Provider : fournisseur de donn es.

ADO.Net Data Provider : couche qui communique avec la BD en utilisant ADO.Net standard.

Approche de lEntity Framework :

Approche ModelFirst : dans le cas dabsence de BD, il est possible de commencer par cr er un

mod le en utilisant le concepteur Entity Framework qui cr e la BD et les classes en fonction du

mod le.

Approche Database First : dans le cas dexistance de BD, Entity Framework permet de g n rer

automatiquement un mod le de donn es (.edmx) qui se contient des classes et des propri t s qui

correspondent des objets de la BD telles que les tables et colonnes.

Approche CodeFirst : dans le cas dexistance ou non de BD, il est possible de coder ses propres

classes et propri t s qui correspondent aux tables et colonnes et de les utiliser avec Entity

12

Framework, sans un fichier. Edmx.

Code first :

Entity Framework 6.1 introduit lapproche Code-First qui permet de se concentrer sur la

conception de la couche domaine et commencer cr er des classes avant la BD.

Principe :

G n rer la base partir dun traitement de code. Pour ce faire il faut crire les entit s, d finir leurs

propri t s de navigation, d velopper la classe contexte, d clarer les entit s qui vont tre des tables

en tant que DbS et puis ex cuter lapplication, EF-Code First va g n rer la nouvelle BD. Le Mapping

des classes dans la BD sera fait dune mani re implicite en utilisant les conventions par d faut. Il

est aussi possible de configurer les entit s en utilisant Data Annotation ou Fluent API afin de

remplacer les conventions par d faut.

1. Cr ation de la solution et installation de lEntity Framework 6 :

La solution contient les 3 couches ; deux projets Domain, Data de type ClasseLibrary et un de type

Console.

2. Cr ation du mod le de donn es dans le projet :

Il faut cr er des entit s et leurs propri t s de navigation dans la couche Domain.

3. Cr ation de la classe contexte :

Une fois les entit s cr es, lapproche Code-First exige aussi la classe contexte d riv e de

DbContext et contient les DbSet repr sentants les entit s qui seront ensuite transform es en

tables.

DbSet, responsable de l'interaction avec les donn es, est une collection dentit s, donc prend

g n ralement le nom de lentit au pluriel. Les DbSet repr sentent une image d'une table, par

exemple repr sente la table Etudiants.

4. Ex cution de lapplication et g n ration de la base de donn es.

5. Les conventions :

Cest un ensemble de r gles par d faut afin de configurer les entit s de la couche domaine et

sont d finies dans le namespace System.Data.Entity.ModelConfiguration.Conventions.

13

Convention Primary Key : EFCode-First cr e automatiquement une cl primaire dans chaque table.

La convention par d faut pour la cl primaire est Id ou <nom de classe> Id. Si la propri t cl est

d finie autre que Id ou <ClassName> Id, lexception ModelValidationException sera d clench .

Convention les relations entre les entit s : Code-First d duit la relation entre deux entit s en

utilisant la propri t de navigation, qui peut tre de type objet ou de type collection .

Convention Cl trang re : (recommand e) EF-CodeFirst ins re automatiquement une cl

trang re lorsqu'il rencontre une propri t de navigation.

Convention ComplexType : Lorsque Code First d couvre une d finition de classe dans laquelle une

cl primaire ne peut pas tre d duite, et aucune cl primaire n'est enregistr e via des annotations

ou Fluent API, le type est automatiquement enregistr en tant que type complexe.

Les types complexes n'ont pas de cl s et par cons quent, peuvent uniquement exister en tant que

propri t s de types entit (elles sont d pendantes), ne peuvent pas contenir des propri t s de

navigation et ne peuvent pas avoir la valeur null.

6. Initialisation de la BD :

Le constructeur base de la classe GestComptecontext peut avoir les param tres suivants :

Aucun param tre ou le nom de la BD (dans ce cas, EFCode-First cr e une BD) ou nom de la chaine

de connexion (qui doit commencer par "name =" sinon il sera consid r comme nom de BD).

7. Configuration des Entit s de la couche domaine :

Il est possible de remplacer les conventions en configurant les classes de domaine pour fournir EF

les informations dont il a besoin. Il existe deux fa ons de configurer les classes :

DataAnnotations : bas e sur un simple attribut, on peut lappliquer sur les classes et ses propri t s.

Fluent API : utilis dans le cas o certains attributs nexistent pas dans DataAnnotation. Il prend en

charge les types Mappage BD et EntityTypeConfiguration.

8. H ritage :

Lh ritage dans Entity Framework-CodeFirst est similaire l'h ritage pour les classes en C #.

Table-per-Hierarchy (TPH) : Cette approche sugg re une table pour l'ensemble de la hi rarchie

d'h ritage de classe.

Table-per-Type (TPT) : Cette approche sugg re une table s par e pour chaque classe.

Table-per-Concrete-Type (TPC) : Cette approche sugg re une table pour une classe concr te, mais

pas pour la classe abstraite.

14

9. Strat gies d'initialisation de la BD :

Il y a quatre strat gies d'initialisation de BD :

CreateDatabaseIfNotExists : linitialiseur va cr er la BD si aucune nexiste selon la configuration.

DropCreateDatabaseIfModelChanges : linitialiseur supprime une BD existante et cr e une

nouvelle BD, si les classes de mod le ont t modifi es.

DropCreateDatabaseAlways : linitialiseur supprime une BD existante chaque fois quil y a

Publicité

ex cution de l'application, ind pendamment du fait que les classes de mod les ont chang ou non.

DB personnalis Initializer : cr er dun initialiseur personnalis .

Pour utiliser l'une des strat gies, il faut d finir la DB Initializer en utilisant la classe de BD dans la

classe GestCompteContext.

10. Seed DataBase :

Insertion des donn es dans les tables de BD au cours du processus d'initialisation. Cela est utile

pour fournir des donn es de test ou des donn es de base par d faut lapplication.

Pour ins rer des donn es dans la BD, il faut ajouter un initialiseur personnalis dans la m thode

seed().

11. Migration :

Mise jour automatique du sch ma de la BD, lorsque le mod le change sans perdre toutes les

donn es existantes ou dautres objets de la BD. Il utilise une nouvelle initialisation de BD appel e

MigrateDatabaseToLatestVersion. Il existe deux types de migration :

  • Migration automatique : ex cution de enable-migrations dans la console de gestionnaire de

package. Une fois la commande ex cut e avec succ s, il cr e une classe interne de

configuration dans le dossier de la migration dans le projet.

  • Migration bas e sur le code : utile lors dune volont de plus de contr le. Il faut ex cuter la

commande Add-migration puis update-database.

12. Utilisation des donn es dans Entity Framework :

Afin dutiliser les donn es, EF offre 3 possibilit s pour requ ter la source de donn es :

-

-

Linq to Entities : (la plus utilis e) Utilisation dun support de LinQ vers les entit s. Elle offre

l'avantage de la v rification des requ tes la compilation et du support de l'auto-

compl tions.

Linq to Object : utilisation directe de requ tes LINQ avec n'importe quelle collection

IEnumerable ou IEnumerable<T>.

Design Patterns

15

Un patron de conception est un arrangement caract ristique de modules, reconnu comme bonne

pratique en r ponse un probl me de conception d'un logiciel.

Repository and Unit of Work Patterns :

Ils visent cr er une couche d'abstraction entre la couche d'acc s aux donn es et la couche logique

m tier d'une application. L'application de ces patrons de conception peut aider lapplication de

changements dans la source de donn es et peut faciliter les tests unitaires automatis s.

Impl mentation de pattern Repository :

Il faut commencer par cr er une classe Repository g n rique qui englobe les CRUD destin es aux

diff rentes entit s. A chaque ajout de m thodes sp cifiques une entit EntityX il suffit d tendre

la classe Repositry<EntityX> par des m thodes dextension.

Impl mentation de pattern Unit of Work :

L'Unit de travail assure les mises jour dune source de donn es avec une seule transaction qui

implique des op rations multiples d'insertion, modification, suppression, etc. Elle assure aussi

linstanciation et le retour dune classe Repository sp cifique avec une m thode g n rique.

Disposable :

Il existe deux types de ressources dans le Framework .Net :

-

-

Les ressources g r es que le garbage collector peut supprimer quand il trouve des objets non

r f renc s.

Les ressources non manag es que le garbage collector ne peut pas g rer (Ex : les fichiers

ouverts, les connexions de la BD...).

Utilisation de pattern Disposable qui est un patron de conception utilis pour nettoyer des

ressources non manag es en fournissant un contr le explicite et en mettant en Suvre la m thode

Dispose fournie par l'interface IDisposable. Lappel de la m thode se fait apr s lutilisation de

l'objet.

La m thode Finalize () fournit une sauvegarde pour viter la fuite de ressource d finitive si le

programmeur nappelle pas Dispose.

16

Factory :

Avant de parler de ce patron de conception, il y a deux principes qui se dressent sur la base de

nombreuses d cisions de design et d'architecture.

  • Separation of Concerns (SoC) garder le code pour chacune de ces concernes distincts. (Ex :

la logique d'entreprise du logiciel est une concerne, et l'interface par laquelle une

personne utilise cette logique est une autre.

  • Single Responsibility Principle (SRP) Cest le premier principe des principes SOLID. Chaque

objet doit avoir une responsabilit unique, et tous ses services doivent tre troitement align

avec cette responsabilit .

La s paration permet de :

" Travailler sur des morceaux individuels du syst me dans lisolement ;

" Faciliter la r utilisation ;

" Assurer la maintenance d'un syst me ;

" Ajouter de nouvelles fonctionnalit s facilement ;

" Permettre chacun de mieux comprendre le syst me.

Par Cons quent, nous choisissons le patron Factory, qui sera responsable de l'instanciation du

contexte et agira comme une usine qui cr e l'objet de contexte. Cette classe peut tre tendue en

cas o lutilisateur va ajouter une autre source de donn es.

ASP.NET

17

ASP (Active Server Pages) :

ASP.NET est un ensemble de technologies utilis pour dynamiser les sites web. Pour cela, il faut

quil y ait du code logique c t serveur.

ASP.NET inclut la g n ration du code HTML c t serveur, lutilisation de la programmation orient e

objet et des biblioth ques du framework .NET.

Il faut choisir avec quoi commencer lapplication web, ASP.NET propose plusieurs mod les :

-

-

-

-

Le projet Vide : le projet sera cr partir de z ro.

Le projet de WebForms : cr er un projet ASP.NET Web Forms, bas sur les contr les et le code

v nementiel.

Le projet tourn vers MVC.

Le projet Web API : une application Internet pr configur e avec le contr leur Web.

D s lex cution de lapplication, un fichier .DLL ainsi quun num ro de port sont g n r s. Ensuite,

Visual Studio va d marrer IIS Express, qui est une version all g e de IIS. Cest le serveur web

permettant dex cuter une application ASP.NET. Visual Studio d marre ensuite le navigateur web

et vous dirige automatiquement vers la page daccueil.

La page web que visible l cran a t envoy e par le serveur IIS Express.