Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Software prezentat pe prelucrarea comenzilor vocale

calculatoare



+ Font mai mare | - Font mai mic



Software prezentat pe prelucrarea comenzilor vocale



1. Interfete in limbaj natural

Functia unei interfete este de a intermedia intre o aplicatie si utilizatorul sǎu. Utilizatorul se poate baza pe cunstiintele sale de programare sau pe informatiile oferite de interfata aplicatiei (meniuri, icoane, limbaj natural-NLI). Cele mai multe interfete in limbaj natural (natural language interface) sau interfete inteligente au fost utilizate ca interfete pentru baze de date. Un alt domeniu important de aplicare ale interfetelor bazate pe limbaj natural il reprezintǎ sistemelor expert care folosesc interfete de tip dialog.

Construirea unei interfete potrivite pentru o aplicatie necesitǎ:

O bunǎ intelegere a procesǎrii informatiei facutǎ de aplicatie;

Analizarea grupurilor de utilizatori: cunostintele lor informatice si din domeniul aplicatiei, performanta lor, tipul de comportament;

Cunostinte detaliate despre tehnicile interfetelor inteligente

O interfatǎ inteligentǎ ajutǎ utilizatorul in indeplinirea unor sarcini (extragerea de informatii din baze de date, diagnozǎ, etc.) prin furnizarea unor mesaje contextuale, inferente realizate independent de utilizator si faciliteazǎ in acest mod comunicarea intre om si calculator. Problema centralǎ a sistemelelor bazate pe limbaj natural este transformarea unei intrǎri formulate in limbaj natural, posibil ambiguǎ, intr-o formǎ neambinguǎ, internǎ, a sistemului, care poate fi utilizatǎ pentru a provoca o operatie de procesare a datelor. In functie de realizarea acestei transformǎri putem clasifica interfetele inteligente in trei categorii:

Sisteme NLI bazate pe traducerea directǎ a limbajului natural intr-un limbaj de comandǎ;

Sisteme NLI care transformǎ intrarea intr-o formǎ logicǎ intermediarǎ;

Sisteme NLI bazate pe dialog, care determinǎ ce actiuni trebuie executate dupǎ prezentarea intrǎrilor.

Pe langǎ traducerea limbajului nautral in limbaj de comandǎ, interfata trebuie sǎ determine ordinea executiei atunci cand trebuie realizate mai multe actiuni. De exemplu comanda: "Mutǎ fisierul X in noul director numit Y" cere ca sistemul sǎ creeze mai intai directorul Y si apoi sǎ mute fisierul X in acest director. In cazul bazelor de date, sistemul NLI trebuie sǎ dispunǎ de posibilitatea de legare a unei multimi de cuvinte sinonime din limbajul natural la un acelasi camp al bazei de date, si de legarea unui acelasi cuvant din limbajul natural la mai multe campuri al bazei de date ( de exemplu pentru cuvantul 'nume': nume departament, nume angajat, nume companie, etc).

Cele douǎ probleme majore cu care se confruntǎ utilizatorii bazelor de date sunt: protocolul de cautare, uneori dificil, care diferǎ de la un sistem la altul si cunostintele necesare despre structura bazei de date.

Avantajele oferite de NLI-uri trebuie sǎ includǎ flexibilitate in formularea intrebǎrilor, (utilizatorul nu trebuie sǎ invete un nou limbaj, nu sunt restrictii le formularea interogǎrilor) si independenta sistemului NLI de structurile de date (utilizatorul nu trebuie sǎ cunoascǎ protocoalele de cǎutare, diferitele mnemonici si proceduri).

Pentru a caracteriza interfetele inteligente este util sǎ studiem dialogul uman, care urmeazǎ sǎ fie reprodus ca dialog om calculator. In 1975, Grice a enuntat un grup de principii, numite "principii de cooperare", care stau la baza dialogului uman:

Principiul calitǎtii: orice participant la dialog nu face afirmatii pe cere le considerǎ false, si el previne introducerea unor concluzii false la parteneri;

Principiul cantitǎtii orice participant produce o cantitate de informatie care nu este nici mai mare si nici mai micǎ decat este necesarǎ;

Principiul relatiei: orice contributie in dialog trebuie sǎ fie relevantǎ.

Prin interfatǎ inteligentǎ intelegem o interfatǎ cu compartament comparabil cu acela al unei persoane incercand sǎ inteleagǎ si sǎ rǎspundǎ unei intrebǎri puse de o altǎ persoanǎ si respectand principiile anterioare.

Cateva caracteristici:

In dialog uman, un partener in general va intelege cateva propozitii negramaticale sau eliptice. O interfatǎ inteligentǎ se numeste "robustǎ" sau "flexibilǎ" dacǎ are aceastǎ posibilitatea de a intelege propozitii imperfecte

O interfatǎ inteligentǎ trebuie sǎ aibǎ posibilitatea sǎ aleagǎ dintre mai multe rǎspunsuri corecte pe acela care este cel mai util in dialog.

2. Algoritmi si tehnici de programare

Aplicatia se bazeazǎ pe tehnologia SAPI (Speech Application Programming Interface) de la    Microsoft. SAPI furnizeazǎ o interfatǎ de nivel inalt intre aplicatie si motorul de recunoastere vocalǎ. SAPI implementeazǎ toate detaliile de nivel scǎzut necesare pentru a controla si a gestiona operatiile in timp real ale diferitelor motoare de recunostere vocalǎ.

Douǎ tipuri diferite de motoare SAPI pot fi descrise: sistemele text-to-speech (TTS) (text vorbit) si recunoastere vocalǎ. Sistemele TTS sintetizeazǎ siruri de caractere si fisiere in semnale audio vorbite folosind voci sintetice. Recunoasterea vocalǎ converteste limbajul natual in siruri lizibile de text si fisiere.


Ca limbaje de programare sunt folosite: Visual C++ 6.0 pentru implementarea motorului de recunoastere vocalǎ si a textului vorbit si Visual Basic pentru implementarea intrefetelor cu uilizatorul. Gramaticile CFG (context free grammars-gramatici libere de context) sunt implementate cu ajutorul limbajului XML. Sunt folosite cu precǎdere functiile API pe care le pune la dispozitie sistemul de operare Windows. Tehnologiile de programare sunt cele consacrate de cǎtre Microsoft si anume: Activx si COM.

Pentru lucru cu baze de date se foloseste tehnologia ADO ( Activx Data Object).

Programul isi propune ca pe baza existentei unui utilizator, sǎ-l recunoascǎ dupǎ voce, comenzile sǎ fie date in limba romanǎ, sǎ aibǎ feed-back audio astfel incat sǎ existe dialog permanent intre utilizator si program. Programul se doreste un sistem deschis in care se pot introduce noi comenzi si noi utilizatori. In prealabil, se va initia o antrenare a motorului de recunoastere a vocii, prin cateva exercitii de citire a unui text.

Pentru ca programul sǎ rǎspundǎ corespunzǎtor comenzilor vocale, partii de antrenare trebuie sǎ i se dea o importantǎ deosebitǎ.



Detectia dispozitivelor audio (microfon, placa audio) se va face automat inainte de pornirea programului.

SAPI (Speech Application Programming Interfaces) este un software de baza care este folosit de aplicatii care au interfata vocala pentru a comunica cu motoarele de recunoastere vocala si motoarele pentru text-vorbit. SAPI include o interfata pentru programarea aplicatiilor si o interfata pentru dispozitive.

Aplicatiile bazate pe comanda vocala si motoarele de recunoastere nu comunica direct unele cu altele, ci folosind SAPI. Tehnologia SAPI controleaza un numar de aspecte ale sistemului de recunoastere, cum ar fi:

Controleaza intrarile audio, de la un microfon, fisier, ori o alta sursa audio; si converteste datele audio intr-un format valid pentru motoarele de recunoastere;

Incarca fisierele gramaticale, cele create dinamic sau cele create in memorie, URL sau fisiere; rezolva importurile de gramatici sau editarea lor;

Compileaza formatele gramaticale sub forma de fisier XML, facand conversia de la formate gramticale nestandard

Poate lucra multitasking impartinand rezultatele recunoasterii intre mai multe aplicatii;

Returneaza rezultatele si alte informatii inapoi in aplicatii si interactioneaza cu ele;

Stocheaza formatele audio si serializeaza rezultatele pentru analize viitoare;

Asigura aplicatiile pentru a nu cauza erori-fereste aplicatiile de a chema motorul de recunoastere a comenzilor vocale cu parametrii invalizi;

Motoarele de recunoastere vocala executa urmatoarele sarcini:

Folosesc gramaticele de interactiune si pentru dictare;

Executa recunoasterea;

Obtine informatii despre gramatica si despre schimbarile ei;

Genereaza sirurile de recunoastere si alte evenimente pentru a furniza informatii aplicatiei.

Pentru ca un motor de recunoastere vocala sa fie motor SAPI, trebuie sa implementeze cel putin un obiect COM. Orice instantiere a acestui obiect reprezinta o instanta a motorului de recunoastere vocala. Interfata principala trebuie sa implementeze metoda ISpSREngine. SAPI cheama motorul folosind metodele acestei interfete pentru a trece detaliile ale recunoasterii gramaticale. Deasemenea foloseste aceste metode pentru a informa motorul cand sa inceapa sau cand sa opreasca recunoasterea. SAPI insasi implementeza interfata ISPSREngineSite.Un pointer la aceasta este trecut spre motor si motorul cheama SAPI folosind interfata pentru a citi formatele audio, si returneaza rezultatele.

ISpSREngine este interfata principala care trebuie implementata, dar sunt si alte ineterfete pe care un motor poate sa le implementeze. Motorul SR poate implementa interfata IspObjectWithToken. Aceasta furnizeaza un mecanism pentru motor de a edita si a extrage informatii despre obiecte din registrii.

Mai sunt alte doua interfete pe care motorul le poate de asemenea implementa. Fiecare are nevoie de a fi implementate intr-un obiect separat COM, deoarece SAPI are nevoie pentru a le crea si pentru a le stege independent de motorul principal. Interfetele sunt:

ISpSRAlternates, care poate fi folosita pentru a genera alternative pentru rezultatele dictarii.

IspTokenUI implementeaza componenetele interfetele utilizator care pot fi initializate dintr-o aplicatie. Acestea pot fi folosite pentru a executa antrenarile utilizatorilor, de a adauga sau de a sterge cuvinte si pentru calibrarea microfonului.

Crearea unui motor de recunostere vocala se poate realiza in doua variante. Se poate creea un motor care actioneaza intr-un singur proces, adica nu comunica decat cu o singura aplicatie, sau se poate crea un motor care poate fi rezident in memorie si poate fi folosit si de alte aplicatii.

Ca parte integranta a instalarii motorului de recunoastere vocala, un obiect de tip token este un obiect care este adaugat in registrii sistemului de operare. In calculatorul pe care este instalat SAPI, se afla cheile de registrii pentru caracteristicile anumitor limbi de circulatie internationala. Motorul poate sa citeasca informatia din token, ca pasul fisierelor, sau alte setari ale utilizatorilor, spre exemplu daca exista mai multe limbi in care se face recunoasterea sau mai multi utilizatori care folosesc acel calculator. Aceste caracteristici sunt preluate de functia SetRecoProfile care da motorului un pointer la obiectul token. Antrenarea motorului de recunoastere se face in Control Panel, prin setarea Train Profile.Aceste antrenari sunt salvate pe disc si pot fi accesate de catre motor cu ajutorul acestor token.

Recunoasterea comenzilor se face cu ajutorul interfetei RecoContexts care implementeaza obiectul IspRecoContext. Prin aceasta interfeta se pot creea si se pot incarca gramatici si se poate activa sau dezactiva recunoasterea. SAPI informeaza motorul de fiecare recunoastere care a fost facuta. Motorul returneaza un pointer la SAPI din functia OnCreateRecoContext care este retrimis apoi la orce apelare ulterioara a interfetei RecoContext. Nu este esential pentru un motor sa tina seama de fiecare context de recunoastere decat in cazul unor apeluri particulare sau schimbarea gramaticilor.

Pentru ca recunoasterea sa se poata produca este nevoie de o gramatica a comenzilor. Fiecare aplicatie cu comenzi vocale poate sa aiba una sau mai multe obiecte IspRecoGrammar asociate cu ea. Exista cateva tipuri de gramatici:

Gramatici de comanda si control. Acestea sunt gramatici libere de context create ori din gramatici SAPI XML, ori dinamice din aplicatie, ori din alte formate gramaticale folosind obeictul SpGramCompBackend. In toate cazurile, SAPI raporteaza contextele gramaticale motorului folosind obiectul SpGramCompBackend

Gramaticile de dictare. Pentru acest caz de gramatici, motorul incarca si descarca modelul de dictare specific fiecarei limbi

Gramatici particulare;

Fiecare aplicatie poate avea o multime de gramatici. In cazul motoarelor care lucreaza cu mai multe aplicatii(multitasking), toate aceste aplicatii pot fi conectate la acel motor. Astfel, gramaticile pot fi incarcate , descarcate, modificate, activate si dezactivate independent una de alta.

Fiecare gramatica libera de context contine una sau mai multe reguli. Regulile pot fi de nivel inalt, indicand faptul ca acestea pot fi activate pentru recunoastere. Fiecare regula are un statut initial si apoi mai multe statuturi care sunt conectate prin tranzitii. Fiecare tranzitie poate avea unul din tipurile:

Tranzitie de un cuvant indicand un cuvant pentru a fi recunoscut;

Tranzitie de regula indicand o referinta la o subregula;

O tranzitie nula



Alte tranzitii speciale pentru dictari speciale

Referinta la o subregula poate fi recursiva (regulile se pot referi pe ele insele, direct sau indirect). In cadrul unei gramatici, tranzitiile pot avea proprietati semantice, desi motorul nu are in mod normal nevoie sa le recunoasca.

SAPI preia controlul total al incarcarii unei gramatici cand o aplicatie o cere. SAPI poate incarca dintr-un fisier, URL, resurse, sau din memorie, si poate de asemenea incarca formate binare sau XML. SAPI apoi instiinteaza motorul despre continutul gramaticii prin diferite metode DDI. Cele doua metode care instiinteaza motorul sunt WordNotify si RuleNotify. SAPI le apeleaza de fiecare data inainte de incepera recunoasterii, cand o gramatica este prima oara incarcata, si in timpul recunoasterii la apelul Synchronize in momentul schimbari gramaticii.

WordNotify informeaza motorul de cuvintele din gramatica. O singura apelare este facuta la adaugare sau stergere de cuvinte. SAPI tine o referinta interna la numarul de cuvinte si va fi adaugat numai daca nu exista. Fiecare cuvant este reprezentat de o structura SPWOREDNTRY:

typedef struct SPWORDENTRY

SPWORDENTRY;

Apelarea RuleNotify informeaza motorul cand o regula a fost adaugata, schimbata sau stearsa. Sunt cinci actiuni care se pot executa:

Noi reguli pot fi adaugate;

Regulile existente pot fi sterse;

Regulile pot fi activate;

Regulile pot fi dezactivate pentru recunoastere;

Regulile pot fi invalidate, ceea ce inseamna ca regula poate fi editata de aplicatie si astfel motorul are nevoie de recitire contextului regulilor

Fiecare regula este reprezentata de structura:

typedef struct SPRULEENTRY

SPRULEENTRY;

Tranzitiile reprezinta o legatura de la un statut la altul si sunt reprezentate de structura SPTRANSITIONENTRY.

Sunt trei tipuri comune de tranzitii:

Tranzitii word (SPTRANSWORD). Acestea reprezinta cuvinte singure care sunt recunoscute inainte de a se avansa la un alt statut. Pentru a se produce recunoasterea, motorul are nevoie sa tina ID tranzitiei pentru a fi folosit in metoda ParseFromTransitions.

Tranzitii de regula (SPTRANSRULE). Acestea reprezinta tranzitii in subreguli. Aceste tranzitii sunt trecute numai atunci cand pasul spre subregula a fost recunoscut.

Tranzitii epsilon (SPTRANSEPSILON). Acestea sunt nule sau tranzitii care nu pot fi traversate fara a recunoaste nimic.

Se pot introduce proprietati (cunoscute ca etichete semantice) intr-o gramatica. Aceasta asigura un inteles deosebit pentru informatii semantice pentru a fi usor incluse intr-o gramatica.

In mod implicit, motorul de recunoastere vocala nu recunoaste aceste proprietati. Tipic, un motor recunoaste vorbirea prin cuvintele din gramatica, si SAPI analizeaza si adauga informatiile despre proprietati prin apelarea metodei ParseFromTRansitionProperty. Daca o tranzitie are o proprietate , numele proprietatii sau id, si valoarea sunt returnate in SPTRANSITIONPROPERTY.

SAPI anunta motorul despre continutul gramaticilor intr-o ordine logica. Cand o gramatica este incarcata, toate cuvintele noi sunt anuntate la inceput cu apelarea lui WordNotify, si apoi toate regulile cu RuleNotify. Dupa aceea, regulile sunt activate sau dezactivate. Cand o gramatica este stearsa, toate regulile sunt strese si apoi toate cuvintele.

Toate regulile si cuvintele pentru fiecare gramatica sunt adaugate printr-o singura apelare a metodelor RuleNotify si WordNotify. Motoarele de recunoastere vocala consuma timp intern pentru fiecare compilare a gramaticilor inainte de incepe recunoasterea.

Recunoasterea este facilitata si de unele proprietati cum ar fi cea de confidenta sau ce de "greutate" a cuvintele. Acestea pot fi setate pentru ca aceste cuvinte sa fie recunoscute mai usor sau mai greu.

SAPI furnizeaza posibilitatea de a crea propriile vocabulare. Motorul de recunoastere vocala cauta aceste cuvinte si pronuntia lor si le foloseste in timpul recunoasterii.

Exista doua tipuri de vocabulare in SAPI:

Vocabular definit de utilizator. Pentru fiecare utilizator care este legat la sistemul de operare exista posibilitatea definirii unui vocabular. Initial este gol dar utilizatorul poate adauga in el, chair si programatic, sau folosind interfata de adaugare sau stergere a cuvintelor.

Vocabulare pentru aplicatii. Aplicatiile pot creea propriile cuvinte specializate. Acestea sunt doar pentru citire.

Fiecare obiect vocabular implementeaza o interfata IspLexicon. Vocabularele pot fi create individual de catre propriile obiecte token.

SAPI indica motorului de cautare sa inceapa recunoasterea prin apelarea    interfetei RecognizeStream din motorul de recunoastere vocala. Din acest punct, motorul poate citi datele, sa realizeze recunoasterea si sa trimita rezultatele si evenimentele inapoi la SAPI. Cand toate datele au fost recunoscute sau aplicatia a dezactivat recunoasterea, motorul incheie procesul.

Astfel, actiunile de baza ce au loc sunt:

SAPI apeleaza RecognizeStream din motorul de recunoastere vocala;

Motorul incepe citirea datelor si realizarea recunoasterii

Motorul cheama Synchronize si UpdateRecoPos pentru a fi informat de schimbarile de gramatica

Motorul returneaza evenimente, ipoteze si recunoasteri spre SAPI;

Recunoasterea continua atata timp cat fluxul este terminat si motorul returneaza RecognizeStream.

RecognizeStream    este apelata normal dupa ce gramatica este incarcata cu succes si activata. Motorul recunoaste regulile care sunt actvate.

Citirea formatelor audio se face cu ajutorul a doua campuri: o definitie GUID al formatului de clasa, si pentru formatele de tip WAV. Toate formatele de tip wav au GUID SPDFID_WaveFormatEx.

Formatul structurii WAVEFORMATEX are urmatoarea definitie:

typedef struct WAVEFORMATEX

WAVEFORMATEX;

Pentru a determina ce tip de format suporta motorul, SAPI apleaza GetInputAudioFormat. Prima pereche de parametrii a acestei metode indica formatul pe care il suporta motorul; motorul umple in a doua pereche de parametri ce fel de format suporta. Cand metoda isi incheie executia, RecognizeStream cheama formatul audio curent in parametrii rguidFmtID si pWavFormatEx. Acestia nu se vor schimba in timpul recunoasterii.

Citirea datelor se face cu ajutorul SAPI care returneaza datele imediat daca ele sunt disponibile, sau se blocheaza pana datele devin disponibile. Metoda de citire este Read care returneaza un cod de eroare sau raporteaza date mai putine. Pentru a vedea cate date sunt disponibile pentru citire se foloseste metoda DataAvailable. Motorul incearca sa citeasca datele cat de repede se poate, SAPI are o zona tampon de memorie limitata pentru citirea datelor audio, si de aceea daca motorul nu primeste date in apoximativ 30 de secunde fluxul se va inchide.



Informatiile despre dispozitivul audio de intrare nu sunt disponibile direct motorului de cautare. SAPI se ocupa cu aceasta si intoarce urmatorii parametrii: rguidFmtId, pWavFormatEx, pAudioObjectToken, fRealTimeAudio, fNewAudioStream

Accesul la dispozitivul se poate face cu ajutorul mixerului din Windows. Setarea lui se poate face din Speech Control unde se gaseste optiunea Microsoft Training UI.

Tratarea firelor de executie se face relastiv simplu. Daca recunoasterea nu se realizeaza SAPI apeleaza motorul intr-un singur fir. Din aceasta cauza, practic modelul este un bazat pe un singur fir de executie.

Se poate seta motorul de recunoastere vocala in starea de pauza. Cand motorul este in starea de pauza, este capabil sa citeasca date, sa observe orice schimbare a gramatici.

Cele mai importante evenimente ce pot aparea in cadrul procesului de recunoastere vocala sunt:

Pornirea sunetului. Este folosit sa indice inceperea vorbirii. Aceasta e raportata de SPEI_SOUND_START

Sfarsitul sunetului. Este folosit pentru a indica sfarsitul vorbirii si este raportata de SPEI_SOUND_END

Inceputul frazei. Este folosit in cazul este incarcata o gramatica ce este capabila sa recunoasca fraze. Este raportata de parametryul SPEI_PHRASE_START

Recunoasterea finala. Apare atunci cand recunoastrea este completa

Recunoastere falsa. Este folosit in cazul in care nu s-a putut duce la capat recunoasterea (din cauza gradului de nepotrivire, imposibilitatea de a recunoaste un pas valid etc.) Este raportata de SPRT_FALSE_RECOGNITION

Ipoteze. Apare in cazul in care recunoasterea s-a facut incompleta. Este raportata de fHypothesis

Exista cateva cerinte pentru ordinea de aparitie a acestor evenimente:

Inceperea si sfarsitul sunetului apar in pereche

Fiecare inceput de fraza are o pereche cu recunoastere finala sau falsa recunoastere

Inceputul frazei/ recunoasterea trebuie sa aiba o pozitie in cadrul flxului inceput cu start/stop sunet

Alte evenimente care mai pot aparea:

SPEI_ADAPTATION este folosit sa indice daca motorul este gata sa receptioneze mai multe date pentru adaptare

SPEI_REQUEST_UI este folosit pentru a afisa componenetele motorului

SPEI_INTERFERANCE    este folosit pentru a semnala daca apar probleme cu fluxul audio

SPEI_SR_PRIVATE este folosit pentru ca motorul sa comunice cu aplicatiile

Motorul continua sa recunoasca atata timp cat exista date valide si nu este oprit.Dupa ce raporteaza o recunoastere, cauta schimbarile survenite in gramatica si continua.

Recunoasterea este completa din urmatoarele motive:

Toate regulile active ale aplicatiei conectate la motor sunt dezactivate;

O aplicatie seteaza statul de recunoastere ca inactiv

Nici o data nu a mai ramas in flux

O eroare a aparut in fluxul de citire

Metoda Recognition creeaza un pointer la urmatoarea structura:

typedef struct SPRECORESULTINFO

SPRECORESULTINFO; realizandu-se astfel recunoasterea.

Tehnologia XML este o tehnologie relativ recenta, aparuta in plin "boom" Internet. Aparuta din necesitatea de a creea noi etichete, pornindu-se de la HTML, el s-a impus in foarte multe domenii ale informaticii. Unul dintre acesta este creearea gramaticilor libere de context (CFG). Datorita flexibilitatii deosebite a tehnologiei XML se pot construi analizatoare de text indiferent de limba, limbaj, topica, etc.

SAPI foloseste schema XML pentru a creea gramaticile de care are nevoie pentru a realiza recunoasterea vocala:

Iata cele mai importante etichete ce se pot folosi pentru a crea o gramatica libera de context:

Tehnologia pentru accesul la o baza de date folosita este ADO(ActivX Data Objects). Ea s-a impus ca o continuare fireasca a tehnologiilor DAO si RDO, combinand simplitatea si modul relativ usor de folosire a tehnologiei DAO cu viteza, puterea si controlul al RDO. Initial introdusa ca parte a Microsoft Internet Information Server 3, ADO s-a vrut bun la toate si pentru toti utilizatorii. In ce masura a realizat asta nu se poate preciza.

O schema a modului in care functioneaza ADO este prezentata mai jos:


Aceasta tehnologie s-a folosit pentru legarea la baza de date Oracle 8.05, prin intermediul furnizorului ODBC pentru Oracle.

Pentru o mai buna viteza de lucru si pentru o mai usoara gestionare a lucrului cu baza de date s-au folosit proceduri stocate pentru fiecare parte a programului.

Gestionarea conexiuni cu baza de date se realizeaza cu ajutorul obiectelor de tip connection pe care le implementeaza tehnologia ADO. Lucrul cu procedurile din baza de date se realizeaza cu ajutorul obiectelor de tip command prin care se transmit parametrii de intrare spre procedurile stocate din baza de date, si se primesc parametrii de iesire.





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1142
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved