Satura rādītājs
Rīcība ar sakritība Tīmekļa lietojumprogrammās tā ir viena no tēmām, kurai mums ir jāvelta nedaudz kvalitātes laika, jo lietojumprogrammas būtības dēļ mēs varam atrast gadījumus, kad vairākiem lietotājiem ir jāsadarbojas ar vienu un to pašu elementu.Pats par sevi ir mijiedarbība Tā nav problēma, patiesā problēma rodas, kad pēc šī elementa modificēšanas vai pieskaršanās tas ir jāsaglabā datu bāzē un pēc tam divi vai vairāki lietotāji vēlas vienlaikus veikt darbību ar vienu un to pašu elementu. mūsu loģikai ir jānosaka uzvedība, lai zinātu, kā pareizi rīkoties.
Kā mēs paskaidrojām sākumā, sakritība Tas ir tad, kad divi vai vairāki dalībnieki strādā pie mūsu lietojumprogrammas elementa, izraisot darbību pret datu bāzi.
Vienlaicīguma gadījumsProblēmas var rasties, ja izmaiņas ir pretrunīgas, piemēram: lietotājs A saglabāja vērtību, bet lietotājs B tajā laikā arī veica izmaiņas un saglabāja citu vērtību, lietotāja A acīs tā saturs netika mainīts un lietotāja acīs. lietotājam B nekas netraucēja viņam veikt izmaiņas.
Šāda veida konflikti var sabojāt mūsu lietojumprogrammas veiktspēju lietotāja acīs, tāpēc mums ir jānovērtē, vai mūsu rīcībā esošās jomas ir tā vērtas vai nav jāprogrammē vienlaicīgi.
Apskatīsim dažus vienlaicīguma veidi, šādā veidā mēs varam nedaudz vairāk saprast, kāda veida darbības mēs varam veikt mūsu lietojumprogrammās:
Pesimistiska sakritībaŠī pieeja ierosina, ka, izmantojot datu bāzi, mēs izveidosim a profilaktiska bloķēšana no izmantotā reģistra, tādējādi izvairoties no tā, ka vairāki lietotāji vienlaicīgi maina vērtību, problēmas rezultātā tīmekļa vidē nav iespējams to pilnībā izmantot, jo, tā kā nav neviena stāvokļa, mēs īsti nezinām, vai bloķēšana tika lietots vai noņemts, līdz mēs sazināmies ar serveri, radot neskaidrības un lietošanas lēnumu.
Optimistiska vēlētāju aktivitāteTā vietā šī cita pieeja veic kaut ko nedaudz saderīgāku ar tīmekli, modificējot, pirms saglabāšanas datubāzē tā pārbauda, vai dati nav mainīti no brīža, kad tika nolasīti dati, tāpēc mēs salīdzinām ierakstu vērtības un saistītu lauku, uz kura ir laika zīmogs ar datumu, laiku un sekundēm, lai iegūtu lielāku precizitāti.
ASP.NET MVC Tas neatbalsta pesimistisko pieeju, tāpēc mums ir jāsadarbojas ar optimistisko, jo mums ir jānodrošina mūsu struktūras ar datuma laukiem, lai saglabātu pēdējo reizi, kad tas tika mainīts, lai mēs varētu zināt, vai vērtība tika mainīta pēc ieraksta iegūšanas un pirms tās saglabāšanas mēs varam iegūt brīdinājumu un tādējādi izlemt, vai pārrakstīt šīs vērtības.
Apskatīsim nelielu koda piemēru, kā mēs to varētu apstiprināt:
Tad mēs pamanām, ka, veicot izmaiņas datu bāzē, mēs pārbaudām, vai lauks tika mainīts pēc lasīšanas, ja tā mēs izvirzām izņēmumu, ar to mēs varēsim veikt atbilstošas darbības, kā arī atstāsim vietu, lai varētu strādāt pie dažādiem izņēmumiem, kas var tikt radīti.
Šīs apmācības beigās mēs jau zinām nedaudz vairāk par vienlaicīgumu datu bāzēs un to, kā risināt problēmu ASP.NET MVC.