È una combinazione di motivi storico / evolutivo e di forza di mercato
Mentre lavoravo in Microsoft alcuni anni fa, era chiaro che c'erano diverse offerte di dati differenti in fase di sviluppo. Ciascuna offerta era mirata a un particolare mercato o caso d'uso, ad esempio:
-
L'accesso era rivolto agli utenti desktop che si sentivano a proprio agio con i sistemi di indicizzazione delle carte che potevano creare applicazioni utilizzando i moduli e i report. SQL era un'aggiunta naturale. Tutto questo ha usato il proprio motore di database della macchina locale chiamato "JET". Alla fine il JET fu messo da parte - la parola sulla vite era che la mancanza di (affidabile) controllo del codice significava che perdevano un grosso pezzo della fonte.
-
FoxPro si rivolge agli utenti desktop che desideravano velocità rispetto ai dati relazionali.
-
SQL Server era il "grande" sistema di database lato Enterprise / Server con tutta la scala / potenza / disponibilità, ecc. di cui le imprese hanno bisogno. IIRC, MS ha concesso in licenza una versione di Sybase 6 su cui costruire MSSQL.
Nel tempo, alcuni dei contorni sono diventati sfocati - ad es. SQL Server può ora essere eseguito su un computer desktop, ma il caso d'uso è rimasto.
Quindi questo ci dà 3 "back-end" - prodotti di database prodotti da Microsoft.
Per aggiungere al mix, erano disponibili diversi livelli di API per sviluppatori per ottenere l'accesso a questi sistemi:
-
Inizialmente, non c'era molto in termini di API: hai scritto il tuo codice all'interno dell'applicazione (FoxPro / Access). VBA era un metodo.
-
Microsoft ha implementato MS ODBC per connettersi ai sistemi concorrenti in modo che Windows potesse parlare con grandi database come Oracle, Sybase, ecc. Excel era una delle app degne di nota per ottenere strumenti ODBC: estrarre i dati dal tuo grande DB manipolarlo e diagrammi / grafici dei prodotti, ecc. Molti fornitori di database hanno finito per implementare ODBC per consentire ai diversi clienti di connettersi, quindi questa strategia ha avuto successo .. in una certa misura - ODBC potrebbe essere considerato come rappresentante del minimo comune denominatore.
-
Diversi team hanno iniziato a produrre i propri modi per accedere a un motore di database come DAO (Data Access Objects) per locale e RDO (Remote Data Objects) per remoto, accessibile tramite VB, che era il prodotto di sviluppo MS più popolare al momento.
-
Uno sforzo interno per razionalizzare queste diverse API e fornire un'API di accesso al database altamente flessibile univoco ci ha dato OLEDB, ma era molto difficile entrare (molti modelli C ++).
-
Non è stato possibile utilizzare OLEDB da VB, quindi ADO è stato sviluppato utilizzando tecniche ActiveX, quindi è diventato riutilizzabile da qualsiasi cosa possa fare COM / OLE / ActiveX, ovvero Access, Excel, VB e, quindi, ASP diventato Database-enabled.
-
Quando siamo entrati nell'era .NET, ADO è stato spostato in un ambiente .NET che ha portato vari vantaggi.
-
Con l'avvento di LINQ, l'effettivo meccanismo di accesso al database è diventato meno problematico.
Caveat - Sono partito qualche tempo fa ora, quindi la mia memoria è un po 'confusa