ASP.
NET Core
INTRODUCTION À [Link] CORE
1
[Link] Core : de quoi parlerons-nous ?
[Link] Core
[Link] Core MVC
[Link] Core Identity
Entity Framework Core
2
[Link] Core : qu’est-ce que c’est ?
[Link] Core est un framework cross-platform, open-source
de développement d’applications Web et cloud modernes
[Link] Core est un « redesign » de [Link] 4.x qui était
basé sur le .NET Framework
3
[Link] Core : Avantages & Fonctionnalités
Cross Platform
Les applications [Link] Core peuvent être développées et
exécutées sur différentes plateformes : Windows, macOS,
Linux
Elles peuvent être hébergées sur les serveurs IIS, Apache,
Docker, …
4
[Link] Core : Avantages & Fonctionnalités
Un seul modèle pour le MVC et les API Web
La classe du contrôleur MVC et celle du contrôleur [Link]
Web API héritent toutes deux de la même classe Controller et
retournent IActionResult
IActionResult
ViewResult JsonResult
5
[Link] Core : Avantages & Fonctionnalités
Injection de dépendances
[Link] Core fournit un support pour l’injection de
dépendances en utilisant les packages Nuget
6
[Link] Core : Avantages & Fonctionnalités
Testabilité
Les deux précédents avantages (un modèle unique pour les
classes MVC et WebAPI et le support pour l’injection de
dépendances) permettent des tests unitaires faciles
7
[Link] Core : Avantages & Fonctionnalités
Modularité
[Link] Core assure la modularité avec des composants
middleware
Aussi bien les canaux de requête que de réponses utilisent
les composants middleware
Un ensemble de composants middleware riches sont fournis
Des composants middleware peuvent aussi être créés
8
[Link] Core : Avantages & Fonctionnalités
Cross Platform Testabilité
Modèle unique pour
les classes MVC et Open-source
WebAPI
Injection de Modularité
dépendances
9
Comprendre l’architecture MVC
Les modèles sont les classes qui décrivent les données avec
lesquelles nous travaillons. Nous avons :
✔ Domain Model
✔ View Model
Les vues définissent comment l’interface sera présentée
Le contrôleur traite les requêtes qui entrent, effectuent les
opérations sur le modèle et choisit la (les) vue(s) à renvoyer
à l’utilisateur.
10
Comprendre l’architecture MVC
Requête
utilisateur
Persistance
Réponse
Contrôleur Modèle (BD)
Vue Modèle de
présentation
11
Prérequis
Bases de HTML, CSS et C#
Connaissance moyenne de l’architecture MVC
12
Installation de l'IDE
Installation de Visual Studio
13
Installation Visual Studio
Télécharger visual studio community.
Exécutez le fichier téléchargé.
Accepter les termes du contrat de licence Microsoft pour Visual Studio
Community ainsi que la politique de confidentialité.
Personnaliser votre installation en sélectionnant les ensembles de
fonctionnalités (aussi appelées charges de travail) .NET desktop
development (pour créer des clients lourds) et [Link] and web
developpement (pour créer des sites internets).
14
BASES DU LANGAGE C#
Introduction au langage C#
15
Qu'est-ce que C#(Sharp)
Langage de programmation orienté objet
Commercialisé par Microsoft depuis 2002
Langage le plus populaire et utilisé dans l'environnement .NET de
Microsoft
Langage fortement typé
Permet de développer aussi bien des applications web (via l'ASP .NET)
que des clients lourds (console, winform,etc), des librairies de fonctions
(DLL)
16
Créer premier projet C#
Cliquer sur Créer un projet
17
Créer premier projet C#
Sélectionner C# dans le
premier champ
Sélectionner Windows
dans le deuxième
Sélectionner "Console"
dans le dernier champ
Choisir dans la liste des
types d'applications
"Application console",
Enfin cliquer sur suivant.
18
Créer premier projet C#
Dans le champ "nom du projet" saisir le nom de votre projet
Choisir l'emplacement du dossier du projet
Renseigner le nom de la solution dans le champ "Nom de la
solution", une solution est un conteneur qui regroupe les
projets.
Enfin cliquer sur "Suivant" pour aller à la fenêtre suivante
Sélectionner le framework cible
Cliquer sur Créer pour créer le projet
19
Blocs de code et Instructions
Blocs définis par les accolades « {} »
Marque de fin d’instruction : « ; »
Commentaires
❑ Sur une ligne « // »
❑ Multilignes : « /* … */ »
20
Les variables
TypeDonnee nomVariable1; // Déclaration de la variable nomVariable1 de type « TypeDonnee »
TypeDonnee nomVariable2 = valeur; // Déclaration et initialisation
Les opérateurs
Opérateurs simples
❑ Opérateurs de comparaison : ==, !=, <, >, <=, >=
❑ Opérateurs logiques : || (ou), && (et), ! (négation)
❑ Opérateurs numériques: +, -, *, /, % (modulo)
Opérateur d’affectation: =
21
Les types de données en C#
Les variables de type valeur : la mémoire contient
directement la valeur de la variable
❑ Les types primitifs (types de base)
❑ les structures
Les variables de type référence : la mémoire contient une
référence vers un objet
❑ Les classes
❑ …
22
Types primitifs de C#
Type de données Type de valeur Taille (octets) Valeurs possibles
bool Booléen 1 true ou false
decimal Nombre réel 16 −7.9×1028 à 7.9×1028
double Nombre réel 8 ±5.0×10−324 à ±1.7×10308
float Nombre réel 4 ±1.5×10−45 à ±3.4×1038
int nombre entier 4 −231 à 231−1
long nombre entier 8 −263 à 263−1
short nombre entier 2 −215 à 215−1
byte nombre entier 1 0 à 255
char Chaine de 2 U+0000 à U+FFFF
caractère (caractères Unicode)
23
Les chaines de caractère
Elles sont désignées par le type String (ou string) qui est de type
référence
Elles sont immutables : on ne peut modifier leur valeur après création,
toutes les opérations entrainent la création d’une nouvelle chaîne de
caractère
Opérateur de concaténation : +
Le backslash \ sert de caractère d’échappement pour obtenir les
caractères spéciaux
Le caractère @ placée devant une chaine de caractères désactive
l’interprétation des caractères spéciaux.
24
Les instructions conditionnelles
if switch
switch (variable)
if (condition) {case val1:
{ //Faire quelque chose
// instructions à réaliser si condition vaut true break;
} else …
{ // instructions à réaliser si condition vaut false default:
} //Faire quelque chose dans tous les autres cas
//Exemple break;
}
int age = 18;
Exemple
if (age >= 18) switch (age)
{ //Si age >= 18 faire quelque chose } { case 5:
else if (version <= 25) case 6:
{ //Si age<= 25 faire autre chose } //Si age égal à 5 ou 6
else break;
{ //Dans tous les autres cas faire autre chose case 18:
} case 25: //Si age égal à 18,25,50
break;
default:
//Autre cas
break;
} 25
Les boucles
for foreach
for (initialisation; condition; iteration) foreach(type nom_variable in variable_tab_list)
{ //Instructions à réaliser tant que condition vraie { // bloc d'instructions
} }
//Exemple //Exemple
int age=43; int[] tabInt1 = { 1, 2, 3 };
for (int i = 0; i <= age; i+2) foreach (int val in tabInt1)
{ {
//faire quelque chose if (val == 3)
} { break; }
}
while
while (condition)
{
// bloc d'instructions à réaliser tant que condition vaut true
}
//Exemple
while (age <= 50)
{
// bloc d'instructions quand age<=50
}
26
Les méthodes
Les fonctions Les procedures (fonction void)
// Déclaration
int nom_fonction(type_param1 nom_param1,..., // Déclaration
type_paramn nom_paramn) // prototype void nom_fonction(type_param1 nom_param1,...,
{ type_paramn nom_paramn) // prototype
// intructions de la fonction {
return val_retour; // intructions de la fonction
} return; //optionnel
//Exemple }
int multiplication(int a, int b) //Exemple
{ void affichage(string nom) // prototype
int total = a * b; {
return total; [Link]("Hello World! " + nom);
} }
27
Tableaux dans C#
Déclaration et création
❑ Tableau unidimentionnel
TypeElement[] nomVariable; // déclaration d'un tableau
TypeElement[] nomVariable2 = new TypeElement[tailleDuTableau]; // déclaration et création d'un tableau
TypeElement[] nomVariable3 = { valeur1, valeur2, valeur3…}; // déclaration d'un tableau et initialisation
explicite
Exemple: int[] tabInt = new int[7];
❑ Tableau multidimentionnel
TypeElement[,] monTableau1; // déclaration d'un tableau bidimentionnel
TypeElement[,,] monTableau2; // déclaration d'un tableau tridimentionnel
TypeElement[,] monTableau3 = new TypeElement[nombreDeLignes, nombreDeColonnes]; // déclaration
et initialisation d'un tableau
int[,] monTableauInt = { {1, 5, 6}, {2, 9, 7} }; // déclaration d'un tableau 2d et initialisation explicite
28
Tableaux dans C#
Accès et modification
Les cases d’un tableau sont numérotées de 0 à la taille du tableau - 1. Le numéro
d’une case est appelé son indice et permet d’accéder à cette case.
int[] tabInt1 = { 1, 2, 3 };
tabInt1[1] = 4; //modification de la valeur de la case d'indice 0: monTableau1 = {1, 4, 3}
int a = tabInt1[2]; // lecture de la valeur de la dernière case du tableau: a = 3
int[,] tabInt2 = { { 1, 2, 3 }, { 4, 5, 6 } };
tabInt2[1, 0] = 7; // monTableau2 = { {1, 2, 3}, {7, 5, 6}}
int b = tabInt2[1, 2]; // b = 6
Taille d’un tableau
//Tableau unidimentionnel : Utilisation de la propriété Length
int[] monTableau1 = { 1, 2, 3,4,5,6,7 };
int taille = [Link]; // taille = 7
//Tableau multidimentionnel on utilise la méthode GetLength(dimension)
int[,] monTableau2 = { {1, 2, 3, 11, 12, 13}, {4, 5, 6, 7, 8, 9} };
int lignes = [Link](0); // 2
int colonnes = [Link](1); // 6
29
Tableaux dans C#
Parcours d’un tableau
Avec une boucle for ou une boucle foreach
TypeDonnee[] monTableau = { val1, val2, val3 };
//Boucle for
for (int i = 0; i < [Link]; i++)
{ //Traitement }
//Boucle foreach
foreach (TypeDonnee valeur in monTableau) //se lit: pour toute valeur de type TypeDonnee dans monTableau
{//Traitement }
30
Les listes dans C# (List<T>)
ensemble d’éléments fortement typé
Sa taille augmente en fonction du contenu
on peut ajouter, enlever , modifier… supprimer des éléments dans une liste
les éléments peuvent être ajoutés avec les fonctions Add(), AddRange(),
Insert(index, element)
List<TypeDonnee> maListe = new List<TypeDonnee> (); //Déclaration et création
//Déclaration et initialisation
List<TypeDonnee> = new List<TypeDonnee> () {
element1, …, element n
};
31
Les objets et les classes
Les niveaux d'accessibilités (visibilité)
public (l’accès n’est pas limité).
protected (l'accès est limité à la classe, où aux classes dérivées/hérités de l'objet).
internal (l'accès est limité au bloc de construction réutilisable actuel).
protected internal (l’accès est limité au bloc de construction réutilisable actuel, ou aux
classes dérivées/hérités de l'objet).
private (l’accès est limité en interne de la classe).
private protected (l’accès est limité à la classe ou à ses types dérivés, mais
uniquement dans le bloc de construction réutilisable actuel).
32
Les objets et les classes
Déclaration d’une classe
// Déclaration
class NomClasse
{
// corps de la classe
}
Les attributs et les méthodes de classe
class NomClasse
{
// déclaration des champs d'instances
public TypeChamp1 nomChamp1;
public TypeChamp2 nomChamp2;
...
// déclaration des méthodes d'instances
public TypeDeRetour1 NomMethode1(TypeParametre11 identificateurParametre11, ...) { ...}
public TypeDeRetour2 NomMethode2(TypeParametre21 identificateurParametre21, ...) { ...}
...
}
33
Les objets et les classes
Les constructeurs
// Déclaration
public NomClasse(TypeParam1 nomParametre1, TypeParam2 nomParametre2, ...)
{ ...}
❑ Chaînage de constructeur
// Déclaration
public NomClasse(TypeParam1 nomParametre1, TypeParam2 nomParametre2, ...) : this(parametre1,
parametre2,)
{ ...}
Instanciation d’une classe
// Déclaration
NomClasse nom_objet = new NomClasse(parametre1, parametre2, ...);
34
Les objets et les classes
Les opérateurs d’accès
❑ Opérateur d’accès aux members d’instance: “.”
nom_objet.propriete1; // Accès propriété
nom_objet.methode1(param1…) ; // Accès méthode de classe
❑ Instance courante : “this“ (utilisé à l’intérieur de la classe)
this.méthode1 (param1…) // Utilisation pour accéder à une méthode de classe
Les propriétés (getters et les setters)
//Notation normale //Exemple
Visibilité TypeDonnee Nom_champ1 private int age;
{ public int Age
get { //... return nom_champ1; } {
set { ... = value; } get { return age; }
} set
//Notation simplifiée : propriété auto-implémentée {
Visibilité TypeDonnee Nom_champ1 { get; if (age > 0) age = value;
Visibilite set; } }
} 35
Les propriétés et les méthodes de la classe Console
Les propriétés
Propriété Description
Title Titre de la console dapplication
BackgroundColor Couleur de fond de la console
ForegroundColor Couleur du texte dans la console
CursorSize Hauteur du curseur dans la console : de “1 à 100”
36
Les propriétés et les méthodes de la classe Console
Les méthodes
Méthode Description
Clear() Pour effacer l'écran
Bip() Jouer un bip à l'aide d'un haut-parleur PC au moment de l'exécution
ResetColor() Réinitialiser les couleurs (arrière-plan et texte) à leur état par défaut
Write("chaîne") Afficher le message spécifié sur la fenêtre de la console
WriteLine("chaîne"
Déplace automatiquement le curseur sur la ligne suivante après l’affichage du message.
)
Write(variable) Affiche la valeur de la variable donnée
WriteLine(variable)
Affiche la valeur de la variable donnée et déplace le curseur sur la ligne suivante
Lit un seul caractère du clavier et renvoie sa valeur ASCII. Le type de données doit est
Read()
entier car il renvoie la valeur ASCII.
ReadLine() Lit une valeur de chaîne à partir du clavier et renvoie la valeur entrée. Le type de donnée
sera donc une chaîne.
ReadKey() Lit un seul caractère au clavier et renvoie ce caractère. Le type de données doit être un
entier car il renvoie la valeur ASCII. 37
38