There are two classes in my project (using ASP.NET MVC): AuthenticationService, and ProfileService. When a new user registers at my site the Authentication controller's Register action calls a Register method in IAuthenticationService, which creates an authentication record for the user according to whichever concrete authentication module the interface is referring to (injected into the controller's constructor). As part of the registration process a profile record is created for the user, which is created by calling CreateProfile(User) on the injected IProfileService.
At the moment the controller is calling both services, but I like the idea of my controller performing as little business logic as possible. I'm wondering if I have any other options besides letting the authentication service know about the profile service, which in turn would require any future implementation of IAuthenticationService to know to call CreateProfile? I can't help feel that has code smell written all over it.
Another possibility is to have a third service, {I,}RegistrationService, be responsible for the logic.
What's the recommended, or preferred way of handling this situation? Thanks