HIS Server je vlastnosť, ktorá umožňuje rozdelenie implementácie ESL skriptov aktívnych schém (PICTURE) a objektov typu Event (EVENT), otvorených na strane klienta, na dve časti.
Časť, ktorá sa vykonáva na strane klienta (lokálny skript) a časť, ktorá je vykonávaná na strane servera (remote skript).
Toto rozdelenie umožňuje aplikačnému programátorovi rozčleniť funkcionalitu na dva celky podľa toho, s ktorou časťou systému spolupracujú intenzívnejšie.
Je predpoklad, že skript na strane klienta bude intenzívne spolupracovať práve s užívateľským rozhraním prostredníctvom rýchleho komunikačného kanála a interakciu so serverom obmedzí na minimum.
A naopak, skript na strane servera bude intenzívne spolupracovať s časťami aplikácie na strane servera a interakciu s užívateľským rozhraním obmedzí na minimum. Toto rozdelenie je v rukách aplikačného programátora.
Pre ladenie výkonu a odozvy jednotlivých akcií je určený nástroj ESL Profiler. Časti sú reprezentované dvoma ESL skriptami, ktoré sú súčasťou konfigurácie príslušného objektu. Z používateľského (aplikačného) hľadiska je táto skutočnosť vo veľkej miere transparentná a neprináša do konfigurácie systému ďalšiu neprimeranú zložitosť.
Vizuálne sú ESL skripty v editore rozdelené nasledujúcim spôsobom:
L: predstavuje lokálny skript
R: predstavuje remote (vzdialený) skript
Zjednodušený dátový model schémy a eventu:
Vysvetlivky:
Funkcionalitu lokálneho ESL skriptu (na strane klienta) zabezpečuje proces HIS (meno fyzického procesu je obyčajne odvodené od mena príslušného procesu HIP), ktorého implementácia je zapuzdrená do knižnice event.dll.
Funkcionalitu remote ESL skriptu (na strane servera) zabezpečuje virtuálny proces SEE (Script Execution Engine). Procesy SEE obsluhuje proces SES (Script Execution Server). Jeho implementácia je zapuzdrená do procesu event.exe.
Procesy HIS a SEE v súčinnosti vykonávajú požiadavky klienta, ktorý je v tomto prípade proces HIP. Za týmto účelom je medzi nimi vytvorený virtuálny komunikačný kanál, prostredníctvom ktorého komunikujú. Z pohľadu klienta nie je dôležité fyzické umiestnenie procesu (SEE). Z pohľadu vykonávania sú oba procesy samostatné a pracujú paralelne.
Nasledujúci obrázok schematicky znázorňuje jednotlivé zúčastnené komponenty.
Proces | Popis |
---|---|
D2000 Server | Server proces systému D2000 |
UserWS.HIP | Proces D2000 HI – konzola užívateľa |
UserWS_*.HIS | ESL Interpret na strane Klienta |
UserWS_*.SEE | ESL Interpret na strane Servera – Script Execution Engine |
REMOTE.SES | Remote server obsluhujúci procesy *.SEE. |
Procesy HIS a SEE sú dynamické a ich mená sú odvodené od príslušného procesu HIP a doplnené náhodne generovaným číslom, ktoré zabezpečuje jednoznačnosť mena v rámci aplikácie. Proces HIP predstavuje užívateľskú konzolu, kde je otvorená schéma S.ActivePicture, ktorá využíva funkcionalitu lokálneho a vzdialeného ESL skriptu pri zaškrtnutí parametra Server Script v Parametroch schémy.
Obrázok ďalej zobrazuje umiestnenie jednotlivých častí konfigurácie schémy, ktoré sú znázornené ako objekty.
Objekt | Popis |
---|---|
S.ActivePicture:PICTURE | Definícia schémy potrebná pre vizualizáciu. |
S.ActivePicture:ESLDefinition:1 | Lokálny ESL skript. |
S.ActivePicture:ESLDefinition:2 | Vzdialený ESL skript. |
Rozloženie jednotlivých procesov je obyčajne nasledujúce:
Prepojenia medzi jednotlivými procesmi predstavujú komunikačné kanále. V závislosti od "vzdialenosti" procesov je použitá komunikácia prostredníctvom Shared Memory alebo TCP/IP. Shared Memory je rýchly a TCP/IP naopak pomalý komunikačný kanál (táto skutočnosť sa významne prejavuje pri TCP/IP spojení v rozľahlých sieťach, kde je prenosová rýchlosť obyčajne dostatočná, ale naopak latencia je vysoká, rádovo niekoľko milisekúnd). Slúžia vo všeobecnosti na prenos správ medzi procesmi, ktoré zabezpečujú funkcionalitu schémy ako celku podľa jej konfigurácie.
Správy je možné rozdeliť do dvoch kategórií:
Vzhľadom na existenciu synchrónnych akcií alebo funkcií v ESL skripte je latencia mimoriadne nepríjemná, lebo významne predlžuje interaktivitu aplikácie. Tomuto sa dá významne predísť vhodným rozmiestnením jednotlivých častí ESL skriptu na stranu klienta (lokálny ESL skript) alebo servera (vzdialený ESL skript).
Prípadné ladenie výkonu je možné prostredníctvom nástroja ESL Profiler. Ten umožňuje podrobne analyzovať vykonávanie jednotlivých akcií ESL skriptu z pohľadu rýchlosti. Pre každú akciu poskytne informáciu o čase jej vykonávania. V prípade, že ide o synchrónnu akciu (dokončenie vykonania akcie je podmienené potvrdením zo strany vykonávateľa akcie) je informácia rozšírená o čas, ktorý akcia strávila pasívnym čakaním na potvrdenie.
Napríklad celkový čas čítania z databázy akciou DB_READ je daný ako súčet časov.
Bod 2 predstavuje z pohľadu vykonávania akcie DB_READ pasívne čakanie, ktorého čas trvania ovplyvňuje latencia komunikačnej cesty (samozrejme aj čas vykonania čítania z databázy).
Podobné princípy platia aj pre objekt typu Event otvorený na strane klienta (prostredníctvom akcie OPENEVENT). Rozdelenie ESL skriptov na lokálny a vzdialený je možné nastavením konfiguračného parametra "Typ eventu" na hodnotu "Klient a server event".
Volanie RPC procedúr medzi lokálnym a remote ESL skriptom je zabezpečené volaním akcie CALL. Ak sa nachádzajú v skriptoch (lokálny a remote) duplicitné deklarácie procedúr, kompilátor vyhlási chybu ("Duplicitná deklarácia procedúry") a nedovolí takúto konfiguráciu ESL skriptov uložiť (viď Rozšírenia ESL pre HIS Server).
Obsluhu všetkých udalostí (okrem definovaných výnimiek) je možné definovať v oboch skriptoch. Pri vzniku príslušnej udalosti systém zabezpečí volanie oboch obslúh. Výnimkou sa rozumie synchrónna udalosť (skript čaká na návratovú hodnotu). Ak sú takéto obsluhy udalostí použité v oboch skriptoch, kompilátor takúto konfiguráciu vyhodnotí s chybou ("Duplicitná deklarácia entry") a nedovolí takúto konfiguráciu ESL skriptov uložiť (viď Rozšírenia ESL pre HIS Server).
Pre zachovanie konfigurácie Remote ESL skriptu pri zmene typu eventu z "Klient a server event" na iný, je implementovaná vlastnosť
prekopírovania zakomentovaného Remote skriptu do Lokálneho ESL skriptu.
Tým je zabezpečené zachovanie konfigurácie.
Analogicky to platí aj pri grafických schémach po odškrtnutí parametra "Server Script", ktorý sa nachádza v dialógovom okne, ktoré sa otvorí po výbere položky
Parametre schémy z ponuky Nastavenia v D2000 GrEditor.
D2000 SES Proces |