Есть много способов реализовать это. Либо сегментируйте уровень службы в отдельную сборку, либо он может находиться в той же сборке, что и приложение ASP.NET MVC (например, в папке Services
). Там действительно нет правил для этого. Это будет зависеть от уровня повторного использования, который вы ожидаете от этого слоя, и от размера вашего проекта. Однако важно абстрагировать этот сервисный слой:
public interface IMyService
{
... some service methods
}
и тогда ваши контроллеры будут работать только с этой абстракцией:
public class MyController: Controller
{
private readonly IMyService _service;
public MyController(IMyService service)
{
_service = service;
}
public ActionResult MyAction()
{
... call some methods on the service layer
}
}
Затем, чтобы подключить конкретную реализацию, вы должны настроить инфраструктуру внедрения зависимостей.