Вызовите класс членства asp.net из уровня контроллера или сервиса? - PullRequest
5 голосов
/ 25 августа 2009

Должен ли я получить доступ к классу членства asp.net из контроллера и передать результаты на уровень обслуживания или получить к нему доступ непосредственно из уровня обслуживания?

Я разорван, потому что, с одной стороны, это похоже на бизнес-логику, которая должна обрабатываться на уровне сервиса, но я не хочу связывать слой сервиса с пространством имен в Интернете, поскольку это может стать приложением Windows в будущем .

Ответы [ 3 ]

6 голосов
/ 25 августа 2009

ответ, используйте IoC для создания интерфейса членства, который использует уровень обслуживания. реализация сайта может использовать пространство имен сети. И приложение для Windows может иметь другую реализацию. и поскольку вы можете внедрить эту зависимость, ваш уровень обслуживания не должен изменяться: -)

3 голосов
/ 25 августа 2009

Членство в ASP.NET зависит от Web, поэтому доступ к нему должен быть получен в контроллере. MHO заключается в том, что сервисный уровень не должен быть жестко связан с сетью. Так что для добавления / удаления пользователей, сделать это через контроллер.

OTOH, на уровне сервиса вы можете прочитать Thread.CurrentPrincipal.Identity, который не является специфичным для сети, но оказывается полностью совместимым с членством ASP.NET Поэтому, если вам нужен только текущий пользователь, вы можете сделать это, не нарушая разделения интересов.

0 голосов
/ 25 августа 2009

Действительно ли проблема в использовании System.Web? Это ничем не отличается от привязки к System.Configuration или System.IO. Любое приложение может использовать его, независимо от того, находится ли оно в автономном режиме или нет.

Я обычно привязываю свои веб-приложения к сборкам, которые более классически, хотя и являются сборками "winforms", чтобы получить доступ к полезным объектам коллекции и т.п.

...