Skip Navigation Links.
Skip Navigation Links.

.net student

microsoft

Vyhledávání v obsahu portálu


Přihlášení uživatele

Přihlášení uživatele

Členové:
  • Poslední nový uživatel Poslední: yaris
  • Nový dnes Dnes nových 6
  • Nový včera Včera nových: 11
  • Počet uživatelů: Celkem: 5292
Lidé online:
  • Návštěvníci: Návštěvníků: 29
  • Registrovaných Členů: 0
  • Celkem Celkem: 29
Mapa Stranek

.NET a Firebird Embedded

Každý to zná. Databáze jsou velký pomocník. Transakce vyřeší mnoho problémů a constrainty zase udrží data resp. uživatele v těch správných mezích. Jenže když člověk píše jednoúčelovou aplikaci, která má být „dej na flashku a používej, jak chceš“ je s databázemi trochu problém.

Každý to zná. Databáze jsou velký pomocník. Transakce vyřeší mnoho problémů a constrainty zase udrží data resp. uživatele v těch správných mezích. Jenže když člověk píše jednoúčelovou aplikaci, která má být „dej na flashku a používej, jak chceš“ je s databázemi trochu problém. Můžete mít nainstalován server kdesi v internetu a na něm mít databáze – jenže musíte obhospodařovat server jako takový, databáze na něm; no prostě moc práce, nehledě na to, že když uživatel vaší aplikace bude bez připojení k internetu, moc toho neudělá (ano je to řešitelné, ale …). Na druhou stranu můžete jednoduchou, nejlépe bezobslužnou, instalaci serveru přihodit k aplikaci – nicméně uživatel musí mít práva instalovat software, aplikaci nemůže lehce přenášet a nemůže ji používat bez problémů ani na dvou místech.

Ačkoli nainstalovaný server přináší mnoho výhod od výkonu přes jednotnou politiku zálohování a bezpečnosti až po možnost práce mnoha uživatelů společně, embedded databáze stále nevymřely. Na internetu lze nalézt mnoho implementací, s různými vlastnostmi a s různým stupněm kvality. My se dnes podíváme na jednu z nich – Firebird Embedded. Proč zrovna Firebird? Předně Firebird Embedded existuje jak ve formě serveru, tak i jako embedded. A přechod mezi nimi není vůbec obtížný. Změníte jen jeden parametr v connection stringu a je hotovo. Nemusíte ani překompilovávat aplikaci. Vše ostatní funguje stejně. Embedded verze umí vše co server, nejde tedy o nějaký degradovaný extrakt. Kdo se chce dozvědět více o Firebirdu obecně, může využít odkazů pod článkem [1], [2].

Co všechno tedy budeme potřebovat? Samozřejmě samotný Firebird Embedded. Ke stažení na http://www.firebirdsql.org/index.php?op=files&id=engine, aktuální verze (v době psaní článku) je 2.0.3. Protože se pohybujeme na .NET palubě, bude to chtít i nějaký provider. ODBC aspol. rovnou zamítneme a raději si stáhneme nativní provider. Firebird ADO.NET Data Provider je dispozici pro .NET Framework 1.1, 2.0, Compact Framework 2.0, Mono 1.1.18+, vše „roste“ na http://www.firebirdsql.org/index.php?op=files&id=netprovider. Existuje i DDEX provider pro Visual Studio, nicméně jeho použití není předmětem tohoto článku. Pro zájemce doporučuji článek [3] event. [4].

ADO.NET provider je jen jedno assembly, které stačí přidat k projektu a začít využívat odpovídající namespaces. Vlastní embedded server je několik souborů, které stačí přihodit k distribuci aplikace. Nezbytně budete potřebovat fbembed.dll, icudt30.dll, icuin30.dll, icuuc30.dll. Vhodné je přidat i intl\fbintl.conf, intl\fbintl.dll, pro podporu všech znakových sad. Na některých systémech resp. konfiguracích nemusí být k dispozici knihovny msvcp71.dll a msvcr71.dll, tyto najdete také v balíku a v případě nutnosti je distribuujte společně s aplikací. Strukturu adresářů je třeba zachovat tak jako v archivu. Obecně je třeba fbembed.dll umístit na místo, kde systém implicitně hledá DLL knihovny. Pokud vám toto nevyhovuje, je možné v provideru specifikovat, odkud má být knihovna načítána.

Jakmile máme vše připraveno, můžeme se pustit do tvorby naší první aplikace s databází „zapečené“ přímo s aplikací. Předpokládám, že máte minimální zkušenosti s ADO.NET a nebudu se tedy zabývat detaily. Nareferencujte do projektu FirebirdSql.Data.FirebirdClient assembly a přidejte stejnojmenný namespace. V této chvíli už vám nebrání nic vytvářet si spojení a příkazy jak je libo. Jako jednoduchý příklad je možné použít:

   1:  using (FbConnection conn = new FbConnection(@"initial catalog=C:\NejakaDatabaze.fdb;user id=SYSDBA;password=masterkey;ServerType=1;ClientLibrary=C:\Aplikace\fbembed.dll"))
   2:  {
   3:      conn.Open();
   4:      using (FbCommand cmd = conn.CreateCommand())
   5:      {
   6:          cmd.CommandText = "select id, neco from tabulka";
   7:          using (FbDataReader reader = cmd.ExecuteReader())
   8:          {
   9:              while (reader.Read())
  10:              {
  11:                  Console.WriteLine("ID: {0} \t Name: {1}", reader[0], reader[1]);
  12:              }
  13:          }
  14:      }
  15:  }

 

Pozorného čtenáře jistě napadlo, jak se můžeme připojit k DB, když ještě žádnou nemáme. Inu řešení je velmi jednoduché. Objekt FbConnection má statickou metodu CreateDatabase. Vytvoření DB již také není problém.

Doposud jsme se zabývali tak trochu mimoděk aplikacemi v klasickém – desktopovém – pojetí. Nicméně ani ASP.NET není s Firebirdem Embedded problém. Asi nikoho nepřekvapí, že vlastní .NET kód zůstává stejný. Nemění se vlastně vůbec nic. Jediné co je třeba zajistit je, aby ASP.NET aplikace mělo právo přistoupit k fbembed.dll. Nic magického. A přidat si lehce databázi k ASP.NET aplikaci není zas tak špatná výzva, že?

Abychom ale neskončili tak rychle, určitě vás napadalo, jaké má FB Embedded neřesti a problémy, neboť všude je nějaký háček. V zásadě nepřijde žádný podraz. Fungují transakce, fungují cizí klíče, fungují uložené procedury. Stejně jako na serveru. Prostě vše co od databáze můžete potřebovat. Avšak knihovna fbembed.dll není aktuálně k dispozici v 64-bit verzi. Znamená to, že musíte aplikaci označit – ve vlastnostech projektu – jako 32-bit (x86), jinak se totiž nepovede knihovnu zavést. Další problém je exkluzivní zamykání databázového souboru. U běžných desktopových aplikací to tolik nevadí, ale u ASP.NET může. Je tedy nutné, v případě ASP.NET, zajistit, aby přístup k souboru byl pouze z jednoho procesu. A nakonec poslední; je třeba přidat uživatelům právo „Create Global Objects“ (standardně jen Administrators) od WinXP SP2 a vyšší.

Co potřebujete více? Nic. Tato minimalistická konfigurace se vejde i na nejmenší flashku, kterou dnes objevíte. Nezbývá než mít geniální nápad, proměnit jej v aplikaci a tu v pohádkové množství peněz.

Jiri Cincura :: 1. listopadu 2007 :: 2924 shlédnutí :: 0 komentářů
kategorie: Databáze a práce s XML, Vývoj webových aplikací, Vývoj Windows aplikací

Comments

Nyní zde nejsou žádné kometáře. Buďte první!
Musíte být přihlášen pro posílání komentářů. Přihlásit se můžete zde
Přehled posledních diskuzí

Přehled posledních diskuzí

  1. Microsoft Windows workflow foundation [12.05.2009 2:40 odp.]
    Dobrý den,potřeboval bych sehnad nějaké informace o workflow foundation. Nedaří se mi někde najít něco v češtině, potřeb...
  2. RE: Problém s keyDown [11.28.2009 2:17 dop.]
    Vyřešeno!Do konstruktoru ovládacího prvku jsem přidal : Enabled = false; a vše funguje jak má.Sorry
  3. Problém s keyDown [11.28.2009 1:54 dop.]
    Ahoj, potřeboval bych poradit s tímto problémem:Hraju si s WinForms a udělal jsem si formulář, kde pohybuju s kolečkem p...
  4. class SoapExtension [09.13.2009 5:42 odp.]
    Chcel by som sa opytat, daju sa predavat triede vytvorenej dedenim z triedy SoapExtension hodnoty, inak ako cez atributy...
Novinky z klubů

Novinky z klubů

  1. Kurz - Windows Presentation Foundation 9. března 2010
    VŠB-TU Ostrava ve spolupráci se společností Microsoft nabízí studentům možnost z&uacu...
  2. Programátorské večery: C++/CLI 3. března 2010
    V této přednášce se seznámíme s rozšířením jazyka C++ pro pr&aac...
  3. Programátorské večery: deklarativní programování 18. února 2010
    Co je vlastně deklarativní programování? Kde se tento způsob používá dnes v .NETu? ...
  4. Programátorské večery: náměty na přednášku 18. února 2010
    Stejně jako minulý semestr probíhá v rámci předmětu soutěž o nejlepší předn&aa...
Co se píše jinde

Co se píše jinde

Video: Záloha a obnovení web serveru

Poté, co jsme server úspěšně nainstalovali a zkonfigurovali, bylo by špatně, kdybychom o něj při nějaké havárii zase ...

Video: Delegování omezené správy IIS na zákazníky

Dálková správa IIS, kterou jsem představil v minulém dílu seriálu na MSTV.CZ, není jenom pro administrátory. Omezená ...

Video: IIS Management Service a vzdálená správa

Poslední lednový díl hostingového seriálu na MSTV.CZ se zabývá dálkovou správou. Narozdíl od předchozích verzí lze II...

Video: Konfigurace web serveru pro hosting

Trvalo to pouhých osm dílů a v našem seriálu na MSTV.CZ se dostáváme konečně k vlastní konfiguraci web serveru. Podív...

Příčetné renderování sitemap podruhé aneb komponenta pro hierarchická data

V minulém dílu jsme si ukázali, jak přepsat HTML výstup komponenty TreeView pro docílení vykreslení jednoduchého menu...