The controller layer is part of the view, in my opinion. What you call the business layer, I invoke services (and not web services, which is just one deployment choice among many).
The business layer is aware of use cases and units of work to achieve user goals.
The controller is designed to check, bind and marshal requests, determine which service is needed to fulfill the request and pass values to it, untie the response and route it to the next appropriate view.
So, I agree with the hypothesis posed in your title: controller! = Service.
The classic template that comes from Smalltalk is the Model-View-Controller, which is not consistent with my statement, breaking the view and controller into separate levels.
What I am describing is what is implemented in Java infrastructures for both the Internet and the desktop. Vision change technology usually means changing the controller.
So, if the Smalltalk idiom was a model-view controller, a more modern approach would look like view-> controller-> service-> model / persistence. A model means “domain objects” that are independent of all viewing technologies.
source share