A controller does the job of receiving the request and producing the output based on the input data in ASP.NET MVC. You can imagine controllers as the entrance point to your business flow that organizes the application flow.
If you are intending to write a complex application, it is best to avoid business logic in your controllers. Instead, your controllers should call your business logic. In this way, you can keep the core part of your business technology-agnostic.
At the high level, the controller orchestrates between the model and the view, and sends the output back to the user. This is also the place where authentication is usually done through action filters. Action filters are basically interceptors and will be discussed in detail in the Filters section of this chapter. The following diagram illustrates the high-level flow...