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