Should there be a Service Layer in Asp.net mvc?

asp.net, asp.net-mvc, domain-driven-design, nhibernate, repository-pattern

Solution

I highly recommend using a service layer so you can share common functionality between different web applications. It maybe a case that the architecture is already in existence and you may want to add a new mvc website on the front end.

For simple architectures built from scratch it maybe overkill.

Problem

Should there be a Service Layer in Asp.net MVC between Controller and Repository? As Repository is there for only Data Access. Some business logic is leaked into Controller. This might create a problem if the same operation is used by classic Asp.Net client as we have to duplicate the logic in Controller.

Original source