Мое приложение MVC позволяет группе пользователей вставлять/редактировать записи в таблицу, и, поскольку я использую аутентификацию Windows, я получаю их имена samaccountname «бесплатно» и могу вставлять их в поле «Последнее обновление» в упомянутых записях.
Одно из самых важных (и часто используемых) представлений в моем приложении будет отображать списки из 50-100 записей на странице, но я не хочу отображать их имена samaccountnames. Мне нужны их более удобные отображаемые имена, которые я хочу получить из Active Directory.
Я видел здесь несколько сообщений, предлагающих связать AD с SQL, но для этого требуется установка компонентов на SQL-сервере, чего я бы предпочел не делать. Вместо этого я думал о создании следующего интерфейса и производного класса:
public interface IUserInformationStore
{
UserInformation FindBySamAccountName(string samAccountName)
}
public class ActiveDirectoryStore
{
HashSet<UserInformation> _cache;
public UserInformation FindBySamAccountName(string samAccountName)
{
// Look for samaccountname in _cache and if not found
// retrieve information from AD with DirectorySearcher.
// Store information in _cache and return correct user.
}
Моя проблема сейчас в том, как получить доступ к этой информации. Я думал об использовании ToSingleton от Ninject, но я подозреваю, что это может быть «процесс Singleton Per Worker». Так что, возможно, Тайник был бы лучшим местом для него. Но как лучше всего получить доступ к объекту? Статический класс со статическим свойством, которое проверяет, находится ли он уже в кеше, в противном случае инициализирует его и возвращает объект?
Или есть совершенно лучший способ решить эту проблему?