Как я создаю краткий и УСПОКОИТЕЛЬНЫЙ мастер под MVC?

Когда создается учетная запись с SHARED ACCESS SIGNATURE, вы должны :

  • именовать учетную запись так же, как путь контейнера
  • [116 ] он должен начинаться с https
  • он не может содержать косую черту

После того, как вы это сделаете, вы НЕ (и не можете в управляемых экземплярах) использовать [112 ] вариант. SQL будет использовать учетные данные, которые вы установили, которые соответствуют URL-адресу, с которого вы восстанавливаете:

RESTORE DATABASE [$DBName] 
FROM URL = '$URL'

8
задан Brian 3 April 2009 в 19:52
поделиться

3 ответа

Я на самом деле менее обеспокоен поддержанием REST в одноразовом мастере. REST является самым важным, я думаю с повторяемыми действиями - Вы хотите, чтобы URL был в основном bookmarkable так, чтобы Вы возвратили то же представление данных независимо от того, когда Вы идете туда. В многоступенчатом мастере у Вас есть зависимости, которые собираются повредить эту перспективу REST так или иначе. Мое чувство должно иметь единственный контроллер с потенциально отдельными действиями или использующий параметры запроса для указания на то, что ступает, Вы идете. Это - то, как я структурировал свои мастера активации (которые требуют нескольких шагов), так или иначе.

7
ответ дан 5 December 2019 в 08:26
поделиться

При применении некоторой логики DDD здесь которая хвалит "M" в MVC, состояние UI (регистрационный прогресс) принадлежит Прикладного уровня, который может говорить непосредственно с Доменными и Уровнями инфраструктуры (Четыре слоя: UI, Приложение, Домен и Инфраструктура). Понятие DDD заставляет Вас "думать" о том, как решить решение в коде сначала. Давайте ступим через это...

Это - индикатор выполнения

Состояние, которое Вы хотите поддержать здесь, является шагом или прогрессом регистрации. Так, мой первый шаг должен был бы зарегистрировать прогресс или "шаги". Такой как, Шаг 1: Получите Имя пользователя/Передачу, Шаг 2: Получите электронную почту. В этом случае я применил бы логику для "перемещения" Модели в следующий шаг. Скорее всего, с NextStep () метод на RegistrationService (RegistrationService. NextStep ()).

А-ч, но это принадлежит уровня App

Я создал бы сервис на Прикладном уровне под названием RegistrationService. Я поместил бы метод в здесь названный NextStep (). Но помните, Домен не содержал бы состояние модели здесь. В этом случае Вы хотели бы сфокусировать состояние на Прикладном уровне. Так в этом случае NextStep () реагировал бы не на объект модели (так как это не часть Доменной ответственности), но вместо этого UI. Так, Вам нужно что-то для сохранения состояния Процесса регистрации.

Убежать от Модели предметной области, как насчет ViewModel?

Таким образом, теперь мы знаем, что должны сохранить состояние чего-то в UI. MVC допускает понятие под названием ViewModels (в ASP.NET MVC, не уверенный, что RoR называет им). ViewModel представляет модель, которая будет отображена представлением и/или частичными представлениями.

ViewModel был бы превосходным местом для сохранения состояния этого объекта. Давайте назовем его, RegistrationProgressViewModel () и засунем NextStep () метод на нем. Это, конечно, означает, что Прикладной уровень должен был бы сохранить местоположение RegistrationProgressViewModel, и Прикладной уровень изменит внутренности его на основе действий NextStep. если это сложно, можно хотеть создать RegistrationProgressService () на прикладном уровне и разместить NextStep () в нем для абстракции логики далеко.

Как раздать ViewModel?

Заключительная часть - то, как отследить состояние того объекта. Так как веб-приложения являются не сохраняющими состояние, необходимо сохранить контроль некоторыми другими средствами затем приложение. В этом случае я вернулся бы к также: 1) Сериализация ViewModel клиенту и разрешению клиенту передать его назад и вперед, или 2) Сохраните копию серверной стороны ViewModel и передайте некоторый тип идентификатора назад и вперед клиенту и назад.

Это - хороший пример для размышления о, поскольку я еще не выполнил это сам. Для № 2 самый безопасный и обеспеченный способ сохранить состояние этого ViewModel состоит в том, чтобы сохранить его к через Уровень инфраструктуры (да, уровень APp может говорить непосредственно с Уровнем инфраструктуры). Это кажется большой работой мне для чего-то, что может вымереть, и у меня была бы частичная регистрация, находящаяся в моем DB.

Но, № 2 сохранил бы частную информацию пользователя (имя пользователя, пароль, электронная почта, CC #, и т.д.) всеми на стороне сервера и не передал бы его назад и вперед.

Наконец, ответ!

Так, после обхода через него мы придумали:

  • Создайте RegistrationProgressViewModel () на Прикладном уровне.
  • Создайте RegistrationProgressService (), с NextStep (ViewModel vm) метод, на Прикладном уровне.
  • Когда NextStep () будет выполняться, сохраните ViewModel к базе данных через Уровень инфраструктуры.

Таким образом, Вы никогда не должны отслеживать что "шаг? id=2" на Представлении или самом UI, поскольку ViewModel обновляется и обновил (Аутентифицируемый, Проверенный, сохранился к DB), когда Вы продвигаетесь.

Так, Ваше следующее беспокойство состояло бы в том, чтобы "продвинуться" в UI. Это легко делают с 1 контроллером, с помощью шага или называют шагами.

Я приношу извинения, но я пишу код C# ниже, поскольку это - мой язык.

public class RegistrationController : Controller
{
  // http://domain.com/register
  public ActionResult Index()
  {
    return View(new RegistrationProgressViewModel);
  }

  // http://domain.com/register
  // And this posts back to itself.  Note the setting 
  // of "CurrentStep" property on the model below.
  //
  public ActionResult Index(
      RegistrationProgressViewModel model)
  {

    // The logic in NextStep() here checks the
    // business rules around the ViewModel, verifies its
    // authenticity, if valid it increases the
    // ViewModel's "CurrentStep", and finally persists
    // the viewmodel to the DB through the Infrastructure
    // layer.
    //
    RegistrationProgressService.NextStep(model);

    switch (model.CurrentStep)
    {
      case 2:
        // wire up the View for Step2 here.
        ...
        return View(model);
      case 3:
        // wire up the View for Step3 here.
        ...
        return View(model);
      case 4:
        // wire up the View for Step4 here.
        ...
        return View(model);
      default:
        // return to first page
        ...
        return View(model);
    }
  }
}

Вы заметите, что это абстрагирует "Бизнес-логику" проверки внутреннего состояния модели в RegistrationProcessService. NextStep () метод.

Хорошее осуществление.:)

В конце Вашим "УСПОКОИТЕЛЬНЫМ" URL является хороший и чистый POST к: / регистр, который ожидает ViewModel с определенными заполненными свойствами. Если ViewModel не допустим, / регистр не совершенствуется к следующему шагу.

12
ответ дан 5 December 2019 в 08:26
поделиться

Хотя ответы действительно являются очень хорошими вариантами, я все еще использую подход, описанный в:

Плечи гигантов | Мастер RESTful с использованием ASP.Net MVC .

Это определенно стоит посмотреть. Хотя я должен сказать, что ответы, приведенные здесь, заставляют меня задуматься переделать этого волшебника, когда у меня будет время.

1
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

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