Architecture & Design - p-patel/software-engineer-knowledge-base GitHub Wiki
Architecture
-
Ideally, business rules and logic should reside in a separate project, which should not depend on other projects in the application.
N-tier architecture
- Presentation layer | Business Logic Layer (BLL) | Data Access Layer (DAL)
Service-oriented architecture
- https://visualstudiomagazine.com/articles/2018/01/02/service-design-patterns.aspx
- Client app | (Facade Service / Mediator -> Services (single responsibility principle)) | BLL (manager classes) | DAL (repositories)
- https://social.msdn.microsoft.com/Forums/en-US/3ec68f3e-4948-4653-84b8-7b6f91f63c2d/service-layer-vs-business-layer?forum=architecturegeneral
- service layer responds to presentation tier use case requests
- service layer, business layer, manager classes
Microservices
- http://aka.ms/MicroservicesEbook
- https://www.youtube.com/watch?v=CZ3wIuvmHeM
Onion architecture / clean architecture
- http://jeffreypalermo.com/blog/the-onion-architecture-part-1/
- https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
- https://github.com/ardalis/cleanarchitecture
Domain-driven design
- https://stackoverflow.com/questions/1222392/can-someone-explain-domain-driven-design-ddd-in-plain-english-please/1222488#1222488
Design
- Entity classes / business objects + utility/helper classes
- repositories, services, presentation layer
Design Patterns
- Where Creational patterns mostly describe a moment of time (the instant of creation), and Structural patterns describe a more or less static structure, Behavioral patterns describe a process or a flow
- mediator, facade, strategy
- Creational Patterns
Deal with object creation mechanisms and are used in situations when basic form of object creation could result in design problems or increase complexity of a code base
- Structural Patterns
Identify a simple way to realise relationships between entities or defines a manner for creating relationships between objects.
- Repository Pattern
- http://deviq.com/repository-pattern/
- Behavioural Patterns
Explains how objects interact. It describes how different objects and classes send messages to each other to make things happen and how the steps of a task are divided among different objects