14
Wiring Services in Frameworks And How it Works Under the Hood
The Most Important Question i have asked myself when i have started learning Clean Architecture like DDD (Domain Driven Development) and Separating Business Logic in Services What is the Best Practices Should i follow To Make the Communication Between Services Better?
Today we will discuss alot of Things Related to The Communication between Classes And How it Works in Most Of Frameworks Like Nestjs, Angular and Laravel,....
First Of All You Must Read this Quote Twice
Every App is The Result of Aggregation of Several Components and App Grows, the Way we connect these Components Becomses Win Or Lose Factor For the Maintainability and Success Of The Project
This Great Quote From Nodejs Design Patterns Book And Most of Code Snippets Also
we Have a 1-Blog Service and 2-User Service
we want To Use Blog Service in User Service because User Service Depends on Blog Service
But if We Have More Service Like Friends Service and User Service Depends on Both So We Going to Create a new Object in every New One?
The First Thing Comes in your Mind is to Make It as Singleton
Singleton Object And Uses it Every where it's an ideal Solution for Wiring Modules But This Solution Still Have a bottlenecks That Can Easily Solved By
- Mock Our Services
- Improved Decoupling Between Modules
- Let's Say i will change the whole Object Also
- Understand the Relationship Between Components
it's The Ideal Solution For Wiring Modules Together and how we can easily Control the flow And Dependency Tree With These To That Exactly The Same what IOC(Inversion of Control) Containers Do For Wiring The Modules Together Uses
Dependency Injection + Singleton
Makes the Communication between these Modules Easily And helps us To Solve Many Problems Related to Wiring Services Together
that's why most of Frameworks Already Using IOC Containers To Shift Responsibility Of Wiring Modules To Third Party Package and how it Actually Works Under the hood and Injects Services Easily With Each other
Nestjs Framework Also Using Dependency Injection + Singleton
For The Communication Between Services They Already Mentioned
and Describe how exactly it Works In The Documentation
Nestjs Dependency Injection and Singleton
class BlogService {
constructor() {}
}
module.exports = new UserService();
import BlogService from './blogService';
const userService = new UserService(BlogService);
14