Кто-нибудь знает хорошую практику при разработке для класса служб system.directory? - PullRequest
1 голос
/ 31 января 2011

Я пытаюсь создать доступ к данным позже, используя System.DirectoryServices.Я хотел бы использовать инфраструктуру MVC 2, и все мои представления должны быть строго типизированы.Кто-нибудь знает какой-нибудь хороший путь к этому?

Например, я начал создавать объект группы:

public class Group
{
    public string DistinguishedName { get; set; }
    public string GroupName { get; set; }
}

И абстрактный интерфейс:

public interface IGroupRepository
{
    List<Group> Groups { get; }
}

Я запутался в разработке GroupRepository с использованием system.directoryСервисы.Соединиться с базой данных SQL легко, везде есть примеры, но я не смог найти ни одного, использующего сервисы System.directory в сочетании с классом, использующим MVC.Кто-нибудь пытался сделать что-то подобное?Любой великий будет

1 Ответ

2 голосов
/ 01 февраля 2011

Если вы работаете в .NET 3.5 (и если вы используете MVC 2, у вас хорошие шансы), вы должны проверить новое пространство имен System.DirectoryServices.AccountManagement, которое предоставляет вам множество сильных классов и типов .NET для многихобъекты каталогов, с которыми вы имеете дело на регулярной основе - не нужно заново изобретать колесо (еще раз!).

Ознакомьтесь с этой замечательной статьей в журнале MSDN о том, как использовать этот S.DS.Пространство имен AM:

Управление принципами безопасности каталогов в .NET Framework 3.5

Обновление: по причинам, которые я не совсем понимаю, простойПодход UserPrincipal в качестве модели для представления ASP.NET MVC не работает - кажется, что ASP.NET MVC не может «найти» какие-либо свойства для этого объекта.

Так что подходдолжно быть что-то вроде этого:

  • захватить ваш UserPrincipal (или DirectoryEntry) из Active Directory
  • определить отдельный ViewModel - это просто класскоторый содержит свойства, такие как имя, фамилия и т. д.
  • вы можетелибо заполните этот класс ViewModel самостоятельно, либо вы можете получить некоторую помощь, например AutoMapper , чтобы упростить отображение из UserPrincipal (DirectoryEntry) в ViewModel
  • , а затем отобразить (или отредактировать)Класс ViewModel в стандартном представлении ASP.NET MVC
  • обрабатывает любые возможные обновления, передавая любые изменения обратно из ViewModel в «правильный» объект и сохраняя этот объект

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

...