Zaimplementowałem optymistyczne blokowanie dla moich zasobów REST, które mają odwzorowanie 1 do 1 na tabele bazy danych, przekazując ponownie numer wersji, który był w GET z powrotem do wywołania PUT. Jeśli numer wersji zmienił się w bazie danych między czasem wykonania GET i PUT, wystąpił wyjątek optymalizacji blokady. Całkiem prosta konstrukcja.W jaki sposób zaimplementować gruboziarnistą optymistyczną blokadę w REST?
Teraz, jak zrobić to samo dla złożonych zasobów REST, które mapują do wielu tabel bazy danych? Nie chciałbym przekazywać wielu pól wersji (jedna dla każdej tabeli danych, która odnosi się do zasobu złożonego). Uproszczonym przykładem złożonego zasobu byłoby/FooBar gdzie/Foo i/Bar są zasobami nie będącymi złożonymi.
Szukam zasadniczo na przykład implementacja reszta wzór Gruba Grained Locking Fowlera: http://martinfowler.com/eaaCatalog/coarseGrainedLock.html
W usłudze REST można po prostu zebrać wersje i umieścić je w mapie, która jest kluczowana przez unikalnie wygenerowany identyfikator reprezentujący wersję? Następnie wyślij to do klienta i poproś, aby odesłał go do ciebie po edycji? Następnie możesz użyć tego jednego identyfikatora, aby uzyskać wersje dla wykresu podmiotów. –