While software architects are interested in exploring evolutionary architectures, we aren’t attempting to model biological evolution. Theoretically, we could build an architecture that randomly changed one of its bits (mutation) and redeployed itself. After a few million years, we would likely have a very interesting architecture. However, we don’t have millions of years to wait. We want our architecture to evolve in a guided way, so we place constraints on different aspects of the architecture to reign in undesirable evolutionary directions. A good example is dog breeding: By selecting the characteristics we want, we can create a vast number of different shaped canines in a relatively short amount of time.
Проект предназначен для демонстрации возможностей архитектурных тестов. Представляет собой приложение для ведения списка дел. Реализован в виде модульного монолита. Внутри модулей используется Clean architecture.
Архитектурные тесты реализованы с помощью:
- Building Evolutionary Architectures. Neal Ford, Rebecca Parsons, Patrick Kua
- Clean Architecture: A Craftsman's Guide to Software Structure and Design. Robert C. Martin
- Who Needs an Architect? Martin Fowler
- Is High Quality Software Worth the Cost? Martin Fowler
- Vertical Slice Architecture Jimmy Bogard
- PresentationDomainDataLayering Martin Fowler
- Unit Test Your Architecture with ArchUnit Jonas Havers
- Writing ArchUnit style tests for .NET and C# for self testing architecture rules
- HttpClient создается только с помощью IHttClientFactory
- Все enpoints возвращают ошибку в формате Problem Details
- Все модели запросов/ответов сериализуемы. Актуально в случае кастомных типов, для которых не поддерживается сериализация "из коробки".
- При логирование используется шаблон с параметрами, а не интерполяция строк.