title: Should controllers in an ASP.NET MVC web app call repositories, services, or both?
body: <p>The controllers in my ASP.NET MVC web app are starting to get a bit bloated with business logic.  The examples on the web all show simple controller actions that simply pull data out of a repository and pass it to the view.  But what if you also need to support business logic on top of that?  </p>
  
  <p>Say, for instance, an action that fulfills an order also needs to send an e-mail out.  Do I stick this in the controller and copy/paste this logic to any other actions that also fulfill orders?  My first intuition would be to create a service like OrderFulfillerService that would take care of all this logic and have the controller action call that.  However, for simple operations like retrieving a list of users or orders from the database, I would like to interact directly with the repository instead of having that call wrapped by a service.</p>
  
  <p>Is this an acceptable design pattern?  Controller actions call services when they need business logic and repositories when they just need data access?</p>