2011. október 7., péntek

A DataSet védőbeszéde

Mostanság egy olyan alkalmazáson dolgozom, ami a egy relációs adatbázisból publikál adatokat webszolgáltatásokon keresztül. Eddig semmi izgalmas nincs a dologban, sőt kifejezetten unalmas és hétköznapi a történet. Ami elgondolkodásra késztetett a dologban az az volt, hogy megszámoltam, hányféle modellben is kezeljük tulajdonképp az azokat a fránya adatokat? Relációs adatmodell az adatbázisban, objektum adatmodell az alkalmazás szintjén, és végül, a WCF legmélyén ott találjuk az XML-t is, ami nem adatmodell, de azért számoljuk csak ide, később kiderül miért.
Mikor egy alkalmazásban különféle komponenseket dobálunk egymásra, szembe kell néznünk azzal, hogy ezeknek gyakran nem az unióját, hanem a metszetét tudjuk csak kiaknázni: hiába lenne képes az alkalmazás rétegünk OO kódja csodálatos leszármazási gráfokat létrehozni, ezt nagyon nehéz relációs modellben ábrázolni. Létezik rá ugyan megoldás, de a való életben általában inkább eltekintünk az örökléstől, amúgy sem tartozik a kedvenc eszközeink közé ("Favor containment over inheritance"). Hasonlóan bánunk el az xml, a relációs és a objektum orientált modell minden "kilógó részével", amire nincs életbevágóan szükségünk. Ami a végére marad, az kicsit mindegyikre hasonlít, de igazából egyik sem. Kígyófejű oroszlán. Polipkarú kutya.
Ezzel kapcsolatos problémáinkat a felére tudjuk redukálni, ha nem próbálunk meg a különféle modellek között navigálni, hanem magunkhoz öleljük valamelyik modellt, és azt vezetjük végig az alkalmazáson. Vietnénk végig az xml-t, hiszen léteznek már xml adatbázisok, a Linq to xml pedig viszonylag fájdalommentes lehetőség a xml adatok kezelésére. Megtehetnénk, hogy az objektumainkat  próbáljuk adatbázisba menteni (db4o és társai), de azért ez sem valami jól kitaposott ösvény.
Amire viszont komoly támogatást kapunk a Visual Studio szinte mindegyik életképes verziójában, az a relációs modell objektum szinten terelése. Típusos DataSet-nek hívják a burkoló osztályt, és jó néhány éve velünk van már, csak néha hajlamosak vagyunk róla megfeledkezni, mert olyan sok érdekesség jelent meg mostanában: LinQ To SQL. Entity Framework. A jó öreg DataSet pedig feledésbe merül, pedig a .NET alkalmazások jelentős része remekül megülne a tetején.

Nincsenek megjegyzések:

Megjegyzés küldése