В архитектуре приложения MVC лучше добавить слой службы или создать представления базы данных? - PullRequest
0 голосов
/ 02 марта 2012

Предположим, у вас есть база данных, в которой вы храните информацию о билетной системе (например, служба поддержки). (Упрощенная) схема:

  1. Ticket (TicketId (PK), TicketDesc, TicketCreated, TicketClosed, AssignedToEmployee (FK) )

  2. Сотрудник ( EmployeeId (PK) , EmployeeName, EmployeeFunction)

Если между Ticket и Employee существует одно-много отношений в AssignedToEmployee = EmployeeId .

Вам необходимо разработать приложение MVC ( DAL , составленное из EF entity + Repository class), которое отображает графики и статистику о билеты, такие как Количество билетов, назначенных пользователям в определенный период времени . Чтобы рассчитать статистику и предоставить значения для графика в View, вам нужно выполнить некоторую логику. Эту логику можно поместить в Controller или в Repository . Поскольку контроллер должен быть максимально тонким, а логика реализации в репозитории увеличит связь с базой данных, что лучше в этом случае? Создать Сервисный слой или создать представления базы данных ? В последнем случае созданные представления должны рассматриваться как объекты в моем EF?

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Я бы создал сервисный слой. Контроллеры действительно являются частью View, на мой взгляд. Хранилища не должны делать расчеты. Вам нужна промежуточная услуга. Эта договоренность будет иметь ряд преимуществ:

  1. Сервисы могут повторно использоваться другими приложениями в SOA.
  2. Сервисы могут быть предоставлены с использованием любого количества методов удаленного взаимодействия (SOAP, REST, XML-RPC и т. Д.)
  3. Услуги являются естественными владельцами единиц труда; они должны управлять соединениями и транзакциями.
1 голос
/ 02 марта 2012

Я бы создал слой службы, а не добавил представления базы данных.

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

Сервисный уровень не обязательно означает сервис WCF или сервис ASMX, это может быть бизнес-уровень, на который вы ссылаетесь.

...