Cursus
Formation .NET Concepts avancés en C#
Objectifs
Appliquer les tests unitaires en C#.
Evaluer les nouveautés de C# 7.x.
Evaluer les fonctionnalités avancées de C# 8.
Différencier les notions avancées sur les types.
Etablir la gestion de la mémoire en C#.
Contrôler l'asynchronisme en C#.
Employer les capacités de LINQ.
Apprécier le Garbage Collector.
Appliquer les patterns utilisés en .NET Core.
Pré-requis
Participants
Programme de formation
LES TESTS UNITAIRES EN C#
-
Introduction aux tests unitaires
-
Différents concepts de test
-
Présentation des outils .Net pour les tests
-
Simulation avec les Mock
-
Le BDD (Behavior Driven Development) pour faire rentrer les opérationnels dans les tests
-
Travaux pratiques
- Ecrire un test unitaire en C# et le faire muter en BDD
C# 7.X : NOUVEAUTÉS ET FONCTIONNALITÉS AVANCÉES
-
Rappels de l'existant pré-C# 7
-
Fonctions locales
- Avantages et performances
-
Tuples
-
Déconstructeurs
-
Pattern matching
-
Out & discard
-
Améliorations sur l'écriture des numériques
-
Expression fléchée
-
Expression throw
-
Retour de fonction par référence
-
Travaux pratiques
- Plusieurs exercices pour mettre en pratique les nouveautés de C# 7
C# 8 : NOUVEAUTÉS ET FONCTIONNALITÉS AVANCÉES
-
Références sur les types valeurs
-
Type référence nullable
-
La portée private protected
-
Code non sécurisé
-
Indices et plages
-
Implémentation par défaut des interfaces
-
Travaux pratiques
- Plusieurs exercices pour mettre en pratique les nouveautés de C# 8
NOTIONS AVANCÉES SUR LES TYPES
-
Generics et contraintes de generics
-
Réflection simple
- Création et introspection des types
-
Réflection avancée
- Gestion des generics (méthodes, types)
-
Types anonymes et dynamic
-
Durée de vie avec Idiposable et les destructeurs
-
Attributs
-
Travaux pratiques
- Créer dynamiquement des objets au runtime pour les types de questions
LA MÉMOIRE EN C#
-
Introduction
-
Comprendre les concepts de pile & tas
-
Différences entre types valeur & types référence
- Impacts et analyses
-
La classe Span
-
Stackalloc
-
Travaux pratiques
- Plusieurs exercices pour comprendre les allocations mémoire et l'impact du code
ASYNCHRONISME
-
Reprise des concepts de l'asynchronisme
-
La classe Thread
-
La classe Parallel
-
Définition et approfondissement sur le Task
-
Le scheduler et créer son propre scheduler
-
Async/await : détails et fonctionnement de ce qui est compilé réellement
-
Gestion de l'annulation, des exceptions et de la continuation
-
Les nouveautés C# 8 sur l'asynchronisme
-
Travaux pratiques
- Exercice de code pour montrer les différents pattern asynchronisme.
- Exercice complet permettant de mettre en pratique tout le contenu
LINQ
-
Comment fonctionne LINQ ?
-
Les différents opérateurs existants
-
Comparaison de performance avec analyse IL
-
Créer ses propres méthodes LINQ
-
L'arbre d'expression
-
Travaux pratiques
- Création de son propre provider LINQ
- Découverte de la classe Expression
LE GARBAGE COLLECTOR
-
Rappel sur le rôle du garbage collector
-
Algorithme du garbage collector
-
Différences entre les ressources managées et non managées
-
Comment soulager la charge du garbage collector
-
Le pattern Idisposable
-
Travaux pratiques
- Créer une application et benchmarker les différences entre le passage du garbage collector
PATTERNS UTILISÉS EN .NET CORE
-
Présentation rapide de l'architecture d'un projet ASP.Net Core
-
IoC et principes solides associés
- Pourquoi, c'est utile
-
Pattern Options pour gérer la configuration
-
Fonctionnement du pipeline ASP.Net Core