Цель уровня служб и ASP.NET MVC 2

Я совершил небольшую ошибку. Тип контента был закодирован в URL, но я отправлял данные JSON. Спасибо @ADyson, который идентифицировал isue.

Вот правильный код.

var data = this.state;
    var bodyData =
      "username=" +
      data.username +
      "&password=" +
      data.password +
      "&grant_type=password";
    const response = axios({
      url: "http://localhost:56885/Token",
      method: "post",
      headers: {
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
      },
      data: bodyData
    });
    console.log(response);
25
задан Brian McCord 27 February 2012 в 16:23
поделиться

1 ответ

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

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

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

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

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

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

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

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

Что ж, вам придется переписать контроллер и сделать логический клиент независимым. Но с сервисным уровнем у вас уже есть это. Тебе не нужно переписывать вещи.

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

35
ответ дан 28 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: