Ce livre sur le développement d'applications Windows avec le langage C# (en version 9) et Visual Studio 2019 est destiné aux développeurs qui débutent avec le framework .NET. Il leur permet d'apprendre les bases du langage C# et introduit des concepts plus avancés leur donnant une vue d'ensemble des possibilités offertes par le langage C#, Visual Studio et le framework .NET en général. L'auteur a choisi une approche pas à pas tout...
Ce livre sur le développement d'applications Windows avec le langage C# (en version 9) et Visual Studio 2019 est destiné aux développeurs qui débutent avec le framework .NET. Il leur permet d'apprendre les bases du langage C# et introduit des concepts plus avancés leur donnant une vue d'ensemble des possibilités offertes par le langage C#, Visual Studio et le framework .NET en général. L'auteur a choisi une approche pas à pas tout en construisant une application fonctionnelle tout au long de l'ouvrage pour illustrer de manière pratique et cohérente les concepts abordés.
L'apprentissage commence par la familiarisation avec l'interface de Visual Studio 2019 ainsi qu'avec le concept de l'architecture .NET. Les détails du langage C#, sa syntaxe et ses fonctionnalités comme les classes, l'héritage, les interfaces, les types génériques ou encore les délégués et les évènements sont ensuite expliqués avant d'aborder la conception d'interfaces utilisateur.
La conception de l'interface utilisateur couvre toutes les phases utiles pour créer des applications Windows à la fois fonctionnelles et ergonomiques, allant de la création de formulaires à la création de contrôles en passant par l'implémentation de gestionnaire d'évènements et la validation des données saisies. Une introduction à la conception d'application WPF est également incluse.
Les outils de Visual Studio qui permettent de réaliser les tests et le débogage des applications sont également détaillés en présentant les techniques de gestion des erreurs mais aussi les concepts permettant de surveiller les applications comme le traçage, l'interaction avec les journaux d'évènements et l'utilisation des compteurs de performance.
L'utilisation de Entity Framework est détaillée au sein d'exemples concrets permettant de comprendre rapidement comment créer des modèles de données et comment les utiliser pour communiquer avec une base de données, tout en apprenant à utiliser le langage de requête LINQ pour interagir avec des données sous différents formats (objets, SQL ou XML). L'alternative au stockage de données d'une application sur le système de fichiers et l'utilisation du concept de la sérialisation sont également détaillées, fournissant ainsi une vision globale des possibilités offertes par le framework .NET concernant la gestion des données.
Des concepts plus avancés sont également abordés afin d'exposer une gamme plus large des possibilités offertes par le langage C# et Visual Studio : l'utilisation des expressions régulières, le développement d'applications multitâches et asynchrones, la globalisation et la localisation d'une application, la sécurité du code, l'implémentation d'applications client/serveur, le dessin avec GDI+ ainsi que la réflexion font partie des sujets introduits.
La dernière partie de l'ouvrage est consacrée à la création d'assemblages ainsi qu'au déploiement des applications. Les outils et techniques mis à disposition par Visual Studio pour créer des installeurs Windows et configurer les applications y sont détaillés.
Le code de l'application exemple traitée dans l'ouvrage est en téléchargement sur le site www.editions-eni.fr.
2. L’ajout dynamique d’un gestionnaire d’événements
3. La suppression dynamique d’un gestionnaire d’événements
Les gestionnaires d'événements avancés
1. Un gestionnaire pour plusieurs événements
2. Plusieurs gestionnaires pour un événement
Validation de la saisie
Introduction
La validation au niveau des champs
1. Les propriétés de validation
2. Les événements de validation
a. KeyDown et KeyUp
b. KeyPress
c. Validating et Validated
La validation au niveau du formulaire
Les méthodes de retour à l'utilisateur
1. MessageBox
2. ErrorProvider
Création de contrôles utilisateurs
Introduction
Les contrôles personnalisés
L'héritage de contrôles
Les contrôles utilisateurs
Création d'applications UWP
Introduction
Principes
Les outils de développement
Le langage XAML
Une première application UWP
1. Les bases d’un projet UWP
2. Les contrôles et événements
3. Les styles
Débogage
Les types d'erreur
1. Les erreurs de syntaxe
2. Les erreurs d’exécution
3. Les erreurs de logique
Le débogueur
1. Contrôler l’exécution
2. Les points d’arrêt
a. Les conditions d’arrêt
b. Le nombre d’accès
c. Le filtrage
d. Les actions
e. Exécuter l’exécution jusqu’ici
3. Les DataTips
4. Les PerfTips
5. Les attributs Caller
Les fenêtres
1. La fenêtre Sortie
2. La fenêtre Variables locales
3. La fenêtre Automatique
4. La fenêtre Espion
5. La fenêtre Exécution
6. Les autres fenêtres
Gestion des exceptions
La classe Exception
La création d'exceptions personnalisées
Le déclenchement des exceptions
L'interception et la gestion des exceptions
Monitoring
Le traçage
1. Les classes Debug et Trace
2. La collection d’écouteurs
a. La création d’écouteurs
b. La sauvegarde des traces
3. Les commutateurs de trace
a. Le fonctionnement des commutateurs de trace
b. La configuration des commutateurs de trace
Les journaux d'événements
1. L’interaction avec les journaux d’événements
2. La gestion des journaux d’événements
3. L’écriture d’événements
Les compteurs de performance
1. La création de compteurs de performance
a. Depuis Visual Studio
b. Depuis le code
2. L’utilisation de compteurs de performance
3. L’analyse de compteurs de performance
Tests unitaires
Introduction aux tests unitaires
1. La création du projet
2. Les classes de tests unitaires
La mise en place d'une série de tests
1. La création de tests au projet
2. Le déroulement des tests
Création du modèle de données
Introduction
La création d'un modèle
La création d'entités
La génération de la base de données
La création d'entités à partir du code (Code First)
Présentation d’Entity Framework
Introduction
Le mappage
1. La couche logique
2. La couche conceptuelle
3. La couche de mappage
Travailler avec les entités
1. Les entités
2. La classe DbContext
3. Les relations
a. Le concept de table par type
b. Le concept de table par hiérarchie
Présentation de LINQ
Les requêtes LINQ
1. La syntaxe
2. Les méthodes d’extension
Les opérateurs de requêtes
1. Filtrer
a. Where
b. OfType<tresult></tresult>
c. SelectMany
d. Skip et Take
2. Ordonner
a. OrderBy
b. ThenBy
3. Grouper
a. GroupBy
b. Join
4. Agréger
5. Convertir
Les requêtes parallèles
1. Partitionner une requête
2. Annuler une requête
LINQ to Entities
Introduction
Extraire les données
1. L’extraction simple
2. L’extraction conditionnelle
Ajouter, modifier et supprimer des données
1. Ajouter des données
2. Modifier des données
3. Supprimer des données
4. L’envoi des modifications
LINQ to SQL
La création de classes LINQ to SQL
L'objet DataContext
1. La méthode ExecuteQuery
2. Utiliser des transactions
3. Les autres membres de DataContext
Exécuter des requêtes avec LINQ
1. Les requêtes simples
2. Les requêtes filtrées
3. Les requêtes de jointure
Les procédures stockées
1. L’ajout de procédures stockées aumodèle
2. L’exécution de procédures stockées
LINQ to XML
Les objets XML
1. XDocument
2. XElement
3. XNamespace
4. XAttribute
5. XComment
Exécuter des requêtes avec LINQ
1. Les requêtes simples
2. Les requêtes filtrées
3. Les requêtes de jointure
Le système de fichiers
Les classes de gestion du système de fichiers
1. DriveInfo
2. Directory et DirectoryInfo
3. File et FileInfo
4. Path
Travailler avec le système de fichiers
1. Les objets Stream
2. La classe FileStream
3. Lire un fichier texte
a. Lire avec la classe File
b. Lire avec la classe StreamReader
4. Écrire dans un fichier texte
a. Écrire avec la classe File
b. Écrire avec la classe StreamWriter
Sérialisation
Introduction
La sérialisation binaire
1. Les bases
2. Contrôler la sérialisation
a. Le contrôle par attribut
b. Le contrôle par interface
La sérialisation XML
1. Les bases
2. Contrôler la sérialisation
3. La sérialisation XML SOAP
Expressions régulières
Introduction
Une première expression régulière
Les options de recherche
Les caractères d'échappement
Les ensembles
Les groupes
Les ancres
Les quantifieurs
Multithreading
Introduction
La classe Thread
1. Créer un thread
2. Suspendre ou annuler un thread
3. Échanger des données avec un thread
4. Verrouiller un thread
5. Priorité des threads
Fonctions asynchrones
1. Task et Task<tresult></tresult>
2. async et await
Le composant BackgroundWorker
Globalisation et localisation
Introduction
La culture
La globalisation
La localisation
Sécurité
Introduction
Les éléments de base
1. L’interface IPermission
2. La classe CodeAccessPermission
3. L’interface IPrincipal
Implémentation de la sécurité
1. La sécurité basée sur lesrôles
a. Sécurité impérative
b. Sécurité déclarative
2. La sécurité basée sur lesdroits d’accès
a. Sécurité impérative
b. Sécurité déclarative
Introduction à la cryptographie
Pour aller plus loin
Le dessin avec GDI+
1. La classe Graphics
a. Les coordonnées
b. Les formes
2. La structure Color et les classes Brush et Pen
a. La structure Color
b. La classe Brush
c. La classe Pen
d. Les paramètres système
3. Les exemples
a. L’affichage de texte
b. Redimensionner une image
Le remoting
1. Le principe
2. L’implémentation
a. La couche commune
b. L’application serveur
c. L’application cliente
Reflection
1. La classe System.Type
2. Charger un assemblage dynamiquement
a. L’énumération des types
b. L’instanciation d’objets
c. L’utilisation des membres
Assemblages et configurations
Introduction
Les assemblages privés
Les assemblages partagés
Les fichiers de configuration
Déploiement
Introduction
Les projets de déploiement
1. XCOPY
2. Projet CAB
3. Projet de module de fusion
4. Projet d’installation
L'assistant Installation
Configuration du projet
1. Les propriétés du projet
2. Les éditeurs de configuration
a. Éditeur du système de fichiers
b. Éditeur du registre
c. Éditeur des types de fichiers
d. Éditeur de l’interface utilisateur
e. Éditeur des actions personnalisées
f. Éditeur des conditions de lancement
Jérôme HUGON
Jérôme HUGON est développeur/consultant .NET depuis de nombreuses années et est certifié Microsoft sur les technologies .NET. Son expérience du développement de sites web et d'applications Windows lui permet d'apporter au lecteur une connaissance de base solide du langage C# mais aussi une belle ouverture vers des concepts plus avancés pour une utilisation optimale de ce langage.