I don’t have patterns or architecture guidelines to back up these claims…
But I prefer to have everything contextual. Meaning as much in components as possible. Controllers encourage prop drilling, which makes maintenance hard…
If you desire to extract some shared functionality, that’s the perfect reason to make a service.
Controllers, today, only exist because we haven’t found a good replacement for query params and the route’s rendering context yet.
There are some RFCs out though:
If/when those two are merged. We can ignore controllers altogether.
The direction ember is heading in is to be a component-service framework.