EMBARCADERO DATASNAP OBSAH Úvod.........................................................................................................................................................................................2 DataSnap a DBExpress ................................................................................................................................................2 Serverová část ............................................................................................................................................................2 VCL Klient ....................................................................................................................................................................6 Nasazení .......................................................................................................................................................................7
ÚVOD DataSnap je jednou z nejdůležitějších technologií obsažených v nástrojích Delphi a C++ Builder. DataSnap je otevřená architektura, umožňující vytvářet libovolné aplikace, jejichž součástí je síťová komunikace. O DataSnapu se nejčastěji hovoří v souvislosti s takzvanými „vícevrstvými“ aplikacemi, tedy aplikacemi, které oddělují data, aplikační logiku a prezentační vrstvu. Tyto aplikace jsou zpravidla náročnější na vývoj, následně jsou však snadněji udržovatelné, snadno se portují na různé platformy či provozují v prostředí Cloudu. Tento dokument popisuje základní principy tvorby DataSnap aplikací v prostředí Delphi, ale téměř vše je platné rovněž pro nástroj C + + Builder. Příklady byly vytvářeny v Delphi Enterprise ve verzi XE2 servis pack 3. Typická DataSnap aplikace se skládá ze serveru a jedné nebo vice klientských aplikací. Server může sloužit jako kontejner pro umístění aplikační logiky, zajišťovat komunikaci s dalšími specializovanými servery (databázovými, webovými či aplikačními) a plnit celou řadu dalších úloh. Hlavní výhodou je výrazné odlehčení klientských aplikací nebo usnadnění přechodu na webové klienty. Uživatel tak nemusí mít instalované často objemné klientské knihovny pro komunikaci s databázovými stroji a může používat i operační systémy a zařízení, na které tyto knihovny nejsou portovány. To má velký význam především pro oblast mobilní výpočetní techniky a její integrace s tradiční podnikovou infrastrukturou. Za pomoci DataSnapu lze vytvářet široké spektrum kombinací serverů a klientů. Jednou z nejběžnějších variant je pravděpodobně komunikace s DB serverem.
DATASNAP A DBEXPRESS SERVEROVÁ ČÁST Pro založení nového projektu použijeme původce „DataSnap Server“ (Projects -> New Project…).
Z následující nabídky zvolíme jako cílový typ aplikace „VCL Forms Application“.
Dále zvolíme požadované komunikační protokoly a port na kterém bude po dokončení vytvářený DataSnap Server naslouchat. Ve většině případů lze ponechat defaultní 211.
Nakonec zvolíme předchůdce pro třídu, kde budou umístěny serverové metody. V našem případě to bude „TDSServerModule“.
Nyní již jen potvrdíme zvolenou konfiguraci kliknutím na tlačítko “Finish“. Průvodce následně vygeneruje potřebné moduly. Jedná se o hlavní formulář serveru „DSServerMain“, nevizuální
kontejner pro serverové komponenty „ServerContainerUnit1“ „ “ a také nevizuální „ServerMethodsUnit1“, “, která nám poslouží jako kontejner pro datové komponenty. komponenty.
Projekt uložíme pomocí volby „Save „ All““ (Shift+Ctrl+S). Názvy jednotlivých souborů je samozřejmě vhodné upravit, my je však pro lepší orientaci ponecháme tak, jak byly vygenerovány vývojovým prostředím, prostředím pouze projekt nazveme „DSServer“. Nyní otevřeme „ServerMethodsUnit1 ServerMethodsUnit1“ a umístíme na formulář DBX komponenty „TSQLConnection“, „TSQLDataSet TSQLDataSet“ a „TDataSetProvider“.
Dalším krokem je nastavení připojení k databázovému stroji a nastavení vlastností komponent, jejichž pomocí bude připojení realizováno. Pro komponentu „TSQLConnection nection“ je třeba nastavit: Driver = např. Firebird UserName = sysdba Password = heslo k DB, pro Firebird standardně standardn masterkey LoginPrompt = False (V opačném čném případě p bude vždy při startu požadováno přihlášení řihlášení) Connected = True
DataSet“ je třeba nastavit: Pro komponentu „TSQLDataSet SQLConnection = SQLConnection1 CommandType = ctTable CommandText = název tabulky (lze vybrat z rozbalovacího seznamu) Active = True
Pro komponentu „TDataSetProvider DataSetProvider“ je třeba nastavit: DataSet = SQLDataSet1
Tím je dokončen návrh DataSnap Serveru a projekt můžeme přeložit. Projekt uzavřeme a server spustíme mimo prostředí Delphi.
VCL KLIENT Pro připojení k právě vytvořenému DataSnap Serveru použijeme jednoduchou VCL aplikaci. Založíme nový projekt, pro který jako cíl zvolíme „VCL Application“.
Na vygenerovaný formulář umístíme komponenty „TSQLConnection“, „TDSProviderConnection“, „TClientDataSet“, „TDataSource“ a “TDBGrid“. Přidat můžeme i standardní tlačítko „TButton“ pro zavření okna.
Pro výše uvedené komponenty provedeme následující úpravu nastavení jejich vlastností. Pro komponetu „TSQLConnection“ je třeba nastavit: Driver = Datasnap CommunicationProtocol = tcp/ip HostName = pro vývoj a lokální testování typicky localhost Port = zvolený port, standardně 211 Connected = True
Pro komponetu „TDSProviderConnection“ je třeba nastavit: SQL Connection = SQLConnection1 ServerClassName = TServerMethods1 Connected = True
Pro komponetu „TClientDataSet“ je třeba nastavit: RemoteServer = DSProviderConnection1 Active = True
Pro komponetu „TDataSource“ je třeba nastavit: DataSet = ClientDataSet1
Pro komponetu „TDBGrid“ je třeba nastavit: DataSource = DataSource1
Pokud byly všechny hodnoty nastaveny korektně, měla by již komponenta „DBGrid1“ zobrazovat data ze zvolené tabulky. Dopníme kód pro uzavření klienta (do metody „OnClick“ tlačítka „Button1“): procedure TForm1.Button1Click(Sender: TObject); begin Close(); end;
Tím je dokončena i klientská část a projekt lze přeložit.
NASAZENÍ Pokud by jste chtěli DataSnap server přenést na jiný stroj (server), stačí provést následující kroky: 1) Do zvolené složky na serveru zkopírujeme vlastní program (DSServer.exe). 2) Nejlépe do stejného umístění přidáme potřebné běhové knihovny (Midas.dll a DBX knihovnu dle použité DB, v našem případě tedy dbxfb.dll). Zvolíme li jiné umístění, je třeba jej přidat do systémové cesty. 3) Ověříme nastavení firewallu, aby neblokoval komunikaci na námi zvoleném portu. 4) Spustíme DataSnap server 5) V klientské aplikaci změníme u komponenty „TSQLConnection“ vlastnost host z localhost na jméno serveru, na kterém je DataSnap Server spuštěn. Aplikaci znovu přeložíme a spustíme.