ASP.NET MVC - Databas samtidighet

Innehållsförteckning
Hanteringen av samstämmighet I webbapplikationer är det ett av de ämnen som vi måste ägna lite kvalitetstid åt, eftersom vi på grund av applikationens natur kan hitta fall där flera användare måste interagera med samma element.
I sig är samspel Det är inte ett problem, det verkliga problemet kommer när efter att ha ändrat eller rört det här elementet är det nödvändigt att spara det i databasen och sedan två eller flera användare vill utföra en åtgärd på samma element samtidigt, det är där vår logik måste definiera ett beteende för att veta vad som är rätt sätt att hantera detta.
Som vi förklarade i början, samstämmighet Det är när två eller flera aktörer arbetar på ett element i vår applikation, vilket genererar en åtgärd mot databasen.
SamtidsfallProblem kan uppstå när ändringarna är motstridiga, till exempel: användare A sparade ett värde, men användare B ändrade också vid den tiden och sparade ett annat värde, i användarens A ögon dess innehåll ändrades inte och i ögonen på användare B fanns det inget som hindrade honom från att göra sin förändring.
Dessa typer av konflikter kan försämra prestandan för vår applikation i användarens ögon, så vi måste utvärdera om de områden som vi har kommer att vara värda det eller inte att programmera för samtidigheten.
Låt oss se några typer av samtidighet, på detta sätt kan vi förstå lite mer vilken typ av åtgärder vi kan utföra i våra applikationer:
Pessimistisk samtidighetDetta tillvägagångssätt föreslår att när vi använder databasen gör vi en förebyggande blockering i registret som används, med detta undviker vi att flera användare ändrar värdet samtidigt, problemet resulterar i att det i webbmiljön inte är möjligt att använda det ordentligt, eftersom det inte finns några tillstånd vet vi inte riktigt om låset tillämpades eller togs bort tills vi kommunicerade med servern, vilket genererade förvirring och långsamhet vid användning.
Optimistiskt valdeltagandeDetta andra tillvägagångssätt gör istället något mer kompatibelt med webben, när det ändras, innan det sparas i databasen verifierar det att data inte har ändrats från det ögonblick läsningen gjordes, för detta gör vi jämförelse av postvärden och ett tillhörande fält som har en tidsstämpel med datum, tid och sekunder för större noggrannhet.
ASP.NET MVC Det stöder inte det pessimistiska tillvägagångssättet, så vi måste arbeta med det optimistiska. För detta måste vi förse våra strukturer med datumfält för att spara den senaste gången det ändrades, så vi kan veta om värdet ändrades efter att vi fick posten och innan vi sparar det kan vi med detta få en varning och på så sätt bestämma om dessa värden ska skrivas över eller inte.
Låt oss se ett litet kodexempel på hur vi kan validera detta:

Vi märker då att vi validerar när vi gör en ändring i databasen om fältet ändrades efter att vi läste, om så är fallet vi lyfter ett undantag, med detta kommer vi att kunna vidta motsvarande åtgärder, vi lämnar också utrymme för att kunna arbeta med de olika undantagen som kan genereras.
I slutet av denna handledning vet vi redan lite mer om samtidighet i databaser och hur man arbetar med problemet ASP.NET MVC.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave