Re: Дизайн слоя доступа к данным
От: Pro100Oleh Украина  
Дата: 15.02.18 17:58
Оценка: +1
Здравствуйте, scf, Вы писали:

scf>Вы за какой вариант и почему?


Если смотреть на реальные бизнес сценарии, то могу припомнить только 2:
— работает сервсис которому падать нельзя. Ему нужно перезаписать объект и его не волнует что было до этого. Если АПИ предлагает только стандартные CRUD методы, то выходит такое:
var newObj = new {};
try{
  var obj = api.Read();
  api.Update(newObj);
}
catch(NotFoundException)
{
  api.Create(newObj);
}


— есть ГУИ и пользователь хочет создать/поменять объект. Но если кто-то еще уже сделал изменения когда он несколько минут вводил свои изменения и нажал потом "Сейв" — то показать алерт и спросить — перезаписать или отклонить свои изменения.
Для того чтобы удовлетворить все потребности мы у себя исполуем такое:
class API
{
  //Create or update
  ObjectVersion Save(object obj);
  //when expectedVersion = 0 - Create if and only if obj is not exist
  //when expectedVersion > 0 - Update with concurrency check
  ObjectVersion Save(object obj, int expectedVersion);
}
Pro
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.