Asp - înțelegere a tranzacțiilor
În aplicații comerciale, de multe ori au nevoie pentru a rula script-uri și componente în cadrul tranzacției. O tranzacție este setul de operații efectuate de server într-o singură operație, care este fie executate cu succes ca un întreg sau nu este executat (de exemplu, crearea de comenzi, verifica inventarul și facturare). Dacă creați un script care va fi executat pe un server într-o tranzacție, eroarea este în nici o parte din ea va anula întreaga tranzacție.
ASP mediu de procesare a tranzacțiilor bazate pe componenta de servicii de tranzacție, care este un sistem de procesare a tranzacțiilor pentru dezvoltarea și implementarea de înaltă performanță, aplicații server scalabile și fiabile în cadrul întreprinderii, internet și intranet corporative, precum și de a le controla. Acest mediu determină modelul de programare de tranzacție pentru aplicațiile bazate pe componente distribuite. Este, de asemenea, un mijloc pentru implementarea și gestionarea acestor aplicații.
Serverul web are built-in caracteristici care vă permit să creați scenarii de tranzacție orientate. La instalarea componentelor de servicii pot fi create pachete de componente care vor fi executate într-o tranzacție.
O tranzacție este o operație care poate fi realizată cu succes sau nu numai integral. actualizarea bazei de date de încredere poate fi realizată numai pe baza de procesare a tranzacțiilor. Atunci când face un număr mare de modificări legate între ele în baza de date sau actualizarea multiple baze de date trebuie să fie garantată acuratețea tuturor operațiunilor de schimbare a datelor. Eroarea, în orice stadiu de schimbare ar trebui să conducă la restabilirea stării inițiale a tabelelor bazei de date.
Auto-realizare a unui astfel de mecanism ar avea nevoie de scripting și componente, care ar monitoriza schimbările necesare și de a restabili datele originale în cazul în care apare o eroare. Cu toate acestea, componentele serviciilor de aplicare pot simplifica foarte mult această sarcină. Pur și simplu anunța executarea de script-uri și a componentelor din cadrul tranzacțiilor. După aceea, acestea vor fi coordonate componente servicii de prelucrare automată. Conceptul de procesare a tranzacțiilor se aplică numai pentru a lucra cu baze de date. Component Services nu acceptă restaurarea statului original, după o schimbare în sistemul de fișiere sau alte resurse cu care mecanismul de tranzacție nu funcționează. Aplicațiile pot funcționa doar cu baze de date care sunt acceptate de Component Services. În momentul de față, este posibil să se lucreze cu baze de date SQL Server, precum și alte baze de date în care tranzacția este pus în aplicare protocolul de sprijin XA (dezvoltat de X / Open consorțiu). În viitor, componenta de serviciu va fi capabil de a sprijini alte sisteme de baze de date.
Cu ajutorul metodelor Server.Transfer și Server.Execute în operațiuni pot participa mai multe pagini ASP. După apelarea scenarii în care există o directivă @TRANSACTION valoarea «Obligatoriu», prin metoda Server.Transfer sau Server.Execute. Se continuă cu tranzacția, care rulează un fișier numit «asp» (în cazul în care acesta din urmă este implicată în tranzacție). Dacă «asp» fișier în tranzacție nu au fost încă participat, atunci când aceasta se numește o nouă tranzacție va fi creat automat.
Următorul exemplu arată o tranzacție de start scenariu.
Cu toate acestea, în următorul scenariu, există un apel al unui alt scenariu și tranzacția de declanșare.
Efectul combinat al ambelor este script-uri doar o singură tranzacție vor fi executate. Pentru mai multe informații despre crearea de scripturi cu echipe Server.Transfer și Server.Execute, consultați Trimiterea unui conținut către un browser Web.
Pentru mai multe informații despre valoarea argumentului dat în certificatul Directivei @TRANSACTION.
Directiva @TRANSACTION trebuie să fie prima linie de pe pagină. Dacă nu este, există o condiție de eroare. Această directivă ar trebui să fie, de asemenea, adăugate la fiecare participant la pagina de tranzacție. Finalizarea tranzacției curente are loc simultan cu sfârșitul script-ul.
În cazul în care tranzacția eșuează, componentele de serviciu restabilește starea înainte de începerea tuturor modificărilor la toate resursele cu suport de tranzacție. În prezent, suport complet tranzacție este oferit doar la serverele de baze de date ca manipularea în siguranță a acestor date trebuie să se acorde o importanță deosebită în dezvoltarea de aplicații pentru organizații. Componenta Servicii nu are suport de recuperare de la modificările aduse sistemului de fișiere de pe hard disk, variabilele de aplicație și o sesiune de ASP sau familii. Cu toate acestea, după cum va fi arătat mai jos, există posibilitatea de a crea script-uri care vor utiliza mecanismul tranzacțional pentru a rezolva problemele de mai sus. Astfel, este posibil să se dezvolte un scenariu în care tranzacția va fi finalizată sau întrerupte ca urmare a unor erori de operare (de exemplu, scrie date într-un fișier) cu succes.
Observarea îndeplinirea tranzacției, componenta de serviciu pentru a determina rezultatul executării sale - un succes sau nu a reușit. Script-ul poate fi declarat în mod explicit cancelability ObjectContext.SetAbort tranzacție prin procedura de apel. De exemplu, o astfel de finalizare operație este posibilă atunci când o componentă de eroare care rezultă din tulburări de date financiare reguli de procesare (de exemplu, soldul negativ al contului) sau atunci când o eroare în operațiunile care nu au legătură cu tranzacția (de exemplu, o citire sau scrie într-un fișier). Tranzacția încheiată, de asemenea, în mod forțat, dacă timpul de așteptare pentru pagina expiră înainte de sfârșitul normală a tranzacției.
Rezultatul tranzacției nu poate fi determinată de scenariu. Acest obiectiv este atins prin intermediul unor evenimente care pot fi provocate în condiții normale sau tranzacție forțată se finalizează. Luați în considerare un exemplu scenariu în care operațiunea se efectuează fonduri creditate în contul bancar. Să presupunem că, în funcție de starea tranzacției utilizatorul trebuie să se întoarcă la o pagină Web diferit. Acest lucru se poate realiza folosind evenimente OnTransactionCommit și OnTransactionAbort.
Pentru a participa la o componentă de tranzacție trebuie să fie înregistrate la COM + și configurat ca necesitând procesare a tranzacțiilor. Astfel, în scopul de a apela scenarii de prelucrare a componentelor respective pentru actualizarea bazei de date de inventar și de plată ambele componente trebuie să fie efectuate într-un context de tranzacție. În cazul unei erori care desfășoară oricare dintre aceste componente furnizează servicii pentru a restabili starea inițială a bazei de date și anularea întregii ordini. Pentru componentele individuale, de exemplu Ad Rotator, tranzacțiile nu sunt necesare.
Înregistrează-te și configurarea componentelor cu suport de tranzacție folosind Managerul de Component Services. Componentele trebuie să fie înregistrate în aplicația COM +. Cu toate acestea, nu adăugați componente la interior pentru aplicații COM + IIS, în acest scop, trebuie să creați propria aplicație COM +. Ca regulă, toate componentele personalizate sunt adăpostite într-o singură bibliotecă de aplicații. Componentele aplicației Biblioteca pot fi utilizate în diverse aplicații și ASP efectuate în procesele lor se execută.
Componente cu suport de tranzacții, și pot fi înregistrate în aplicația server - aplicație COM +, care se realizează întotdeauna ca un proces separat pe server. aplicatii server cu componente care susțin tranzacțiile sunt utilizate pentru a asigura securitatea, accesul bazat pe roluri la componentele sau aplicațiile care rulează pe computerele de la distanță.
Lucrul cu Component Services necesită instalarea componentelor de service.
În general, nu este nevoie pentru a stoca obiecte care sunt create din COM-component în cerere sau o sesiune ASP obiecte. Acțiune obiect COM se încheie automat după finalizarea tranzacției. Deoarece obiectele de sesiune și de aplicare concepute pentru instanțe, care pot fi utilizate de mai multe pagini ASP, acestea nu trebuie să conțină obiecte fiind eliberate la sfârșitul tranzacției.
script ASP este o rădăcină sau la începutul tranzacției declarate. Orice obiect al COM, folosit pe o pagină ASP tranzacțional, este considerată parte a tranzacției. După terminarea operației pe pagina utilizată de obiecte COM sunt dezactivate; Acest lucru este valabil și pentru aceia dintre ei care au fost stocate în obiectul Session sau aplicație. Toate încercările ulterioare de a apela un obiect al cărui domeniu de aplicare este limitat la sesiunea sau aplicarea, pe de altă tranzacție pagina de sprijin vor fi sortite eșecului.
La actualizarea bazei de date de pe un server de la distanță poate întârzia performanța și tranzacția de terminare chiar forțată asociată cu întârzieri și erori în rețea. Deoarece tranzacția trebuie să fie efectuată ca un singur proces, cererile vor fi suspendate până la serverul de la distanță raportează succesul sau închidere forțată. O tranzacție poate fi de asemenea, obligat să se încheie din cauza incapacității de a trimite date pentru a actualiza baza de date.
Pentru acele actualizări care trebuie să fie efectuate în același timp, este recomandabil să se anuleze sau să amâne tranzacția, atâta timp cât nu există posibilitatea de a efectua toate componentele sale. De exemplu, o cerere pentru un bilet, în același timp, trebuie să completeze tranzacția debitării contului bancar al clientului și creditate în contul băncii companiei aeriene. În cazul în care actualizarea are loc în contextul unei tranzacții, dar poate fi efectuată în ultimă instanță, clientul nu poate aștepta pentru finalizarea acestui proces. În exemplul unei tranzacții bilet de comandă puteți trimite, de asemenea, o cerere specială la aprovizionarea cu alimente sau să actualizeze informațiile privind gama. Aceste operațiuni trebuie efectuate, dar urgența este scăzut.
Includeți unul sau mai multe actualizări pentru a trimite la un server de la distanță tranzacții de mesaje a activa serviciul Message Queuing. Utilizarea lor garantează livrarea de actualizări la serverul de la distanță, chiar și în cazurile în care serverul sau rețeaua este temporar indisponibilă. După mesajul de cerere este primit la finalizarea cu succes a acestei operațiuni, o tranzacție poate fi continuată.