Introduction
Présentation
Lors de la conception d’un logiciel, le choix des technologies ne constitue qu’une partie des décisions à prendre. Il faut également déterminer comment organiser le code, répartir les responsabilités, maîtriser les dépendances et faire communiquer les différentes parties de l’application. Ces décisions structurantes définissent son architecture logicielle.
Une architecture adaptée répond aux besoins du logiciel. Elle facilite sa compréhension, ses tests, sa maintenance et son évolution. À l’inverse, une architecture inutilement complexe peut ralentir le développement sans apporter de bénéfice réel, car les plus-values qu'elle apporte ne compensent pas les contraintes qu'elle impose. Il n’existe donc pas une architecture idéale pour tous les projets : le choix dépend notamment des fonctionnalités, de la taille et du niveau de l’équipe, des besoins de déploiement, des contraintes de performance et de l’évolution attendue de la solution.
Cette nouvelle série d’articles présentera les principales architectures et approches structurantes pouvant être mises en œuvre avec .NET et C#. Pour chacune d’elles, nous étudierons ses objectifs, son organisation, ses avantages, ses limites et une mise en œuvre concrète.
Des architectures parfois concurrentes, souvent complémentaires
Les architectures présentées dans ce livre ne décrivent pas toutes une architecture complète. Certaines structurent le logiciel dans son ensemble ; d’autres organisent une partie de celui-ci ou orientent certaines décisions de conception. Elles peuvent donc se compléter, sans être tous nécessaires à chaque projet. Par exemple, l'architecture MVC organise la présentation et les interactions avec l’utilisateur, l'architecture CQRS distingue les opérations de lecture et d’écriture, l'architecture DDD guide la modélisation du métier, tandis que l'architecture Event Sourcing consiste à conserver les événements qui ont conduit à l’état courant d’un objet métier.
Une application peut ainsi être conçue comme un monolithe modulaire, suivre les principes de la Clean Architecture, modéliser son métier avec l'architecture DDD et appliquer l'architecture CQRS à certains cas d’utilisation. Ce livre vous propose les principes de chacune d'entre elles, les problèmes auxquels elles répondent et les conditions dans lesquelles plusieurs approches peuvent être associées.