XA ( englanniksi laajennetusta arkkitehtuurista [1] , X / Open XA ) on hajautettujen tapahtumien spesifikaatio , joka määrittelee periaatteet tapahtumaresurssien yhteiselle osallistumiselle tapahtumaan hajautetussa laskentaympäristössä . Se kuvattiin ensimmäisen kerran vuonna 1992, ja se on tosiasiallinen toteutusstandardi hajautetuissa tapahtumien hallintajärjestelmissä ja relaatiotietokantoissa .
XA-tapahtuma on hajautettu tapahtuma, joka suoritetaan XA-spesifikaatioiden mukaisen järjestelmän ohjauksessa.
1990-luvun alkuun mennessä hajautetuille tapahtumille oli olemassa useita erilaisia standardeja, esimerkiksi TPF, jota käytettiin Yhdysvaltain siviili-ilmailussa ja 2010-luvulla [2] CISC, VMS ja muut. Yhdestä niistä, IBM:n SNA:sta, oli siihen mennessä tullut de facto standardi. Tämän standardin ja LU6.2-standardin vaikutuksesta ISO on luonut useita uusia standardeja [3] :
Näiden standardien suurin haittapuoli oli API :n puute , joten ne määrittelivät, kuinka tapahtumien hallintaohjelmien tulisi olla vuorovaikutuksessa, mutta eivät antaneet sääntöjä kannettavien sovellusten kirjoittamiselle.
X/Open ratkaisi tämän ongelman tarjoamalla hajautetun tapahtumamallin ja samalla määrittämällä proseduurirajapinnan transaktion osallistujien vuorovaikutukselle (CLI), XA-määrityksen.
XA käyttää hajautettua tapahtumamallia, joka koostuu kolmesta osasta:
Vaikka mallissa on kolme komponenttia, XA-spesifikaatio määrittelee vain resurssien ja tapahtumien johtajien välisen vuorovaikutuksen.
XA-spesifikaatio jakaa tapahtumat paikallisiin ja globaaleihin. Paikalliset tapahtumat ovat yksinkertaisin tapahtumatyyppi, jossa sovellusohjelma käyttää vain yhtä DBMS:ää ja määrittää, milloin tapahtuma tulee sitoa tai peruuttaa. Eli niissä TM:n rooli on osoitettu AP:lle. Globaalit (hajautetut) tapahtumat ovat monimutkaisempi tapaus, jossa päätös muutosten tekemisestä tai peruuttamisesta on koordinaattorin harteilla, sovellusohjelma määrittää vain tapahtumien rajat. Tapahtumanhallinta jakaa yhden globaalin tapahtuman useisiin paikallisesti suorittaviin haaroihin ( eng. branch ), ja onnistuneen sitoumuksen jälkeen jokaisessa haarassa se sitoo koko globaalin tapahtuman ja peruuttaa muutoin.
Lisäksi spesifikaatio tukee sisäkkäisiä tapahtumia , jotka ovat hyödyllisiä esimerkiksi kirjaamiseen .
Vuonna 1994 julkaistu XA+ -spesifikaatio määrittelee myös sovellusten kesken hajautetut tapahtumat. XA +:ssa näkyy toinen tapahtumaan osallistuja - Communication Resource Manager (CRM), joka vastaa koordinoinnista useiden hajautettujen tapahtumien hallinnoijien välillä, tässä mallissa hän vastaa tapahtuman uusista haaroista, jotka puolestaan sisältävät useita muita sivukonttoreita sekä tapahtumatunnusten luomiseen.
Vaikka XA määrittää vain API:n C-kielelle, on toteutuksia muilla ohjelmointikielillä.
Java Transaction API on XA:n toteutus J2EE -alustalle , joka julkaistiin ensimmäisen kerran vuonna 1999. .Net Frameworkissa tuki hajautetuille tapahtumille ilmestyi vain versiossa 2.0, paitsi XA, hajautetun tapahtuman .NET-toteutus tukee OLE :tä [4] .
Vuoden 1991 Object Management Group -spesifikaatio Object Transaction Service -palvelulle tuo CORBA :lle transaktiot . Koska määrittely ei erota tapahtuman osanottajia RM:ään ja TM:ään, vaan vain asiakkaaksi ja palvelimeksi, on mahdollista käyttää XA:ta ja OTS:ää yhdessä asiakaspalvelinsovelluksessa. Lisäksi, jos jokin RM:istä ei tue XA:ta, mutta tukee OTS:ää, tämä paketti on ainoa mahdollinen ratkaisu hajautettujen tapahtumien ongelmaan tällaisessa ympäristössä.
XA:n ja OTS:n yhdistelmää käytetään Java EE:ssä, jossa OTS:n kääre on Java Transaction Service , ja Java Transaction API puolestaan erottaa JTS:n AP:stä.