Вопрос

В попытке понять MVC 2 и попытаться заставить свою компанию принять ее как жизнеспособную платформу для будущего развития, я делаю много чтения в последнее время. Работав с ASP.NET довольно исключительно в течение последних нескольких лет, у меня было кто-то догоняет.

В настоящее время я понимаю шаблон хранилища, модели, контроллеры, аннотации данных, аннотации данных и т. Д. Но есть одно, что удерживает меня от совершенно понимания достаточно, чтобы начать работу в справочном приложении.

Первый - это шаблон сервисного слоя. Я прочитал много сообщений и вопросов блога, на которые здесь на переполнении стека, но я до сих пор не полностью понимаю цель этого шаблона. Я смотрел всю серию видео на MvCcCentral в приложении Golf Tracker, а также посмотрел на демонстрационный код, который он опубликовал, и он выглядит мне, как сервисный слой - это просто другая обертка вокруг шаблона репозитория, которая вообще не выполняет никакой оболочки.

Я также прочитал этот пост: http://www.asp.net/learn/mvc/tutorial-38-cs.aspx. И, казалось, несколько ответили на мой вопрос, однако, если вы используете аннотации данных для выполнения вашей проверки, это кажется ненужным.

Я искал демонстрации, посты и т. Д. Но я не могу найти все, что просто объясняет шаблон и дает мне убедительные доказательства, чтобы использовать его.

Может кто-то, пожалуйста, предоставьте мне 2-го класса (OK, может быть, 5-й класс) причина использовать этот шаблон, то, что я потеряю, если я не буду, и что я получаю, если я сделаю?

Это было полезно?

Решение

В модели MVC у вас есть ответственность, разделенные между 3 игроками: модель, вид и контроллер.

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

Модель обычно поддерживается базой данных, поэтому у вас есть некоторые DAOS, доступ к этому. Ваш бизнес делает некоторые ... хорошо ... Бизнес и магазины или извлекают данные в / из базы данных.

Но кто координирует даос? Контроллер? Нет! Модель должна.

Введите сервисный слой. Сервисный слой обеспечит высокую услугу контроллеру и будет управлять другими (более низкими уровнями) игроками (DAOS, другие услуги и т. Д.) За сценами. Он содержит бизнес-логику вашего приложения.

Что произойдет, если вы не используете его?

Вам придется поставить бизнес-логику где-то, и жертва обычно контроллер.

Если контроллер является веб-центром, он должен будет получать свой вход и предоставить ответ как запросы HTTP, ответы. Но что, если я хочу позвонить своему приложению (и получить доступ к бизнесу, который он предоставляет) из приложения Windows, который общается с RPC или какой-либо другой вещью? Что тогда?

Ну, вам придется переписать контроллер и сделать логику клиента Agnostic. Но с сервисным слоем у вас уже есть. YYYou не нужно переписать вещи.

Сервисный слой обеспечивает связь с DTOS, которые не привязаны к определенному осуществлению контроллера. Если контроллер (независимо от того, какой тип контроллера) предоставляет соответствующие данные (NO Mater Источник) Ваш сервисный слой сделает свою вещь, предоставляющую сервис вызывающему абонеру и сокрытие вызывающего абонента от всех обязанностей бизнес-логики.

Другие советы

Я должен сказать, что я согласен с DPB с вышеупомянутым, оберткой IE Service Sayre многоразовый, издевается, я в настоящее время в процессе включения этого слоя внутри моего приложения ... вот некоторые из проблем / требований, которые я размышляю о (Очень быстро: P), что может быть выключено, помогите вам ...
1. Несколько порталов (например, портал блоггеров, клиентский портал, внутренний портал), который потребуется для доступа многих разных пользователей. Все они должны быть отдельными приложениями ASP.NET MVC (важное требование)
2. Внутри приложений сами некоторые вызовы в базе данных будут похожи, методы и способ обработаны данные из слоя репозитория. Без сомнения, некоторые контроллеры из каждого модуля / портала сделают именно или перегруженную версию одного и того же вызова, следовательно, возможную потребность в сервисном слое (кода для интерфейсов), которые я буду компилировать в отдельном классе проекта.
3. Если я создаю отдельный класс проекта для моего сервисного слоя, мне может потребоваться сделать то же самое для слоя данных, либо сочетать его с помощью сервисного слоя и сохранить модель от самого веб-проекта. По крайней мере, так как мой проект растет, я могу выбрасывать слой доступа к данным (т.е. linqtoSQL -> nhibernate), или член команды, не может работать над каким-либо кодом в любом другом проекте. Недостатком может быть, они могут взорвать все, лол ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top