@mazeltov/service
v1.0.3
Published
A service repository for Mazeltov
Downloads
1
Readme
Services (DRAFT)
In the context of this repo, we are refering to the service layer that is often introduced into MVC patterns. Here is an example:
We all know that in MVC:
- The Controller is responsible to passing requested data to model
- Model operates business logic on entities
- Views represent the results/errors of the model or Controller
So where do things like sending an email fall in here?
What about caching results with a remote DB?
Usually the response is to put this logic into the Controller but it can create bloated and unmanageable code, so the best approach is to isolate into a Service and inject this into the Controller.
Another thing to consider is what happens if you tie all your caching/email to a third party API? What if this code is sprinkled everywhere in every controller. Injecting these things into the service and providing a unified API will allow easy changing of third party tools in the future.
This is Presently in Draft
Right now things are plenty isolated but could use reconsideration. For example:
- An email service
- Could allow either an http api client or smtp client to be injected as driver
- A separate SMS service
- If we think sendInBlue sucks for SMS we can inject other provider into this service
- A cache service
- Logging?
For each of the above we could use the abstract factory pattern to switch implementations
Each variety of service would share a common interface but could then branch on how it does its thing.
Why is this not pressing
This may become more important when:
- Various applicaitons use different drivers for sending emails, caching, sms