Сценарій транзакції (програмування)

Сценарій транзакції (англ. Transaction script) — шаблон проєктування, який пропонує реалізувати бізнес-логіку в межах однієї процедури.

Призначення[ред. | ред. код]

Більшість аплікацій містять логіку, яку можна представити у вигляді набору дій. Одні з них витягують дані, в той час, як інші складніші — проводять валідацію, обробку та зміну. Даний патерн пропонує об'єднати логіку таких дій в одну команду.

Переваги та недоліки[ред. | ред. код]

Переваги[ред. | ред. код]

  • простий в реалізації
  • виконуються принципи 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(); 	} } 

Джерела[ред. | ред. код]