Структура на проекта MVC-3

Имам следното за структура на проекта, това са всички отделни проекти, казаха ми да го направя по този начин, така че не е мой избор.

CORE 
  --Self Explanitory
DATA 
  --Contains EF 4.1 EDMX, POCO's Generic Repository Interface
DATAMapping
  --Contains Generic Repository
Services
  -- Contains nothing at the moment
MVC 3 Application
  -- Self Explanitory

Ето моят въпрос. Четох, че е най-добрата практика контролерите да са на диета и че моделите/моделите на изгледи трябва да са тъпи, поради което въвеждам частта от слоя на услугата в моята структура на проекта. Истинският въпрос сега; Това добър подход ли е или създавам твърде много работа за себе си?

Така че, ако искам да кажа, че имам някои CRUD операции за продукти или категории или някой от другите обекти, хранилището трябва да бъде инстанцирано от слоя на услугата / слоя на бизнес логика?

Малко въвеждане, моля??


person CrazyCoderz    schedule 02.04.2011    source източник


Отговори (1)


Лично аз имам моя сервизен слой, който се позовава само на общи и абстрактни хранилища за CRUD операции. Например конструктор на сервизен слой може да изглежда така:

public class MyService: IMyService
{
    private readonly IFooRepository _fooRepo;
    private readonly IBarRepository _barRepo;

    public MyService(IFooRepository fooRepo, IBarRepository barRepo)
    {
        _fooRepo = fooRepo;
        _barRepo = barRepo;
    }

    public OutputModel SomeBusinessMethod(InputModel input)
    {
        // ... use CRUD methods on _fooRepo and _barRepo to define a business operation
    }
}

и контролерът просто ще вземе IMyService в своя конструктор и ще използва бизнес операцията.

Тогава всичко ще бъде свързано от рамката за инжектиране на зависимости по ваш избор.

person Darin Dimitrov    schedule 02.04.2011
comment
Съгласна съм с Дарин. Тази структура прави живота лесен - person JP.; 02.04.2011
comment
Страхотно благодаря. Имам друг въпрос към вас, тъй като изглежда, че се справяте отлично с тези неща. Ще го линкна, когато го пусна в psoted - person CrazyCoderz; 02.04.2011
comment
stackoverflow.com/questions/5524414/ - person CrazyCoderz; 02.04.2011