Когда создается учетная запись с SHARED ACCESS SIGNATURE
, вы должны :
После того, как вы это сделаете, вы НЕ (и не можете в управляемых экземплярах) использовать [112 ] вариант. SQL будет использовать учетные данные, которые вы установили, которые соответствуют URL-адресу, с которого вы восстанавливаете:
RESTORE DATABASE [$DBName]
FROM URL = '$URL'
Я на самом деле менее обеспокоен поддержанием REST в одноразовом мастере. REST является самым важным, я думаю с повторяемыми действиями - Вы хотите, чтобы URL был в основном bookmarkable так, чтобы Вы возвратили то же представление данных независимо от того, когда Вы идете туда. В многоступенчатом мастере у Вас есть зависимости, которые собираются повредить эту перспективу REST так или иначе. Мое чувство должно иметь единственный контроллер с потенциально отдельными действиями или использующий параметры запроса для указания на то, что ступает, Вы идете. Это - то, как я структурировал свои мастера активации (которые требуют нескольких шагов), так или иначе.
При применении некоторой логики DDD здесь которая хвалит "M" в MVC, состояние UI (регистрационный прогресс) принадлежит Прикладного уровня, который может говорить непосредственно с Доменными и Уровнями инфраструктуры (Четыре слоя: UI, Приложение, Домен и Инфраструктура). Понятие DDD заставляет Вас "думать" о том, как решить решение в коде сначала. Давайте ступим через это...
Состояние, которое Вы хотите поддержать здесь, является шагом или прогрессом регистрации. Так, мой первый шаг должен был бы зарегистрировать прогресс или "шаги". Такой как, Шаг 1: Получите Имя пользователя/Передачу, Шаг 2: Получите электронную почту. В этом случае я применил бы логику для "перемещения" Модели в следующий шаг. Скорее всего, с NextStep () метод на RegistrationService (RegistrationService. NextStep ()).
Я создал бы сервис на Прикладном уровне под названием RegistrationService. Я поместил бы метод в здесь названный NextStep (). Но помните, Домен не содержал бы состояние модели здесь. В этом случае Вы хотели бы сфокусировать состояние на Прикладном уровне. Так в этом случае NextStep () реагировал бы не на объект модели (так как это не часть Доменной ответственности), но вместо этого UI. Так, Вам нужно что-то для сохранения состояния Процесса регистрации.
Таким образом, теперь мы знаем, что должны сохранить состояние чего-то в UI. MVC допускает понятие под названием ViewModels (в ASP.NET MVC, не уверенный, что RoR называет им). ViewModel представляет модель, которая будет отображена представлением и/или частичными представлениями.
ViewModel был бы превосходным местом для сохранения состояния этого объекта. Давайте назовем его, RegistrationProgressViewModel () и засунем NextStep () метод на нем. Это, конечно, означает, что Прикладной уровень должен был бы сохранить местоположение RegistrationProgressViewModel, и Прикладной уровень изменит внутренности его на основе действий NextStep. если это сложно, можно хотеть создать RegistrationProgressService () на прикладном уровне и разместить NextStep () в нем для абстракции логики далеко.
Заключительная часть - то, как отследить состояние того объекта. Так как веб-приложения являются не сохраняющими состояние, необходимо сохранить контроль некоторыми другими средствами затем приложение. В этом случае я вернулся бы к также: 1) Сериализация ViewModel клиенту и разрешению клиенту передать его назад и вперед, или 2) Сохраните копию серверной стороны ViewModel и передайте некоторый тип идентификатора назад и вперед клиенту и назад.
Это - хороший пример для размышления о, поскольку я еще не выполнил это сам. Для № 2 самый безопасный и обеспеченный способ сохранить состояние этого ViewModel состоит в том, чтобы сохранить его к через Уровень инфраструктуры (да, уровень APp может говорить непосредственно с Уровнем инфраструктуры). Это кажется большой работой мне для чего-то, что может вымереть, и у меня была бы частичная регистрация, находящаяся в моем DB.
Но, № 2 сохранил бы частную информацию пользователя (имя пользователя, пароль, электронная почта, CC #, и т.д.) всеми на стороне сервера и не передал бы его назад и вперед.
Так, после обхода через него мы придумали:
Таким образом, Вы никогда не должны отслеживать что "шаг? 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 не допустим, / регистр не совершенствуется к следующему шагу.
Хотя ответы действительно являются очень хорошими вариантами, я все еще использую подход, описанный в:
Плечи гигантов | Мастер RESTful с использованием ASP.Net MVC .
Это определенно стоит посмотреть. Хотя я должен сказать, что ответы, приведенные здесь, заставляют меня задуматься переделать этого волшебника, когда у меня будет время.