Мое приложение MVC позволяет подмножеству пользователей вставлять / редактировать записи в таблице, и, поскольку я использую аутентификацию Windows, я получаю их samaccountnames «бесплатно» и могу вставить их в поле «Последнее обновление по» вупомянутые записи.
Одно из самых важных (и часто используемых) представлений в моем приложении будет отображать списки по 50-100 записей на страницу, но я не хочу отображать их имена samaccount.Мне нужны более удобные для пользователя отображаемые имена, которые я хочу получить из 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».Так что, возможно, кэш будет лучшим местом для этого.Но как лучше всего получить доступ к объекту?Статический класс со статическим свойством, который проверяет, находится ли он уже в Cache, инициализирует его иначе и возвращает объект?
Или есть более лучший способ решения этой проблемы?