Збереження стану сеансу в базі даних (шаблон проєктування)
Збереження стану сеансу в базі даних (англ. Server Session State) — шаблон проєктування, який пропонує зберігати стан сеансу в базі даних. ОписПри реалізації клієнт-серверної архітектури необхідно реалізувати передачу даних між обома сторонами. При цьому варто зберігати інформацію про сеанс. Коли клієнт відправляє запит до сервера, перше, що робить сервер — це звертається до бази даних, щоб отримати із неї данні необхідні для запиту. Після чого він (сервер) виконує всю необхідну роботу та записує дані назад у сховище. Якщо дані ідентифікують сеанс та вимагають довготривалого збереження, але короткотривалої взаємодії рішенням буде зберігати сеанс в базі даних та кешувати його на момент роботи. Таким чином, даний шаблон пропонує зберігати стан сеансу в базі даних. Переваги та недолікиПереваги
Недоліки
РеалізаціяТиповим прикладом буде відновлення даних користувача при автентифікації. class Auth
{
public User { get; private set; }
public void Login(int id)
{
var userRecord = db.GetUser();
this.User = new User(userRecord.Name, userRecord.Email);
}
}
Якщо сеанс складається із декількох кроків та необхідно не втрачати даних, то в міру заповнення їх можна зберігати у сховищі. Так, наприклад, при реалізації опитувальника необхідно, щоб користувач не втратив заповнені дані. Тоді при заповнені кожного поля, можна запам'ятовувати їх у сховищу, а при повторному відкриті сторінки відновлювати увесь стан. class SurveyService
{
public void SaveAnswer(int answerId, string answerValue)
{
db.SurveyAnswers.Add(answerId, answerValue);
}
public IReadOnlyCollection<SurveyAnswer> OpenSurvey(int surveyId)
{
return db.SurveyAnswers.Where(s => s.SurveyId == surveyId);
}
}
Див. такожДжерела
|