Les problématiques du développement d'applications d'entreprise
- Les objectifs : productivité, scalabilité, évolutivité, testabilité.
- La séparation des responsabilités.
- L'application monolithique.
- L'architecture microservice.
Travaux pratiques
Prise en main de l'environnement de développement (Visual Studio).
Présentation de l'écosystème .NET
- Plusieurs langages : C#, VB.NET, F#.
- L'émergence de .NET Core, l'unification de .NET et de .NET Framework depuis .NET 5.
- Des frameworks : DependencyInjection, EntityFramework, ASP.NET, etc.
Travaux pratiques
Prise en main de l’environnement de développement.
Bonnes pratiques de conception et designs patterns
- Séparation des responsabilités avec facade.
- Injection de dépendances avec strategy.
- Interceptions avec proxy.
- Gestion du cycle de vie des composants avec singleton et prototype.
- Instanciation des composants de l'application avec factory.
- Implémenter une architecture orientée message avec command et observer.
Travaux pratiques
Mise en place de ces patterns avec Microsoft.Extensions.DependencyInjection.
Accès aux données et transactions
- Introduction aux différents types de bases de données (SQL, NoSQL).
- Les principes ACID et la gestion des transactions.
- Le pattern unit of work.
- Frameworks de persistance (EntityFrameworkCore, NHibernate). mini-ORM (Dapper) : avantages/inconvénients Best pratices.
Travaux pratiques
Accès aux données d'une base relationnelle depuis une application C#, application des transactions.
API REST avec AspNet Core
- Les principes de conception d'une API REST (URI, mediatype, HATEOAS).
- Les bases du protocole HTTP.
- La réalisation d'API REST avec ASP.NET MVC.
- La sécurité : authentification par token avec OpenID Connect.
Travaux pratiques
Développement d'une API REST pour exposer l’application développée précédemment.
IHM avec AspNet Core
- Rappel du pattern MVC.
- Les vues Razor : accès au modèle, internationalisation, gestion des exceptions.
- Authentification par formulaire, sécurisation des routes et des vues, protection contre les attaques CSRF.
Travaux pratiques
Développement d’une IHM pour exposer l’application développée précédemment.
Industrialisation des développements
- L'intégration continue.
- La livraison continue.
- Création d’une image OCI avec Docker.
- Le déploiement sur l’orchestrateur Kubernetes.
Travaux pratiques
Création d’une image docker et études des descripteurs de déploiements Kubernetes.