Лучшие практики для организации проекта с ASP.NET [закрытый] MVC

Представьте, что вы реализуете метод в терминах нескольких других методов:

-(BOOL)sendCachedRequestReturningError: (NSError**)err {
    BOOL success = [self readCachedRequestReturningError:err];
    if (!success && (*err).domain == MYFileDomain && (*err).errorCode == MYFileNotFoundCode) {
        success = [self sendUncachedRequestReturningError:err];
    }

    return success;
}

Теперь здесь есть 4 пути кода:

  1. Существует кэшированный запрос. Мы просто вернемся success == YES и все хорошо.
  2. При попытке чтения из кэша возникает неисправимая ошибка. readCachedRequestReturningError: установит err и установит success == NO, и вызывающий абонент вызовет presentError: или что-то еще
  3. Произошла ошибка при попытке выполнить сетевой запрос. То же, что # 2, установлено err и success == NO.
  4. Кеша нет, но мы можем сделать сетевой запрос. readCachedRequestReturningError: установит err в допустимое значение NSError{MYFileDomain, MYFileNotFoundCode}, но затем sendUncachedRequestReturningError: выполнится успешно и установит success == YES, а не коснется err вообще, оставив в нем предыдущую ошибку. Если вы теперь проверяете err вместо проверки возвращаемого значения, вы будете думать, что произошла ошибка, когда все прошло хорошо.

Примечание: приведенный выше код сильно упрощен, потому что мы заботимся только об ошибках. Конечно, в реальной программе методы могли бы иметь другой возвращаемый параметр для фактического ответа на запрос или возвращать ответ или nil вместо success BOOL. Это также, вероятно, проверит, является ли err NULL. [Тысяча сто двадцать семь]

5
задан Howard Pinsley 9 November 2008 в 02:01
поделиться

5 ответов

Отдельные блоки! = слабая связь.

-1
ответ дан 13 December 2019 в 05:44
поделиться

Это действительно зависит от размера проекта. Нет никакого свойственного значения в наличии отдельного блока "моделей", поскольку Вы можете единица тестировать проект веб-приложения (включая проекты MVC).

7
ответ дан 13 December 2019 в 05:44
поделиться

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

2
ответ дан 13 December 2019 в 05:44
поделиться

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

3
ответ дан 13 December 2019 в 05:44
поделиться

Если Вы, модели являются Доменными Объектами Передачи, то наличие их в sepearate блоке позволит Вам снова использовать их. Если Ваше приложение является простым приложением MVC, и вот и все, или Вы просто делаете его к модульному тесту, это не нужно. Иначе Вы могли:

  • У Вас есть использование слоя веб-сервиса блок моделей для передачи объектов модели mvc приложению для использования в приложении. Это было бы необходимо при осуществлении не позволяющих веб-приложений, чтобы иметь прямой доступ к базе данных. В этом случае у Вас мог бы быть mvc, который называет веб-сервис, чтобы аутентифицировать и вытянуть данные.

  • Вы намереваетесь создать другие приложения с помощью тех же моделей, как инструменты управления, которые Вы упомянули.

Я надеюсь, что это помогает. На ноте стороны Вы могли бы хотеть поместить свои "общие" части в Вашу собственную платформу, которая будет включать "модели" (объекты, объекты области, безотносительно имени, которое Вы любите).

1
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

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