Сценарій транзакції () — шаблон проєктування, який пропонує реалізувати бізнес-логіку в межах однієї процедури.
Призначення Більшість аплікацій містять логіку, яку можна представити у вигляді набору дій. Одні з них витягують дані, в той час, як інші складніші — проводять валідацію, обробку та зміну. Даний патерн пропонує об'єднати логіку таких дій в одну команду.
Переваги та недоліки
Переваги простий в реалізації виконуються принципи ACID
Недоліки відсутній архітектурний поділ важко розширювати функціонал можливе дублювання коду
Реалізація Нехай необхідно створити користувача та відправити адміністратору сповіщення. Ці дії можна зробити незалежно, в різних транзакціях. В той час, як даний шаблон пропонує реалізувати всю логіку в межах однієї функції.
class UserService { public void CreateUser(string userName) { // валідація if (string.IsNullOrWhiteSpace(userName))
throw new InvalidOperationException();
// створення користувача var user = new User(userName); db.Add(user);
// створення сповіщення var notification = new Notification("New user has been created"); db.Add(notification);
// здійснення транзакції db.Commit();
Джерела Transaction Script Transaction Script Pattern TheBusiness logic layer: Transaction Script Pattern