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.