Существует ли соглашение о расположении папок для решения Visual Studio 2010 при использовании шаблона сервисного уровня?

#asp.net-mvc-3 #c#-4.0 #service-layer

#asp.net-mvc-3 #c #-4.0 #уровень обслуживания

Вопрос:

Я хочу использовать шаблон уровня обслуживания (как описано на сайте Мартина Фаулера здесь) для моего ASP.NET Приложение MVC 3.

Моя цель — настроить структуру решения таким образом, чтобы мне было легче изучить шаблон, установив для него надлежащую структуру, прежде чем углубляться в код.

Может ли кто-нибудь показать мне обычный способ компоновки решения, проектов и папок в решении Visual Studio 2010?

Ответ №1:

Есть много способов реализовать это. Либо выделите уровень обслуживания в отдельную сборку, либо он может находиться в той же сборке, что и 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
    }
}
  

Затем, чтобы подключить конкретную реализацию, вы должны настроить свою среду внедрения зависимостей.