I'm having a discussion in my company on how to structure a student enrollment application we are doing.
We have an SOAP-Service for sending Emails. This Service is in charge of sending, and logging emails send from our different applications.(lets call it EmailService)
Then we have a SOAP- service that handles all needed logic for the enrollment of a student.(lets call it EnrollmentService)
Then we have a client application (UI) that has some small business rules and calls the formerly mentioned Soap Services.
The SW-architecture discussion we have is as follows:
I would like the client application to call the EmailService when needed and let the EnrollmentService only handle thinks of the enrollment.
My fellow developers would like to only include the the EnrollmentService in the client application, add a SendEmail() method in the EnrollmentService and let this EnrollmentService include the EmailService and call the needed methods.
I kind of think that this violates the "separation of concerns" paradigma...
My argument:
What if suddenly another client application that uses the EnrollmentService would choose to use a SMS-Service instead of the EmailService... then we would need to extend the EnrollmentService with a SendSMS() method. Suddenly the EnrollmentService would have to know of may different communication services.
My fellow developers say: "we'll never need anything else than E-Mail", and "we will not need another client app for this". I say: "you never know..."
Can someone tell me which approach might be better
Thanks a lot