Уровень служб должен иметь доступ к HttpContext?

Необходимо использовать завершенный unicode:

Как

.breadcrumbs a:before {
    content: '\0000a0';
}

[еще 114] информация о: http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/

13
задан Kurt Schindler 22 July 2009 в 14:28
поделиться

5 ответов

Абсолютно нет. Мое мышление при разработке подобных вещей выглядит следующим образом: я предполагаю, что мне нужно написать приложение для Windows вместе с веб-приложением и попытаться минимизировать зависимость от конкретных веб-вещей. Передача HttpContext напрямую увеличит связь вашего уровня сервиса с уровнем веб-интерфейса, что не идеально.

Я предполагаю, что мне нужно написать приложение для Windows вместе с веб-приложением и попытаться минимизировать зависимость от конкретных веб-материалов. Передача HttpContext напрямую увеличит связь вашего уровня сервиса со слоем веб-интерфейса, что не идеально.

Я предполагаю, что мне нужно написать приложение для Windows вместе с веб-приложением и попытаться минимизировать зависимость от конкретных веб-материалов. Передача HttpContext напрямую увеличит связь вашего уровня сервиса с уровнем веб-интерфейса, что не идеально.

19
ответ дан 1 December 2019 в 19:31
поделиться

Ответ: нет .

Уровень услуг не только не должен зависеть от текущего уровня представления, но, по моему мнению, он не должен зависеть от текущее приложение. Например, я бы не стал использовать собственный класс AppContext , поскольку JonoW предложил здесь .

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

9
ответ дан 1 December 2019 в 19:31
поделиться

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

4
ответ дан 1 December 2019 в 19:31
поделиться

Я считаю хорошей практикой создать собственный класс AppContext, который содержит мой текущий пользовательский объект (а также другие контекстные данные). Этот класс не имеет ссылок на System.Web. Любые методы службы, которые должны учитывать контекст, должны иметь параметр AppContext (например, для проверки прав безопасности или получения текущего пользователя, как в вашем случае). Заполните этот объект на веб-уровне и при необходимости оставьте его в сеансе. Таким образом, ваш уровень обслуживания ничего не знает о System.Web.

2
ответ дан 1 December 2019 в 19:31
поделиться

Нет. Это затруднит тестирование и повторное использование вашего кода.

Я обычно создаю интерфейс инфраструктуры для такого рода вещей (назовите его IAuthentication или что-то в этом роде) и выставляю для него свойство CurrentUser. Затем я бы вставил это в свой сервис через конструктор. т.е. общедоступный MyService (аутентификация IAuthentication)

Наконец, вы можете создать реализацию IAuthentication с поддержкой HttpContext (скажем, WebAuthentication).

Теперь, когда вы создаете свою службу, вы также создаете ее зависимости:

var myService = new MyService(new WebAuthentication());
var otherUsers = myService.GetAllOtherUsers();

Если вы используете с контейнером IoC уродливая зависимость может даже исчезнуть!

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

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