Objectifs pédagogiques / Compétences visées
- Définir le multi-threading
- Gérer l'asynchronisme
- Utiliser les métadonnées avec les Attributes
- Décrire la programmation dynamique et parallèle
- Interagir avec du code non managé
- Créer des domaines d'application.
Niveau requis
Connaissance pratique du langage C# ou avoir suivi le cours CS-FRM "C# - Développement avec le Framework .NET".
Public concerné
Développeurs, architectes, chefs de projets techniques.
Programme
Les fonctionnalités avancées de C#
- Rappel sur les méthodes anonymes
- Rappel sur les expressions lambda
- Les fonctions locales
- Les tuples
- Les déconstructeurs
- Pattern matching
- Variables "out"
- Amélioration des littéraux numériques
- Body expression
- Amélioration de la syntaxe du throw
- Retour de fonction par références
Les fonctionnalités avancées de C# 7.2 et 8.0
- Sémantique de référence avec les types valeur
- Types de référence nullable
- Nouveaux modificateurs d'accès
- Utilisation de code non sécurisé
Améliorer l'utilisation de la mémoire
- Introduction
- Concept de tas et de pile
- La classe Span
Concurrence et threading
- Cas d'utilisation du multi-threading
- Thread et Task
- Synchronisation et communication
- ThreadPool et efficacité
- Deadlocks et autres écueils à éviter
Asynchronisme
- Différence entre appels synchrones et asynchrones
- Async opérations
- C# async et await
- Progression et abandon
Réflection et Attributes
- Introspection des assemblies et classes
- Les types d'Attributes
- Paramètres des Attributes
- Génération de code : Emitters
LINQ
- Architecture interne de LINQ
- Fonctionnalités avancées de LINQ
- Créer son propre provider "IQueryable"
- Performances sur l'utilisation de LINQ
Interopérabilité
- P/Invoke
- COM Interop
- COM Wrappers
- Passage de paramètres
Fonctionnement avancé du Runtime
- Dynamic Language Runtime (DLR)
- Task Parallel Library (TPL)
- Sécurité d'accès : Code Access Security (CAS)
- Application domains
Garbage Collector
- Algorithme de nettoyage du Garbage Collector
- Ressources managées vs non managées
- Bien libérer les ressources
- Pattern IDisposable
Tests unitaires
- Utilisation de MSTest v2 et NUnit
- Comment bien écrire un test unitaire ?
- Convaincre les développeurs sur l'utilité des tests unitaires
- Extensions du moteur MSTest v2
- Les framework de "Mock"
- Fluent Assertions
Certification (en option)
- Prévoir l'achat de la certification en supplément
- L'examen (en français) sera passé le dernier jour, à l'issue de la formation et s'effectuera en ligne
- Il s'agit d'un QCM dont la durée moyenne est d'1h30 et dont le score obtenu attestera d'un niveau de compétence
- La certification n'est plus éligible au CPF depuis le 31/12/2021, mais permettra néanmoins de valider vos acquis
Modalités d’évaluation des acquis
- En cours de formation, par des études de cas ou des travaux pratiques
- Et, en fin de formation, par un questionnaire d'auto-évaluation ou une certification (M2i ou éditeur)