Flashcards in Architecting ASP.NET Core Applications: Best Practices Deck (20)
What is dependency inversion in soliD design principles?
Means that objects depends on interfaces instead of real implementations.
What is the two main benefits of dependency inversion?
loosely-coupled applications and testable software.
What is separation of concerns in Solid design principles?
Means separating software in different sections or modules which each one addresses a specific concern.
What is the term "concern" in software architecture?
is a larger computational problem that can't be solved by a single class.
What is the DRY software dev principle?
don't repeat yourself... meaning less code repetition.
How is persistence ignorance is achieved?
Via POCOs - domain classes shouldn't be impacted by how they're persisted.
What is the all-in-one architecture? What is an example of that?
All files, controllers, views (and everything else) are in the same (large) project. A MVC project.
Can an all-in-one project be difficult to maintain?
Yes, can get very difficult since it is too easy to tight couple stuff.
What are the 4 benefits of layered architecture?
1 - Is split according to concerns (modules);
2 - Promote reuse
3 - Easier to maintain
4 - Is pluggable.
What are the 3 layers of a typical layered architecture?
Presentation, Business logic and data access layers.
What is the 2 main disadvantages of layered architecture ?
Still coupling between layers and behaves as a single application.
What is clean architecture (architecture style)? Was it created in 2012?
Is a variation of hexagonal and onion architectures styles. yes
What is clean architecture based on?
In design principles (including SOLID)
What is the 2 main benefit of clean architecture?
create maintainable and testable applications.
What are the 3 circular layers of clean architecture?
Interface Entities, application core, Infrastructure/Presentation
Which kind of code goes to the core project?
Entities, Interfaces (implemented later on in the Core and in the Infrastructure, Services and Exceptions).
What is ultimately not permitted in the core project?
ef core or any presentation dependency (aka installed packages)
Which kind of code goes to the infrastructure project?
Data access (ef core), logging, identity (auth), file access
Which kind of code goes to the UI project? Can API go here?
MVC, Razor, middleware, filters. Yes, API also goes here.