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. 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, pouze projekt nazveme DSServer. Nyní otevřeme ServerMethodsUnit1 a umístíme na formulář DBX komponenty TSQLConnection, 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 je třeba nastavit: Driver = např. Firebird UserName = sysdba Password = heslo k DB, pro Firebird standardně masterkey LoginPrompt = False (V opačném případě bude vždy při startu požadováno přihlášení) Connected = True Pro komponentu TSQLDataSet je třeba nastavit: SQLConnection = SQLConnection1 CommandType = cttable CommandText = název tabulky (lze vybrat z rozbalovacího seznamu) Active = True Pro komponentu TDataSetProvider 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.