Poznáváme C# a Microsoft .NET – 54. díl – ADO. NET

Teoretický úvod do použití důležité součásti platformy .NET, kterou je ADO. NET, je cílem tohoto dílu, ve kterém se kromě toho co ADO. NET vlastně je, dozvíme i základní koncepty použití přístupu k datům v této technologii.

Co je ADO .NET ?

V mnoha typech aplikací a nejčastěji v podnikových aplikacích je potřebné přistupovat k datům uloženým v nějakém datovém zdroji, kterým často bývá relační databázový systém, ale mohou to být i jiné. Cestou jak k těmto datům přistupovat je v prostředí .NET jeho součást ,nebo jinými slovy komponenta, ADO. NET. Tato komponenta je následníkem, pro někoho známé, technologie společnosti Microsoft s názvem ADO. Oproti této verzi, která byla určena pro práci z neřízeného kódu, byla velká část architektury přístupu k datům přepracována a nyní je její hlavní využití z kódu řízeného.

Oproti staršímu ADO, je již technologie ADO. NET mimo jiné připravena na použití v odpojených aplikacích (bude upřesněno níže) a také na nasazení ve vícevrstvých aplikacích, které jsou v dnešní době následníky aplikací s architekturou klient-server. Jednou s dalších důležitých vlastností komponenty ADO .NET je, že je možné standardizovaným způsobem přistupovat k datům v různých datových zdrojích, což lze do určité míry chápat jako odpověď na technologii JDBC, která je jistě známa programátorům pro platformu Java.

Jinak také můžeme říct, že ADO .NET je soubor typů (tříd, rozhranní, výčtů…), které můžeme použít pro přístup k datům v různých datových zdrojích z aplikací pro .NET framework. Technologie ADO .NET je spojena s formátem XML o čemž se během našeho poznávání této technologie několikrát přesvědčíme. Typy spojené s komponentou ADO .NET se nacházejí ve jmenných prostorech rozšiřující jmenný prostor System.Data (System.Data.Common, System.Data.SqlClient, System.Data.Odbc …). Mimo tyto jmenné prostory do komponenty ADO .NET spadají i některé třídy ze jmenného prostoru System.Xml.

Použití různých datových zdrojů

Možnost přístupu k datům v různých datových zdrojích je v technologii ADO .NET zajištěna, tak že jsou předepsána určitá rozhraní (IDbConnection, IDbCommand, IDataReader, IDataAdapter …), jejichž konkrétní úlohy si osvětlíme v průběhu osvětlování komponenty ADO .NET. Za účelem vysvětlení podpory více druhů datových zdrojů v tuto chvíli pouze zmíním, že tato rozhraní předepisují funkčnost, kterou musí splňovat jednotliví zprostředkovatelé přístupu ke konkrétnímu datovému zdroji, pro který je zprostředkovatel implementován.

Tito zprostředkovatelé jsou oficiálně nazýváni ADO .NET data providers. Použitím přístupu pomocí rozhraní je dosaženo toho, že je možné psát takový kód, který bude fungovat pro jakýkoli datový zdroj. To znamená, že pokud se změní datový zdroj naší aplikace (např. databáze MS SQL na databázi Oracle) a naše aplikace je napsána s použitím přístupu přes zmíněná obecná rozhraní ADO .NET, chod aplikace zůstane stejný.

Základní knihovna tříd .NET frameworku obsahuje několik základních ADO .NET data providerů, které obsahují třídy implementující výše zmíněná rozhraní a to pro následující konkrétní datové zdroje:

  • Databáze Microsoft SQL Server (7.0 nebo vyšší) – jmenný prostor System.Data.SqlClient
  • ODBC datové zdroje – jmenný prostor System.Data.Odbc
  • OLE DB datové zdroje – jmenný prostor System.Data.OleDb
  • Databáze Oracle – jmenný prostor System.Data.Oracle

Připojené a odpojené aplikace

Pokud budete tvořit aplikace komunikující s nějakým datovým zdrojem, můžete použít dva scénáře pro přístup k datům a to scénář, kdy je aplikace takzvaně připojena k datovému zdroji (on-line) nebo naopak je od datového zdroje většinu času odpojena (off-line). Každý z těchto scénářů má své výhody a nevýhody a proto se hodí v různých typech situací. Komponenta ADO .NET je navržena tak, aby bylo možné ji použít v obou těchto scénářích. Následujících pár řádků bude podrobněji pojednávat o jednotlivém scénáři a obecném pohledu na jeho implementaci v rámci ADO .NET.

Připojená aplikace

Pokud se jedná o připojenou aplikaci, tak tato aplikace má vždy při manipulaci se souvisejícím datovým zdrojem aktivní připojení k tomuto zdroji. To je vhodné v případech, kdy potřebujeme přistupovat k datům, která jsou často měněna a my v naší aplikaci potřebujeme vždy aktuální verzi těchto dat. Na druhou stranu to může představovat nevýhodu v podobě zvýšené komunikace mezi aplikační vrstvou a vrstvou datovou (to znamená mezi naší aplikací a naší například databází).

V případě ADO .NET jsou tyto scénáře řešeny pomocí kombinace jednotlivých implementací rozhraní IDbConnection, IDbCommand (v případě potřeby v souvislosti s implementací rozhrani IDbParameter) a IDataReader pro konkrétní datový zdroj.

Odpojená aplikace

Novějším ,a v některých situacích také o mnoho vhodnějším, způsobem je použití odpojeného datového zdroje, díky čemuž se aplikace tohoto způsobu užívající, nazývají odpojenými aplikacemi. V tomto případě jsou data získána z datového zdroje do aplikace a po té je spojení s datovým zdrojem ukončeno. Od chvíle odpojení od datového zdroje aplikace manipuluje s obrazem získaných dat, který je uložen v paměti.

Po dokončení potřebných modifikací dat na úrovní aplikační logiky je opět vytvořeno aktivní spojení k datovému zdroji, zjištěny rozdíly mezi daty z aplikace a daty v datovém zdroji a po té jsou tyto rozdíly promítnuty do příslušného datového zdroje. Toto řešení je vhodné pro aplikace, u kterých chceme redukovat komunikaci mezi jednotlivými vrstvami aplikace (aplikační a datovou).

To se nejvíce hodí v situacích, kdy se aplikace a datový zdroj nacházejí na rozdílných počítačích a tím pádem se vyhýbáme komunikaci po síti. Samozřejmě je potřeba zvážit počet uživatelů, kteří k daným datům přistupují, aby nedocházelo k častým změnovým konfliktům.

Technologie ADO .NET má pro toto řešení výbornou podporu a to v podobě třídy DataSet, která představuje onen kýžený obraz získaných dat v paměti. Instance této třídy je naplněna daty pomocí konkrétní implementace rozhraní IDataAdapter, který využívá implementace rozhraní IDbConnection a IDbCommand.

Tímto končím jemný teoretický úvod do této, podle mě velmi zajímavé, součásti .NET frameworku a od příštího dílu se budeme již zabývat implementací konkrétních způsobů řešení. Příště to bude použití připojeného scénáře pomocí konkrétních implementací rozhraní IDataReader.

Diskuze (1) Další článek: UPDATE: Kritická bezpečnostní chyba Symantec Antiviru

Témata článku: , , , , , , , , , , , , , , , ,