У меня есть класс, который содержит действительные лицензии для пользователя, и каждые 15 минут он «проверяется», чтобы убедиться, что текущие лицензии действительны, и добавлять / удалять любые, которые могли измениться.
В настоящее время к этому обращаются в моем ApplicationController, от которого наследуются все остальные контроллеры в приложении, так что, когда пользователь выполняет какие-либо операции, он гарантирует, что у него есть действующие лицензии / разрешения для этого.
Модель лицензирования:
public class LicenseModel
{
public DateTime LastValidated { get; set; }
public List<License> ValidLicenses { get; set; }
public bool NeedsValidation
{
get{ return ((DateTime.Now - this.LastValidated).Minutes >= 15);}
}
//Constructor etc...
}
Процесс проверки: (происходит внутри метода Initialize () ApplicationController)
LicenseModel licenseInformation = new LicenseModel();
if (Session["License"] != null)
{
licenseInformation = Session["License"] as LicenseModel;
if (licenseInformation.NeedsValidation)
licenseInformation.ValidLicenses = Service.GetLicenses();
licenseInformation.LastValidated = DateTime.Now;
Session["License"] = licenseInformation;
}
else
{
licenseInformation = new LicenseModel(Service.GetLicenses());
Session["License"] = licenseInformation;
}
Резюме:
Как вы можете видеть, этот процесс в настоящее время использует Session для хранения LicenseModel, однако мне было интересно, может ли быть проще / эффективнее использовать Cache для хранения этого. (или, возможно, OutputCache?) и как мне его реализовать.