Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra kybernetiky. klienta
|
|
- Arnošt Holub
- před 9 lety
- Počet zobrazení:
Transkript
1 Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra kybernetiky Bakalářská práce Vývoj webového OPC klienta Plzeň 2012 Jiří Faist
2 Prohlášení Prohlašuji, že jsem bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů. V Plzni dne 23. května 2012 Jiří Faist
3 Abstract The goal of this work is to implement an thin client application that would serve for web clients to communicate and manipulate with OPC Servers. In first chapter there are discussed technologies usable for implementation. There are mentioned various approaches to bidirectional communication in web applications with a focus on WebSocket technology. In the next chapter there are exposed some implementation principles along with their advantages and disadvantages. In final chapters there are shown some performance test results of demanding components of application along with the performance statistics of reading various numbers of items from the REX Control OPC server and briefly described example of use of the application with SVG graphic in web browser. Cílem práce je implementace aplikace typu tenkého klienta, která umožní webovým klientům komunikaci a manipulaci s OPC Servery. V první části práce jsou diskutovány technologie, které jsou použitelné pro vývoj aplikace. Jsou zde také zmíněny různé přístupy k obousměrné komunikaci mezi webovými klienty a servery se zvláštním zaměřením na technologii WebSocket. V další kapitole jsou poodhaleny významné principy implementace společně s jejich výhodami a nevýhodami. V závěru práce jsou uvedeny výsledky měření výkonu aplikace se zaměřením na jednotlivé náročné komponenty společně s výsledky testování čtení různého počtu položek z OPC Serveru řídícího systému REX. V závěru práce je stručně popsán příklad použití aplikace s využitím SVG grafiky ve webovém prohlížeči. Key words: control opc, opcbridge, webový klient, tenký klient, websocket, rex
4 Obsah 1 Úvod 1 2 Použité technologie Opc Servery a Opc.NET API Standardy OPC OPC.NET API NET a Reflexe NET Framework Metadata a Reflexe WebSocket Úvod do WebSocket technologie Principy komunikace WebSocket API JSON Protokol JSON Příklady JSON formátu Implementace Schéma aplikace Proměnná workspace Rozhraní aplikace Datový formát JSON a serializace funkcí Zjednodušené API pro přístup k OPC Zpětné odezvy a chybové hlášky Testování výkonu aplikace Reflexe vs. přímý přístup Přenos dat Serializace a deserializace objektů Celkový výkon aplikace
5 OBSAH OBSAH 5 Ukázka 31 6 Závěr 34 4
6 1 Úvod Základním cílem této práce je vytvořit uživatelsky přátelskou aplikaci, která usnadní přístup k datům na Opc Serverech(viz. 2.1). Vzniklá aplikace by měla co nejvíce odpovídat charakteristikám aplikace tenkého klienta. Tyto aplikace jsou zpravidla spuštěny na serveru a klient k nim přistupuje pomocí snadno dostupného softwarového prostředku, typicky webového prohlížeče. Tento přístup má mnoho výhod, z nichž nejdůležitější je, že veškerá výpočetní zátěž je prováděna na serveru a klient je zatížen pouze sít ovou komunikací. Klient také není nucen instalovat na svém počítači žádný dodatečný software. Tato aplikace by mohla najít využití zvláště pro přístup k datům řídícího systému REX Controls, který v sobě má základní implementaci Opc Serveru. Opc Servery mají definované API 1 (rozhraní) v.net Frameworku, přes které se k datům přistupuje. Je tedy nasnadě toto rozhraní využít. Z požadavku na tenkost klienta je dalším logickým požadavkem, aby rozhraní vytvořené aplikace bylo přístupné z programovacího jazyce JavaScript, který je hlavním programovacím jazykem webových prohlížečů. Aplikace tedy bude mít tvar jakéhosi mostu mezi klientem v JavaScriptu a OPC Serverem, ke kterému bude přistupováno z prostředí.net Framework. Z této úvahy vyplývá druhý požadavek na aplikaci a tím je vytvořit ji natolik obecně, aby mohla být v budoucnu snadno přizpůsobena pro práci i s jinými rozhraními než je rozhraní OPC Serverů. V první části práce jsou diskutovány použité technologie, které jsou v implementovaném řešení využity. V navazujících kapitolách se již nacházejí popis principů funkce aplikace společně s výsledky testování aplikace. Součástí práce je také jednoduchá ukázka s vizualizací v podobě vektorové SVG grafiky ve webovém prohlížeči, po jejímž prostudování by měl být čtenář schopen aplikaci aktivně využívat. 1 API - Application Programming Interface 1
7 2 Použité technologie 2.1 Opc Servery a Opc.NET API Standardy OPC OPC je soubor specifikací, které popisují standardy naplňující specifické potřeby průmyslu. O udržování těchto otevřených standardů se stará nadace OPC Foundation. První standart OPC Data Access 1 vznikl na základě spolupráce mnoha světových podniků, zajišt ujících automatizaci, za pomoci Microsoftu. Tato specifikace je původně postavená na technologiích Microsoftu OLE COM 2 a DCOM 3. Tyto technologie umožňují softwarovým komponentám vzájemnou komunikaci a jsou využívány vývojáři pro vytváření znovupoužitelných komponent, slinkování komponent dohromady a využívání výhod Windows servisů[mic(2012a)]. Specifikace definuje základní set objektů, rozhraní a metod pro použití při řízení procesů a automatizaci tak, aby zajistila vzájemnou kompatibilitu[opc(2012)]. OPC aplikace jsou implementovány jako dvojice server/klient. OPC server je program, který konvertuje hardwarový komunikační protokol používaný v PLC 4 na OPC protokol[cog( )]. OPC klient je program, který se potřebuje připojit k hardwarovému zařízení. Používá OPC server pro získání dat ze zařízení nebo pro vyslání příkazu do zařízení (viz. obr. 2.1). K důležitým vlastnostem OPC patří to, že se jedná o otevřený standard, z čehož vyplývá, že výrobce hardwaru musí poskytnout jediný OPC server pro svá zařízení, aby mohla komunikovat s kterýmkoliv klientem. Z opačného pohledu je patrné, že rovněž vývojářům aplikací stačí zanést do svého produktu vlastnosti OPC klienta a tím budou kompatibilní s mnoha hardwarovými zařízeními. 1 původně nazývaný OPC Specification 2 OLE- Object Linking and Embedding; COM - component object model 3 distributed component object model 4 Programmable Logic Controller - malý průmyslový počítač kontrolující jedno či více hardwarových zařízení 2
8 Použité technologie Opc Servery a Opc.NET API Windows Hardware PLC OPC Server OPC Client Software Obrázek 2.1: jednoduché OPC s jedním server/klient připojením OPC.NET API OPC.NET(WCF 5 ) 6 je API pro přístup k OPC serverům z prostředí Microsoft.NET Frameworku. OPC.NET 3.0 je výsledkem spolupráce několika společností, který poskytuje jednoduché.net rozhraní pro OPC Classic servery. Bylo vyvinuto tak, aby umožnilo klientským aplikacím využívat přednosti.net prostředí při přistupování k existujícím OPC Classic serverům [OPC(2012)]. Rozhraní OPC.NET 3.0 kombinuje sémantiku základních OPC specifikací OPC Data Access, OPC Alarms and Events a OPC Historical Data Access 7. Rozhraní také umožňuje automatické znovupřipojení k serveru, jestliže dojde ke ztrátě spojení. Tato vlastnost rovněž zachovává na serveru povědomí o klientu, takže klient nemusí znovu vytvářet své nastavení na serveru. OPC.NET 3.0 API je navrženo tak, aby klientská aplikace byla oddělena od sít ového rozhraní. Klientská aplikace už se nemusí vypořádávat s věcmi kolem sít ového připojení jako například s výměnami požadavků a odezev(request/response). Tyto úkony obstarává zdrojový kód, který je distribuován s API, a WCF rozhraní. OPC.NET je distribuováno se třemi generickými klientskými aplikacemi, které byly vytvořeny jako model pro vývoj klientských aplikací a slouží také pro testování nově vyvinutých serverů pro ověření správné funkčnosti. Na straně serveru je přítomný generický wrapper pro OPC DA, A&E 5 Windows Communication Foundation - součást.net Framework určená pro tvorbu servisově orientovaných aplikací 6 dříve nazývané OPC Express Interface (Xi) 7 dále používáno ve zkratkách DA, A&E, HDA 3
9 Použité technologie Opc Servery a Opc.NET API nebo HDA servery. Wrapper je rozdělen do dvou částí, první obstarává WCF rozhraní a druhá se stará o mapování mezi OPC.NET a OPC Classic funkcemi (viz. obr.2.2). Zdrojový kód, který zajišt uje WCF rozhraní serveru je označen jako báze serveru. Tato část definuje stejné chování všech OPC.NET serverů a je tedy vždy stejná. Pro vyhledávání přípustných serverů obsahuje OPC.NET Discovery server, který vytváří seznam serverů dostupných pro klientskou aplikaci. K tomu využívá technologii Microsoft Peer Name Resolution Protocol(PNRP), která je dostupná na systémech Windows XP a vyšších. Klientská API Rozhraní WCF Standardní Wrapper Generický Klient Adhoc Klient Class API Klient Adhoc API Class API Klientská báze WCF Báze Serveru OPC Wrapper OPC COM Server alternativní implementace.net serveru Standardní kód klienta Standardní kód serveru Specifický kód vývojáře Obrázek 2.2: OPC.NET klient a server Funkční architektura Na obrázku 2.3 jsou přiblíženy principy funkce vztahu OPC server/klient. Základem jsou jakési přístupové body serveru definované rozhraními Spravuj(Manage), Čti(Read), Zapiš(Write) a Přihlaš se k odběru(subscribe). Každý klient si vytváří vlastní seznamy ze zdrojů v systému. Ty jsou pro všechny klienty stejné na rozdíl od vzniklých seznamů, které má každý klient vlastní. Klient poté tyto seznamy může přiřadit k přístupovým bodům. Každý klient může mít více přístupových bodů a ke každému přístupovému bodu může být přiřazeno více seznamů[neitzel(2009)]. Server tedy disponuje následujícími rozhraními: ServerDiscovery - používané pro nalezení serverů 4
10 Použité technologie Opc Servery a Opc.NET API Spravuj Zdroje v systému stejné pro všechny klienty Klientská aplikace Runtime data Historická data filter Alarms &Events filter Historical Alarms &Events Čti Zapiš Odebírej Oblast specifická pro každého klienta Obrázek 2.3: Schéma funkční architektury OPC.NET ResourceManagement - umožňuje prohledávání zdrojů serveru, vytváření seznamů z těchto zdrojů, vytváření přístupových bodů a přidělování seznamů přístupovým bodům Subscribe přístupové body mohou být dva typy určené hlavně druhem použitého protokolu: Callback - určené pro přístup k datům v rámci jednoho stroje případně místní sítě, protokol TCP Poll - určené pro přístup z internetu, webových aplikací atd., protokol HTTP Read - obsahuje metody pro čtení hodnot ze serveru Write - obsahuje metody pro změnu stavu serveru a pro zápis hodnot na server 5
11 Použité technologie.net a Reflexe 2.2.NET a Reflexe NET Framework.NET Framework 8 je technologie vyvinutá společností Microsoft. Podporuje řadu programovacích jazyků a snaží se mezi nimi zajistit vzájemnou interoperabilitu. Při kompilaci v.net se zdrojový kód programu překládá do Common Intermediate Language(CIL), což je nejnižší pro člověka čitelný programovací jazyk. Do binárního kódu je program v CIL přeložen až za běhu. CIL je ukládán do assembly, která je bud ve tvaru spustitelného souboru.exe nebo ve tvaru.dll 9. Kromě CIL kódu assembly ještě obsahuje svůj Manifest, Metadata a Reference Metadata a Reflexe Každá assembly obsahuje svá Metadata, která jsou tvořena automaticky při překladu. Metadata popisují každý datový typ a člen, který je v modulu nebo v assembly definován nebo je na něj odkazováno a jsou základem pro reflexi v.net Frameworku. Reflexe v programování je proces, při kterém je daný program schopný za běhu sledovat a modifikovat svou vlastní strukturu a chování[hurlbut(1998)]. V.NET zajišt uje reflexi jmenný prostor System.Reflection, jehož objekty zaobalují assembly, moduly a datové typy. Tyto objekty mohou být využity k dynamickému vytváření instancí objektů, získávání informace o typu existujícího objektu, vyvolávání jeho metod nebo k přístupu k jeho položkám a vlastnostem[mic(2012b)]. Jediné co musí uživatel pro použití reflexe znát je jméno datového typu objektu a informace o assembly, ve které je objekt definován. V.NET reflexe funguje na základě parsování výše zmiňovaných Metadat z assembly. Při vývoji aplikace se nabízeli dva různé způsoby implementace. První možností bylo celé (a nebo značnou část) OPC.NET API přímo zpřístupnit v klientu JavaScriptu. V JavaScriptu by tedy musel být obraz každého objektu a každé metody, které jsou definované v OPC.NET API. Vzhledem 8 framework - podpůrný prostředek pro programátora obsahující vývojové prostředí, podpůrné knihovny atd. 9 Dynamic Link Library 6
12 Použité technologie.net a Reflexe k velikosti API se to ale jeví jako značně nevhodné řešení, nebot rozhraní aplikace v JavaScriptu by muselo být rozsáhlé a komplikované. Jako druhé řešení se nabízí vytvořit část aplikace, která v prostředí.net manipuluje s OPC.NET API za využití reflexe. Hlavní výhodou tohoto řešení je možnost velice jednoduše vyměnit API, ke kterému se klient připojuje. Toto řešení dokonce umožňuje připojovat se k několika API nezávisle na sobě. JavaScriptová část navíc musí v základní verzi obsahovat pouze obecné metody pro vytvoření objektu, zavolání metody nad objektem a nastavení členu objektu na určitou hodnotu. Na druhou stranu zde existují i nevýhody. Nejzávažnější z nich je skutečnost, že přečtení hodnoty nějakého členu objektu přes reflexi nebo vyvolání metody objektu použitím reflexe je mnohem pomalejší než při přímém přístupu (viz. sekce 4.1). Další nevýhodou jsou větší pamět ové nároky, protože do paměti se musí načíst množství Metadat o využívaných objektech. 7
13 Použité technologie WebSocket 2.3 WebSocket Úvod do WebSocket technologie Navrhovanou aplikace si lze představit jako most mezi JavaScriptem a OPC Serverem. K OPC Serveru se přistupuje přes rozhraní definované v.net. Data mezi prostředími jazyka JavaScriptu a.net jsou přenášena přes Web- Socket server. WebSocket je protokol, který umožňuje obousměrnou komunikaci mezi klientským skriptem a vzdáleným serverem, který byl v tomto skriptu zvolen [Ian Fette(2011)]. Klientem jsou ve většině případů webové prohlížeče s podporou HTML5. Základní architektura je nastíněna na obrázku 2.4. Protokol se skládá z otevíracího handshake, po kterém zpravidla následuje výměna informací založená na základě komunikačního protokolu TCP 10. Cílem této technologie je poskytnout mechanismus pro webové aplikace komunikující obousměrně se servery, který nebude závislý na otevírání velkého počtu HTTP připojení. Trading Gateway Platební systém Internet Databáze Web Service Messaging Service ERP/CRM Systémy atd... Webové prohlížeče WebSocket Server Obrázek 2.4: Základní architektura technologie Websocket 10 Transmission Control Protocol 8
14 Použité technologie WebSocket Alternativní metody obousměrné sít ové komunikace WebSocket by měl poskytnout náhradu za doposud používané technologie HTTP polling, long-polling a streaming. Všechny tyto metody zahrnují posílání HTTP položek (headers), které obsahují mnoho zbytečných dat, čímž dochází ke zvýšení latence nad minimální úroveň. WebSocket je navržen tak, aby mohl zužitkovat existující infrastrukturu (proxy servery, ověřování, atd.) polling Při pollingu klient v pravidelných intervalech posílá serveru HTTP požadavky a okamžitě přijímá odpověd. Tato technika je používána pro zisk dat z real-time aplikací. Poskytuje dobré řešení, pokud je známý interval, po jehož uplynutí jsou na serveru poskytována nová data. Bohužel tento interval je často nepravidelný a nepředvídatelný. Proto dochází k otevírání zbytečných HTTP připojení, obzvláště pokud nové informace nejsou dostupné příliš často. long-polling Při long-pollingu prohlížeč posílá serveru požadavek a ten ho nechá otevřený tak dlouho, než bude mít pro klienta nějaká data. Pokud se tak ve zvoleném vymezeném čase nestane, server pošle odpověd pro ukončení připojení. Z principu long-polling vyplývá, že nepřináší žádné zlepšení vůči polling v případě, že se data na serveru často obnovují. streaming Další z možných přístupů je streaming, při kterém prohlížeč pošle serveru požadavek a server mu jako odpověd průběžně posílá data. Nemusí tedy čekat na vygenerování kompletní odpovědi, aby ji mohl poslat najednou. Streaming nesnižuje latenci připojení, jeho výhodou ale je, že klient může na příchozí data reagovat už v průběhu přijímání dat. Streaming je ale stále založený na technologii HTTP, což může způsobit, že firewally a proxy servery si mohou zvolit, že budou data bufferovat, což způsobí zvýšení latence doručení zprávy. Navíc server je nucen používat několik různých TCP připojení pro každého klienta: jeden pro posílání informací a další pro každou nově příchozí zprávu. WebSocket oproti tomu umožňuje pro komunikaci v obou směrech využít pouze jedno TCP připojení [web(2011)]. 9
15 Použité technologie WebSocket Principy komunikace Handshake Termín handshake v komunikačních technologiích označuje proces, při kterém mezi účastníky komunikace dochází k dohodnutí se na hodnotách dynamických parametrů před vlastním započetím komunikace. Možná podoba handshake klienta a serveru pro technologii WebSocket je uvedena v Příloze 1. Handshake v protokolu WebSocket má tvar HTTP Upgrade požadavku. Díky tomu je tato technologie kompatibilní s HTTP servery a s prostředníky na HTTP bázi. Dalším důsledkem je možnost využití jednoho portu pro HTTP i WebSocket klienty. Klient ve svém handshake specifikuje požadovanou adresu URI 11, ke které se chce připojit. Tento způsob umožňuje, aby z jedné IP adresy mohlo být obslouženo více domén a aby více WebSocket klientů mohlo být obslouženo jediným serverem[ian Fette(2011)]. Pro URI Websocketu jsou definována dvě schémata. Pro klasické Websocket připojení má URI prefix ws:// a pro zabezpečenou verzi se používá prefix wss://. Kromě požadované URI klientský handshake obsahuje i další položky pro upřesnění způsobu následné komunikace. Sec-WebSocket-Protocol - určení aplikačního protokolu, který značí formát, v jakém budou data přenášena Sec-WebSocket-Extensions - seznam žádaných rozšíření protokolu(např. komprese dat atd.) Origin - položka sloužící k filtrování webových stránek, ze kterých má být server přístupný Sec-WebSocket-Version - verze protokolu Po odeslání svého handshake klient musí počkat na odpovídající handshake serveru, dříve než začne posílat další data. Server si z klientova handshake musí vyjmout položku Sec-WebSocket- Key v níž se nachází náhodný klientem vybraný řetězec a upraví ho podle stanovených pravidel. Tak získá řetězec, který poté odešle ve svém handshake v položce Sec-WebSocket-Accept. Tímto způsobem si klient ověřuje, že přijatý handshake pochází od jím zvoleného serveru. Jakmile klient přijme handshake serveru, mohou si obě strany komunikačního kanálu nezávisle na sobě posílat data. 11 Uniform Resource Identifier 10
16 Použité technologie WebSocket Data Framing Po úspěšném handshake si mohou klient se serverem vyměňovat data. Tato data jsou sdružována do celků označovaných jako messages, které jsou dále rozdělené do jednotlivých rámců neboli framů. V Příloze 2 je zobrazen základní tvar pro jeden rámec. Vysvětlení jednotlivých částí rámce je v Příloze 3. Hlavní výhoda fragmentování zpráv spočívá v tom, že server může začít posílat fragmenty zprávy ještě před tím, než má celou zprávu k dispozici. Pokud by zpráva nebyla fragmentována, odesílatel by musel počkat až bude mít celou zprávu a spočítat její velikost dříve, než by mohl být odeslán první byte. Díky fragmentaci může server nebo prostředník zvolit rozumnou velikost bufferu a jakmile se buffer naplní rámec odeslat. Ukončení spojení Po úspěšném otevíracím handshake a přenosu potřebných dat spojení ukončuje uzavírací handshake. Kterýkoliv z koncových bodů může vyvolat uzavírací handshake tím, že odešle svému protějšku uzavírací rámec, jehož tvar lze odvodit z Přílohy 3. Po odeslání tohoto rámce již nesmí pokračovat v odesílání žádných dat a vyčkává na odezvu také v podobně uzavíracího rámce. Po přijetí odpovědi iniciátor ukončení komunikace ukončí spojení WebSocket API HTML5 WebSocket specifikace definuje jednoduché API, které umožňuje webovým stránkám použít WebSocket protokol pro komunikaci se vzdáleným hostitelem. Kompletní podoba rozhraní v sémantice WebIDL 12 lze najít v Příloze 4. Konstruktor Konstruktor WebSocket(url, protocols) má jeden nebo dva argumenty. První z nich, url, určuje URL adresu, ke které se má WebSocket připojit. Parametr protocols je nepovinný a je typu string nebo pole stringů. Tyto řetězce mají význam subprotokolů a jsou obsaženy v klientském handshake v položce Sec-WebSocket-Protocol[Hickson(2012)]. Úkolem konstruktoru je na základě předaných parametrů vytvořit nové připojení k serveru a vrátit nový WebSocket objekt. 12 WebIDL - jazyk zaměřený na popis rozhraní technologií určených pro webové prohlížeče 11
17 Použité technologie WebSocket reprezentuje stav spojení a může nabívat následují- Atribut readystate cích hodnot: CONNECTING(číselná hodnota 0) - připojení ještě nebylo vytvořeno OPEN(číselná hodnota 1) - připojení je vytvořeno a posílání dat je možné CLOSING(číselná hodnota 2) - připojení je ve stavu probíhajícího closing handshake CLOSED(číselná hodnota 3) - připojení je uzavřené a nebo nemohlo být otevřeno Atribut bufferedamount Atribut bufferedamount obsahuje počet bytů, které byly přidány do fronty použitím metody send a nebyly ještě odeslány. Tato metoda posílá data prostřednictvím vytvoře- Metoda send(data) ného připojení. Metoda close() Tato metoda spouští proceduru uzavíracího handshake a ukončuje spojení se serverem. Volitelným parametrem je integer s kódem chyby, která způsobila ukončení spojení. V následující tabulce jsou event handlery 13, které obsahuje WebSocket rozhraní. Tyto handlery jsou zpravidla přepisovány uživatelem, který rozhraní využívá. Event handler onopen() onmessage() onerror() onclose() událost, při které je handler spuštěn úspěšné vytvoření připojení přijetí nové zprávy příjetí rámce s chybovým hlášením přijetí uzavíracího rámce 13 metody pro zpracování vzniklých asynchronních událostí 12
18 Použité technologie JSON 2.4 JSON V sekci 2.3 je popsána technologie WebSocket využívaná pro přenos dat ve tvaru textových řetězců. Ve směru od prohlížeče tyto řetězce obsahují jen jednoduché příkazy pro OPC.NET API. V opačném směru je ale nutné posílat data reprezentující výsledky vykonání těchto příkazů. Pro reprezentaci těchto dat byl vybrán protokol JSON Protokol JSON JSON (JavaScript Object Notation) je odlehčený formát pro výměnu dat a serializaci objektů 14. Je jednoduše čitelný i zapisovatelný člověkem a snadno analyzovatelný i generovatelný strojově [jso()]. JSON je vytvořen na základech jednoho z možných způsobu vytváření objektů v programovacím jazyce JavaScript. J e textový formát, který, přestože vychází z JavaScriptu, je na použitém jazyce zcela nezávislý. JSON podporuje dvě struktury: Struktura reprezentující objekt. Objekt je brán jako množina párů obsahující název členu objektu a jeho hodnoty. Při deserializaci objektů v JSON formátu do jiných jazyků než JavaScriptu se obvykle využívají struktury typu objekt, záznam, struktura, slovník, hash tabulka a další. Struktura reprezentující pole. Obě struktury se vyskytují v nějaké formě v podstatě ve všech programovacích jazycích a proto je JSON podporovaný většinou programovacích jazyků a značně rozšířený. Kromě těchto struktur se v JSON mohou objevit ještě textové řetězce, číselné hodnoty, hodnoty boolean a hodnota null. 14 serializace objektu - zpracování a uložení instance do perzistentního uložiště 13
19 Použité technologie JSON Příklady JSON formátu Příklad zápisu jednoduchého pole číselných hodnot [ 10, 5, 98, 20, 30 ] Příklad zápisu jednoduchého objektu { } color: "red", value: "#f00" array: [ 10, 5, 98, 20, 30 ] Příklad zápisu pole objektů [ ] { }, { }, { } color: "red", value: "#f00" color: "green", value: "#0f0" color: "blue", value: "#00f" 14
20 3 Implementace 3.1 Schéma aplikace Aplikace funguje jako most propojující klienta v JavaScriptu a prostředí OPC Serverů, ke kterým se přistupuje prostřednictvím OPC.NET API. Mezi JavaScriptem a OPC Servery tedy musí existovat mezičlánek v.net, který bude zpracovávat příkazy z JavaScriptu a podle nich manipulovat s rozhraním OPC serverů. Z podporovaných programovacích jazyků prostředí.net byl vybrán C#, který byl vytvořen společností Microsoft právě pro účely.net Frameworku. Na obrázku 3.1 je nastíněno základní schéma aplikace. V JavaScriptu je vytvořen objekt s určitým rozhraním, které dále využívá klient z webového prohlížeče. Hlavním úkolem tohoto objektu je posílat zprávy s příkazy prostřednictvím WebSocket serveru do prostředí.net, kde jsou tyto příkazy vykonány. Rozhraní v JavaScriptu a v.net jsou stejná, protože ke každému příkazu je v JavaScriptu metoda, která tento příkaz odešle, a v.net metoda, která tento příkaz vykoná. Příkazy obsahují pokyny pro manipulaci s OPC.NET API, která probíhá dynamicky na základě reflexe (viz. sekce 2.2.2). AddToWorkspace() AddToWorkspace() Klientská aplikace ve webovém prohlížeči Invoke() SetValue() Refresh() Invoke() SetValue() Refresh() Reflexe OPC.NET API Remove() Remove() workspace workspace JavaScript.NET (C#) WebSocket Server Obrázek 3.1: Schéma aplikace. 15
21 Implementace Proměnná workspace 3.2 Proměnná workspace Jak již bylo řečeno, aplikace má podobu pomyslného mostu mezi klientem v JavaScriptu a OPC.NET API, se kterým manipuluje jakýsi mezičlánek implementovaný v jazyce C#. Základem funkce aplikace je proměnná workspace, která se nachází v JavaScriptové části a v části aplikace implementované v C#(viz. obr.3.1). Na straně JavaScriptu se jedná o datový typ objekt. Objekty v JavaScriptu jsou v podstatě množiny párů klíč hodnota, kde klíče jsou řetězce a hodnota může být jakýkoliv datový typ. Na straně C# je tato struktura reprezentována slovníkem Dictionary<string,object> ze jmenného prostoru System.Collections.Generic. Klíče v tomto slovníku jsou rovněž řetězce a hodnotami, které odpovídají klíčům, mohou být libovolné objekty. V proměnné workspace se uchovávají veškeré uživatelem vytvářené objekty. Uživatel v JavaScriptu zavolá metodu pro vytvoření objektu, ten se na straně C# vytvoří, uloží se do proměnné workspace v C# a zpětně se zrcadlí do proměnné workspace na straně JavaScriptu. Navíc se ke každému objektu ve workspace v JavaScriptu přidává položka dotnettype, která obsahuje řetězec s datovým typem, jenž odpovídá typu objektu v C#, podle kterého tento obraz vznikl. Tato položka je zavedena z důvodu absence typové kontroly v JavaScriptu při volání metod (více o volání metod později v sekci 3.4). Zrcadlení objektů probíhá výměnnou dat ve formátu JSON(viz. 2.4) přes WebSocket server(viz. 2.3). 3.3 Rozhraní aplikace Při návrhu aplikace bylo cílem vytvořit co nejjednodušší rozhraní, které umožní snadno vytvářet objekty a vyvolávat jejich metody. Velmi obecné řešení využívající reflexi(viz. 2.2) na straně C# umožňuje, aby základní rozhraní objektu v JavaScriptu mělo pouze 5 metod. Téměř každá metoda rozhraní aplikace v JavaScriptu má jako první argument položku callback, která označuje název funkce v JavaScriptu, která bude vyvolána po vyplnění původní funkce. Toto opatření je nutné, protože JavaScript je pouze jednovláknový jazyk. To znamená, že pokud by se v průběhu skriptu muselo čekat na dokončení nějaké časově náročné operace, vyřadilo by to všechny komponenty webové stránky, které jsou na JavaScriptu závislé. Z tohoto důvodu musí všechny časově náročné operace probíhat asynchronně. V našem případě je asynchronní přístup obzvláště nutný 16
22 Implementace Rozhraní aplikace při vytváření objektu a následném volání metody tohoto objektu, která musí být spuštěna až po úspěšném zrcadlení nového objektu do JavaScriptu, tedy v callbacku. Aplikace podporuje vytváření objektů jednoduchých datových typů ve funkcích primárně určených pro jiné účely, než je vytváření objektů. Například pokud v parametru vyvolávané metody bude řetězec int:5, vytvoří se dočasný objekt typu System.Int32 s hodnotou 5 a tento objekt se předá vyvolávané metodě jako parametr. Tato vlastnost je vždy uvedena v popisu parametrů dané funkce. Další vlastnost, kterou rozhraní má, je možnost potlačení serializace funkcí (více o serializaci funkcí v sekci 3.4). Serializace je časově náročná operace a tímto způsobem je možné ji částečně urychlit. Například není potřeba serializovat metody u čtených dat ze serveru, jejichž metody nehodláme použít. Serializace metod se potlačí tak, že v daném řetězci předávaném metodě bude první znak roven *. Například chceme-li nový objekt uložit pod jménem dummy a chceme-li potlačit serializaci funkcí u tohoto objektu, předáme metodě parametr s hodnotou *dummy. U parametrů, kterých se tato vlastnost týká je to vždy uvedeno dále v popisu rozhraní. Základní rozhraní aplikace v JavaScriptu: Tyto metody vysílají prostřednictvím WebSocket serveru požadavky na vyvolání stejnojmenné metody v mezičlánku aplikace implementované v C#. AddToWorkpace(callback, itemname, itemtype) Přidává nový objekt do workspace zavoláním vhodného konstruktoru, vybíraného podle daných vstupních parametrů. Při chybném zvolení parametrů metoda vyvolá výjimku s popisem možných kombinací parametrů. Popis parametrů: callback - jméno funkce, která bude spuštěna po úspěšném vytvoření objektu. itemname - Jméno, pod kterým bude objekt uložen v proměnné workspace. Může obsahovat požadavek na potlačení serializace metod. itemtype - Jméno datového typu objektu. Může obsahovat deklaraci jednoduchých datových typů. Také může obsahovat deklaraci generických datových typů (např.: System.Collections.Generic.Dictionary<string,int> ) 17
23 Implementace Rozhraní aplikace Metodu je možné volat s proměnlivým počtem parametrů. Všechny další parametry jsou považovány za jména parametrů ve workspace, se kterými má být volán konstruktor. Příklad volání: opcclient.addtoworkspace("connectrexserver", servername, "Opc.Da.Server", "Factory", "URL"); Příklad protokolu dat přenášených přes WebSocket server: "connectrexserver_ _AddToWorkspace~rexServer; Opc.Da.Server;Factory,URL" Invoke(callback, itemname, methodname, saveresultname, argsarray) Vyvolává zvolenou metodu nad vybraným objektem s požadovanými argumenty. Pokud se uživatel pokouší vyvolat metodu se špatnými argumenty, metoda vyvolá výjimku s informacemi o možných způsobech volání dané metody. Popis parametrů: callback - jméno funkce, která bude spuštěna po úspěšném vyvolání metody a které bude předán obraz návratové hodnoty vyvolané metody. itemname - Jméno objektu ve workspace, nad kterým se bude vyvolávat metoda. methodname - Jméno metody, která má být vyvolána. saveresultname - Jméno, pod jakým se do workspace uloží návratová hodnota metody. Může obsahovat požadavek na potlačení serializace metod. argsarray - pole jmen parametrů, které mají být metodě předány. Může obsahovat deklaraci jednoduchých datových typů. Příklad volání: opcclient.invoke("callbackfce","rexserver","connect", null,["connectdata"]); Příklad protokolu dat přenášených přes WebSocket server: "callbackfce_ _Invoke~rexServer;Connect; null;connectdata" SetValue(callback, itemname, valuename) Metoda nastavuje objekt ve wokrspace na určenou hodnotu. 18
24 Implementace Rozhraní aplikace Popis parametrů: callback - Jméno metody, která bude vyvolána po úspěšném nastavení objektu na požadovanou hodnotu. itemname - Jméno objektu, jehož hodnota má být přenastavována. valuename - Jméno objektu ve workspace, jehož hodnota se použije pro nastavení objektu. Může obsahovat deklaraci jednoduchých datových typů. Příklad volání: opcclient.setvalue(null, "URL.Scheme", "string:opcda"); Příklad protokolu dat přenášených přes WebSocket server: "null_ _SetValue~URL.Scheme;string:opcda" Refresh(callback, itemname, boolwithfunctions) Aktualizuje objekt ve workspace v JavaScriptu. Aktualizace je nutná, pokud se hodnoty členů objektu mění po vytvoření objektu jiným způsobem než prostřednictvím metody SetValue(). Dalším možným využitím je dodatečná serializace metod, pokud jsme při vytvoření objektu tuto možnost potlačili. Popis parametrů: callback - Jméno funkce, která bude spuštěna po úspěšné aktualizaci objektu. itemname - Jméno objektu, který má být aktualizován. boolwithfunctions - Hodnota typu boolean určující, zda se má objekt aktualizovat včetně funkcí. To může být nutné, pokud objekt s daným jménem přepíšeme ve workspace jiným objektem. Příklad volání: opcclient.refresh(null,"group.readresults",false); Příklad protokolu dat přenášených přes WebSocket server: "null_ _Refresh~group.ReadResults;false" Remove(callback, itemname) Odstraňuje objekty z proměnné workspace. 19
25 Implementace Rozhraní aplikace Popis parametrů: callback - Jméno funkce, která bude spuštěna po odstranění daného objektu. itemname - Jméno objektu, který má být odstraněn. Příklad volání: opcclient.remove(null, "URL"); Příklad protokolu dat přenášených přes WebSocket server: "null_ _Remove~URL" Specifické metody rozhraní: Tyto metody jsou specifické pro JavaScriptovou část aplikace a nemají svého protějška v mezičlánku implementovaném v C#. Connect(host) Metoda pro připojení objektu v JavaScriptu k WebSocket serveru. Popis parametrů: host - URI adresa serveru, ke kterému se má objekt připojit OnConnectedToWS() Metoda, která je spuštěna po úspěšném připojení k WebSocket serveru. Předpokládá se, že klient tuto metodu přepíše svým kódem. ConnectToREX(callback, servername) Metoda speciálně určená pro připojení k OPC serveru v řídícím systému REX. Využívá k tomu výše zmíněné metody pro vytváření objektů, nastavení hodnoty a volání funkce. Popis parametrů: callback - Jméno funkce, která bude spuštěna po připojení OPC.NET API k OPC serveru řídícího systému REX. servername - Jméno, pod kterým bude server uložen ve wokspace. getitem(name) Metoda pro získání položky z proměnné workspace. 20
26 Implementace Datový formát JSON a serializace funkcí Popis parametrů: name - jméno položky nebo řetězec obsahující cestu k položce ve workspace getworkspace() Metoda, která vrací proměnnou workspace. SubscriptionCallback(itemsArray) Metoda, která slouží pro zpracování asynchronně čtených dat objektem OpcSimpleIO (viz. sekce 3.5). Předpokládá se, že uživatel přepíše metodu svým kódem. Popis parametrů: itemsarray - pole, které obsahuje asynchronně čtená data 3.4 Datový formát JSON a serializace funkcí Rozhraní definované v sekci 3.3 je dostatečné pro základní komunikaci s libovolným rozhraním v.net. Na druhou stranu není příliš uživatelsky přátelské, nebot uživatel musí rozhraní v.net znát do té míry, aby věděl jaká metoda se volá s jakými parametry. Pro vyřešení tohoto problému byl rozšířen datový formát JSON tak, aby kromě textových řetězců, číselných hodnot, boolean hodnot a hodnoty null umožňoval navíc použití funkcí jako hodnoty v páru klíč:hodnota (více o JSON v sekci 2.4). Rozšíření JSON formátu umožňuje zrcadlení objektu ze C# do JavaScriptu včetně vlastních veřejných metod. Samozřejmě tyto obrazy metod neprovádí stejné úkony, ale pouze ve svém nitru volají metodu Invoke() s příslušnými parametry. Tento způsob navíc umožňuje provádět typovou kontrolu parametrů už v JavaScriptu před zavoláním metody Invoke() a tím zabraňuje nadbytečné sít ové komunikaci, která by nastala v případě, kdy by se uživatel pokoušel zavolat metodu s nesprávnými parametry přímo prostřednictvím metody Invoke() a o chybném zvolení parametrů by se poté dozvěděl až po vyvolání výjimky v C# a její propagaci do JavaScriptu. Serializace funkcí umožňuje aby uživatel přistupoval k zvolenému API v.net pomocí obrazů funkcí samotného API a manipulovat tak s ním v JavaScriptu téměř stejně, jako by sním manipuloval v prostředí.net. 21
27 Implementace Datový formát JSON a serializace funkcí Příklady serializace metod Hlavičky metod v C#: public void bar(double d, object obj); public double foo(int i); public int foo(double d, string str); Obrazy funkcí v JavaScriptu: Obraz ukázkového objektu je ve workspace uložen pod jménem dummy. U přetížených metod se nejprve kontroluje počet parametrů obsažených v poli opcb_argsarray. Poté se kontrolují datové typy jednotlivých parametrů. Parametry mohou být bud null, nebo to mohou být řetězce obsahující deklaraci nového objektu jednoduchého datového typu (např.: int:5 ), nebo je parametrem jméno objektu, pod kterým je uložen ve workspace. V tom případě se objekt vyhledá ve wokspace a zkontroluje se jeho člen.dotnettype. Výjimku tvoří případ, kdy má být požadovaný argument typu object. V tom případě může být parametrem hodnota null nebo libovolná deklarace jednoduchého typu a nebo jméno libovolného objektu, který je definovaný ve workspace. Pokud jsou všechny parametry úspěšně zkontrolovány, je zavolána funkce Invoke(). Pokud se typová kontrola nevydaří, dojde k vyvolání výjimky. Obraz metody bar() function (js_callback, d, obj) { if (d === null d.split( : )[0] === "double" opcclient.getitem(d).dotnettype === "double") { if (obj === null obj.split( : ).length === 2 opcclient.getitem(obj)!== undefined ) { opcclient.invoke(js_callback, "dummy", "bar", "null", [d, obj]); return; } } throw "There is no bar method callable with given arguments!"; } 22
28 Implementace Datový formát JSON a serializace funkcí Obraz přetížené metody foo() function (js_callback, opcb_saveresultname, opcb_argsarray) { if (opcb_argsarray.length === 1) { if (opcb_argsarray[0] === null opcb_argsarray[0].split( : )[0] === "int" opcclient.getitem(opcb_argsarray[0]).dotnettype === "int") { opcclient.invoke(js_callback, "dummy", "foo", opcb_saveresultname, opcb_argsarray); return; } } if (opcb_argsarray.length === 2) { if (opcb_argsarray[0] === null opcb_argsarray[0].split( : )[0] === "double" opcclient.getitem(opcb_argsarray[0]).dotnettype === "double") { if (opcb_argsarray[1] === null opcb_argsarray[1].split( : )[0] === "string" opcclient.getitem(opcb_argsarray[1]).dotnettype === "string") { opcclient.invoke(js_callback, "dummy", "foo", opcb_saveresultname, opcb_argsarray); return; } } } throw "There is no foo method callable with given arguments!"; } 23
29 Implementace Zjednodušené API pro přístup k OPC 3.5 Zjednodušené API pro přístup k OPC Díky serializaci funkcí nemusí uživatel používat metodu Invoke() ze základního rozhraní aplikace, ale může volat požadované metody v C# prostřednictvím jejich obrazů v JavaScriptu. Může tak využívat API, ke kterému se aplikace připojuje, v jeho původní podobě. Další možností, která se uživateli nabízí, je vytvořit si v C# objekt, který bude požadované API libovolně zaobalovat a nadále se z JavaScriptu připojovat přímo k tomuto objektu. Tímto způsobem si uživatel může rozhraní, se kterým bude nadále pracovat, libovolně přizpůsobovat podle svých vlastních požadavků. Pro přístup k OPC DataAccess Serveru (jehož implementaci obsahuje řídící systém REX) byl vytvořen jednoduchý objekt, který si klade za cíl ulehčovat základní operace zápis a čtení dat včetně asynchronního čtení. Zjednodušené rozhraní - objekt OpcSimpleIO OpcSimpleIO(Opc.Da.Server server) Konstruktor objektu. parametr server - připojený server typu Opc DA. Pro vytvoření Opc serveru systému REX stačí zavolat metodu ConnectToREX() z rozhraní aplikace v JavaScriptu. Add R Item(string itemname) Metoda přidává položku pro čtení. parametr itemname - jméno položky, která má být přidána Remove R Item(string itemname) Metoda odebírá položku pro čtení. parametr itemname - jméno položky, která má být odebrána Add W Item(string itemname, object value) Metoda přidává položku pro zápis. parametry: itemname - jméno položky, která má být přidána value - hodnota, která má být zapsána na server 24
30 Implementace Zjednodušené API pro přístup k OPC Remove W Item(string itemname) Metoda odebírá položku pro zápis. parametr itemname - jméno položky, která má být odebrána Read() Metoda přečte položky přidané metodou Add R Item(). Write() Metoda zapisuje položky přidané metodou Add W Item(). ChangeState(string propertyname, object value) Metoda mění hodnoty podmínek pro asynchronní čtení. parametry: propertyname - jméno vlastnosti, jejíž hodnota má být změněna Některé možné hodnoty: Active - aktivace asynchronního čtení UpdateRate - perioda obnovování dat KeepAlive - průběžná aktualizace hodnot pro udržení spojení Deadband - určuje pásmo necitlivosti na změny dat SamplingRate - frekvence čtení dat value - hodnota, kterou má daná vlastnost nabývat SwitchSubscriptionState() Metoda aktivuje nebo deaktivuje asynchronní čtení. 25
31 Implementace Zpětné odezvy a chybové hlášky 3.6 Zpětné odezvy a chybové hlášky Aplikace je navržena tak, aby jakýkoliv požadavek z JavaScriptové strany vždy vyvolal odpověd nebo chybovou hlášku na straně C#, která je poté poslána zpět. Z důvodu snadného rozlišení odezev bylo každé přiděleno identifikační číslo, které se přidává ke zprávě s odezvou. Identifikační čísla odezev: 100x Množina odezev potvrzujících korektní průběh operací 1001 úspěšně přidán nový objekt do proměnné workspace 1002 úspěšné nastavení objektu na požadovanou hodnotu 1003 úspěšné vyvolání metody 1004 úspěšné odebrání objektu z workspace 1005 asynchronní upozornění na změnu hodnoty prvku OPC serveru 1006 úspěšné obnovení objektu 200x Množina běžných chyb 2001 neznámý příkaz 2002 neočekávaná výjimka 2003 pokus o přístup k objetu, který není ve workspace definovaný 2004 datový typ objektu nemohl být identifikován 2005 chybná deklarace generického datového typu 2006 chybná deklarace jednoduchého datového typu 300x Chyby vzniklé při vytváření nového objektu 3001 chybný tvar odeslaného požadavku 3002 snaha o zavolání neexistujícího konstruktoru 400x Chyby vzniklé při nastavování objektu na danou hodnotu 4001 chybný tvar odeslaného požadavku 4002 snaha o nastavení objektu na neexistující objekt 4003 pokus o nastavení objektu na hodnotu jiného datového typu 500x Chyby vzniklé při vyvolávání metod 5001 chybný tvar odeslaného požadavku 5002 volání neexistující metody 5003 volání metody se špatnými parametry 26
32 4 Testování výkonu aplikace 4.1 Reflexe vs. přímý přístup Reflexe musí být z principu své funkce (viz. sekce 2.2.2) znatelně pomalejší než přímý přístup. Otázkou je ale o kolik je pomalejší a do jaké míry to ovlivňuje výkon aplikace. V tabulce 4.1 jsou výsledky testování rychlosti volání metody. Testovací metoda neprováděla žádné operace, jen vracela svůj argument, kterým byl integer. Metoda byla volána krát. Z výsledků je patrné že samotné vyvolání metody reflexí je přibližně 100-krát pomalejší, přímé zavolání. V tabulkách 4.2 a 4.3 jsou výsledky porovnávání reflexivního a přímého přístupu při volání metod používaných pro zisk dat z OPC Serveru. Při prvním měření byla volána metoda Add_R_Item(string name) pro přidání prvku do skupiny pro čtená data, v druhém případě byla zvolena metoda Read(), která vyčítá data ze serveru. Metoda Read() byla vždy spouštěna 1000-krát s různými počty čtených prvků. Metoda Add_R_Item() byla spuštěna tolikrát, kolik prvků bylo přidáváno. V částech tabulek Přírůstek je v procentech vyčísleno o kolik je průběh metody včetně zavolání delší při použití metody Invoke() využívající reflexi než při přímém zavolání. Metoda Invoke() je vždy o něco pomalejší, ale maximální naměřený rozdíl o hodnotě navýšení rovné 32% není nijak závažný. Toto zpoždění navíc není způsobeno pouze reflexí, nebot metoda Invoke() provádí i další operace jako například manipulaci s proměnnou workspace nebo zisk hodnoty parametrů z řetězců obsahujících deklaraci jednoduchých datových typů a další. Ze získaných výsledků se dá vyvodit, že opoždění při zavolání metody reflexí je takřka zanedbatelné. Průběh a rychlost metod daleko více závisí na operacích, které metoda provádí, než na způsobu zavolání metody. doba trvání [s] Reflexe Přímé volání Tabulka 4.1: Výsledky testování rychlosti reflexe. 27
33 Testování výkonu aplikace Přenos dat doba trvání [s] Počet přidaných prvků Reflexe Přímé volání Přírůstek [%] Tabulka 4.2: Výsledky testování rychlosti volání metody Add_R_Item(). doba trvání [s] Počet čtených prvků Reflexe Přímé volání Přírůstek [%] < Tabulka 4.3: Výsledky testování rychlosti volání metody Read(). 4.2 Přenos dat Dalším faktorem, který ovlivňuje výkonnost aplikace je přenos dat přes WebSocket server (viz. sekce 2.3). Objem dat přenášených z prohlížeče na server je velmi malý, nebot obsahuje jen příkazy, které se mají na serveru vykonat. Naopak řetězce obsahující serializované objekty, které jsou posílány ze serveru prohlížeči, mohou být velice rozsáhlé. Rychlost přenosu byla testována po lokální síti. V reálných podmínkách bude samozřejmě výkonnost záviset na rychlosti připojení. Testována byla rychlost přenášení serializovaných objektů pro různé počty objektů. Přenos dat byl prováděn 1000-krát. Výsledky jsou zanesené v tabulce Serializace a deserializace objektů Další časově náročnou operací v běhu aplikace je nutnost serializace objektů do formátu JSON v C# a následná deserializace v JavaScriptu. Při 28
34 Testování výkonu aplikace Serializace a deserializace objektů Počet přenášených prvků doba trvání [s] Tabulka 4.4: Výsledky testování rychlosti přenášení dat ze serveru. testování byla serializace i deserializace provedena 1000krát. Pro serializaci nemohla být využita žádná knihovní funkce jazyka C#, protože aplikace využívá specificky upravený formát JSON rozšířený o funkce (viz. sekce 3.4). Proto byl implementován vlastní objekt pro serializaci, který využívá reflexi. Pro deserializaci je využívána funkce eval(), která je přirozenou součástí JavaScriptu. Používání této funkce není obecně příliš doporučováno, protože sebou nese jistá bezpečnostní rizika. V našem případě je ale tato funkce používána jen pro zpracování řetězců z vlastního serveru, takže k žádnému ohrožení dojít nemůže. Nemohli být využity žádné moduly pro JavaScript, které zajišt ují zpracování JSON formátu kvůli obsahu funkcí, což tyto moduly nepodporují. Výsledky měření lze nalézt v tabulce 4.5. doba trvání [s] Počet prvků Serializace Deserializace Tabulka 4.5: Výsledky testování rychlosti serializace a deserializace objektů 29
35 Testování výkonu aplikace Celkový výkon aplikace 4.4 Celkový výkon aplikace Lze předpokládat, že aplikace najde největší využití při vyčítání dat z OPC Serveru. Z toho důvodu byl celkový výkon aplikace testován na metodě Read(). Ze serveru byla 1000-krát čtena skupina dat a měřena byla doba od prvního odeslání požadavku na čtení dat z JavaScriptu až po poslední příjem dat. Testování bylo provedeno po lokální síti. Výsledky jsou v tabulce 4.6. V části frekvence čtení je přibližná hodnota v herzích, která odpovídá frekvenci s jakou je aplikace schopna číst dané množství prvků. Pro dosažení lepších výsledků je možné využít asynchronní čtení (viz. sekce 3.5), kde odpadá neustálé posílání příkazů z JavaScriptu a následné volání metody pro čtení. Počet čtených prvků doba trvání [s] Frekvence čtení [Hz] Tabulka 4.6: Výsledky testování rychlosti čtení dat z OPC serveru. 30
36 5 Ukázka Pro ukázku funkce aplikace byla vytvořena jednoduchá SVG grafika (viz. obr. 5.1) ve webovém prohlížeči v podobě hodin, která je řízena daty přijímanými prostřednictvím vytvořené aplikace z řídícího systému REX Control. Schéma zapojení algoritmu v systému REX lze nalézt v Příloze 5. Algoritmus probíhá s periodou 1s. Popis významných částí kódu webové stránky: Inicializace připojení - V prvním kroku, který je nutné provést před připojením k OPC Serveru, se překrývá metoda OnConnectedToWS(), která se vykoná po úspěšném připojení k WebSocket serveru, a vytvoří se připojení. Dalším krokem je vytvoření připojení k OPC serveru systému REX metodou ConnectToREX(). Po úspěšném připojení se vyvolá metoda addgroup(), ve které se vytváří objekt OpcSimpleIO konstruktorem, který přijímá OPC server jako svůj argument. opcclient.connect("ws://localhost:8181/"); opcclient.onconnectedtows = function () { opcclient.connecttorex("opcclient.addgroup", "rexserver"); } opcclient.addgroup = function () { opcclient.addtoworkspace("opcclient.initio", "group", "OPCBridge.OpcSimpleIO", "rexserver"); } Inicializace čtení a zápisu dat - Použitím metod Add_R_Item(), respektive Add_W_Item(), se inicializuje čtení, respektive zápis, položek na server. Zapisují se data, která odpovídají aktuálnímu času. opcclient.initio = function () { var date = new Date(); var group = opcclient.getitem("group"); group.add_r_item(null, "string:rex_clock.seconds.y"); 31
37 Ukázka } group.add_r_item(null, "string:rex_clock.minutes.y"); group.add_r_item(null, "string:rex_clock.hours.y"); group.add_w_item(null, "string:rex_clock.initseconds.ycn", "int:" + (date.getseconds() + 1)); group.add_w_item(null, "string:rex_clock.initminutes.ycn", "int:" + date.getminutes()); group.add_w_item(null, "string:rex_clock.inithours.ycn", "int:" + date.gethours()); group.write("opcclient.waitforinitrex", null); Čtení dat ze serveru - Ze serveru jsou přečtena data a následně ve funkci StartClock() jsou podle nich nastaveny hodiny v SVG grafice. Je aktivováno asynchronní čtení dat metodou SwitchSubscriptionState(). opcclient.initclock = function () { var group = opcclient.getitem("group"); group.switchsubscriptionstate(null); group.read("opcclient.startclock", null); } Spuštění algoritmu a asynchronní příjem dat - Po úspěšném nastavení hodin v SVG grafice je do skupiny dat pro zápis přidána položka rex_clock.start.ycn a je na ni zapsána hodnota true, čímž se spustí algoritmus v systému REX. Změnami hodnot v systému REX dochází ke generování asynchronních událostí, které o tom informují uživatele v JavaScriptu. Uživatel na tyto události reaguje překrytím metody SubscriptionCallback(). V našem případě se v této metodě manipuluje s ručičkami hodin. opcclient.startclock = function (itemsarray) {... group.add_w_item(null, "string:rex_clock.start.ycn", "bool:true"); group.write(null, null); } opcclient.subscriptioncallback = function (itemsarray) {... } 32
Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML
Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k
ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server
ADMINISTRACE POČÍTAČOVÝCH SÍTÍ OPC Server Funkce a využití v průmyslové automatizaci Jiří NOSEK 2011 Co je OPC Server? OPC = Open Process Control (původně OLE for Process Control) sada specifikací průmyslového
Teoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Microsoft Office 2003 Souhrnný technický dokument white paper
Microsoft Office 2003 Souhrnný technický dokument white paper Přehled inteligentních klientských aplikací založených na sadě Microsoft Office 2003 System Publikováno: Duben 2003 Shrnutí: Inteligentní klienti
Pokročilé Webové služby a Caché security. Š. Havlíček
Pokročilé Webové služby a Caché security Š. Havlíček Webové služby co se tím míní? Webová služba metoda komunikace mezi dvěma elektronickými zařízeními přes internet Typicky jsou pomocí rozhraní přístupné
Zajištění kvality služby (QoS) v operačním systému Windows
VŠB TU Ostrava Směrované a přepínané sítě Zajištění kvality služby (QoS) v operačním systému Windows Teoretické možnosti aplikace mechanismů zabezpečení kvality služby (QoS) v nových verzích MS Windows
Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller
Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller Gustav Hrudka Katedra měřicí a řídicí techniky, VŠB Technická univerzita v Ostravě, tř. 17. listopadu, 708 33
Komponenty v.net. Obsah přednášky
doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování
Sem vložte zadání Vaší práce.
Sem vložte zadání Vaší práce. České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Bakalářská práce Rezervační komponenta pro informační systém sportovního
1 - Úvod do platformy.net. IW5 - Programování v.net a C#
1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
typová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
Internet Information Services (IIS) 6.0
Internet Information Services (IIS) 6.0 V operačním systému Windows Server 2003 je obsažena i služba IIS v 6.0. Služba IIS poskytuje jak www server tak i některé další služby (FTP, NNTP,...). Jedná se
Programování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
WCF. IW5 - Programování v.net a C# WCF
IW5 - Programování v.net a C# Strana 1 Obsah přednášky Představení Konfigurace hosta Vygenerování klienta Několik názorných příkladů Strana 2 Co to je Windows Communication Foundation Náhrada za COM, DCOM,.NET
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.
Architektura COM doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Historie Component Object Model (COM)
UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/
UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok
Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich
Návrh aplikace Project Westpon Inteligentní simulátor budov Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich . Úvod.. Účel dokumentu Tento dokument má za účel detailně popsat návrh
Úvod Jednoduchá komunikace Sockety Konec. Programování v C# Síťová komunikace. Petr Vaněček 1 / 33
Programování v C# Síťová komunikace Petr Vaněček 1 / 33 Obsah přednášky Jednoduchá komunikace Sockety 2 / 33 System.Net Namespace poskytuje jednoduché rozhraní ke standardním protokolům Třída WebClient
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
OPC komunikace a Wonderware software
18. Wonderware konference R/SR - 2012 OPC komunikace a Wonderware software Technické tipy pro používání OPC s Wonderware produkty Jaroslav Jarka Obsah prezentace Co je OPC OPC a Wonderware produkty Nastavení
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta
Práce s velkými sestavami
Práce s velkými sestavami Číslo publikace spse01650 Práce s velkými sestavami Číslo publikace spse01650 Poznámky a omezení vlastnických práv Tento software a související dokumentace je majetkem společnosti
SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL
SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL SYSTEM FOR CONFIGURATION OF COMMUNICATION TERMINALS AND VISUALIZATION OF STATE INFORMATION FROM RAIL VEHICLES
Databázový systém Matylda
Databázový systém Matylda Návrh softwarového projektu Vývojový tým Předpokládaný počet řešitelů: 5 Vedoucí: Mgr. Martin Nečaský Ph.D. Motivace V současné době se mnoho nákupů odehrává v internetových obchodech.
CAL (CAN Application Layer) a CANopen
CAL (CAN Application Layer) a CANopen J. Novák České vysoké učení technické v Praze Fakulta elektrotechnická Katedra měření Průmyslový distribuovaný systém na bázi sběrnice CAN Pressure sensor Stepper
PŘÍRUČKA UŽIVATELE KOMUNIKAČNÍHO ROZHRANÍ
P-355333 Digitální záznamník ZEPAREX 559 PŘÍRUČKA UŽIVATELE KOMUNIKAČNÍHO ROZHRANÍ typ 559 P-355333 Předmluva Děkujeme vám, že jste si zakoupili ZEPAREX 559. Tato příručka uživatele komunikačního rozhraní
Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA
Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje
Projekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
Programování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
Vzdálené řízení modelu připojeného k programovatelnému automatu
Vzdálené řízení modelu připojeného k programovatelnému automatu Remote control of the model connected to Programmable Logic Controller Martin Malinka Bakalářská práce 2009 UTB ve Zlíně, Fakulta aplikované
HP JetAdvantage Management. Oficiální zpráva o zabezpečení
HP JetAdvantage Management Oficiální zpráva o zabezpečení Copyright a licence 2015 Copyright HP Development Company, L.P. Kopírování, úpravy nebo překlad bez předchozího písemného souhlasu jsou zakázány,
BankKlient. FAQs. verze 9.50
BankKlient FAQs verze 9.50 2 BankKlient Obsah: Úvod... 3 Instalace BankKlient možné problémy... 3 1. Nejsou instalovány požadované aktualizace systému Windows... 3 2. Instalační program hlásí, že nemáte
Č á s t 1 Příprava instalace
Obsah Úvod 31 Seznámení se s rodinou produktů 31 Co je nového v systému Windows Server 2003 32 Práce s touto příručkou 32 Obsah této příručky 33 Obsah disku CD-ROM 34 Komunikujte s námi 35 Část 1 Příprava
ADDAT HEAT Control - Návod k použití - verze 2.07 (firmware 1.44)
- ADDAT HEAT Control - Návod k použití - verze 2.07 (firmware 1.44) ADDAT s.r.o. Májová 1126 463 11 Liberec 30 telefon: fax: http: e-mail: 485 102 271 485 114 761 www.addat.cz addat@addat.cz Obsah: 1.
Tvorba informačních systémů
Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních
DÁLKOVÁ SPRÁVA ŘÍDICÍCH SYSTÉMŮ V PROSTŘEDÍ CONTROL WEB 5
1 DÁLKOVÁ SPRÁVA ŘÍDICÍCH SYSTÉMŮ V PROSTŘEDÍ CONTROL WEB 5 VŠB - Technická Univerzita Ostrava, Katedra automatizační techniky a řízení Příspěvek popisuje způsoby přístupů k řídicím systémům na nejnižší
PREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
INTEGRACE IS DO STÁVAJÍCÍ HW A SW ARCHITEKTURY
INTEGRACE IS DO STÁVAJÍCÍ HW A SW ARCHITEKTURY Dušan Kajzar Slezská univerzita v Opavě, Filozoficko-přírodovědecká fakulta, Bezručovo nám. 13, 746 00 Opava, e-mail: d.kajzar@c-box.cz Česká pošta, s.p.,
POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE
POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE INTERPI Interoperabilita v paměťových institucích Program aplikovaného výzkumu a vývoje národní kulturní identity (NAKI) (DF11P01OVV023) Zpracovali: Marie
Úvod Virtuální kanál TCP Datagramová služba UDP URL TCP, UDP, URL. Fakulta elektrotechnická
TCP, UDP, Katedra počítačů Fakulta elektrotechnická 10. května 2007 Přehled 1 2 TCP a sokety obecně TCP klient TCP server 3 UDP klient UDP server 4 Sít ová spojení nad sít ovou vrstvou (typicky protokol
KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.
KAPITOLA 3 Architektura aplikací na frameworku Rails V této kapitole: modely, pohledy, řadiče. 58 Část I: Začínáme Jedna ze zajímavých vlastností frameworku Rails spočívá v tom, že klade docela závažná
Delphi podstata, koncepce a metody MDI aplikace
Delphi podstata, koncepce a metody MDI aplikace Bc. Tomáš Selucký, Ústav statistiky a operačního výzkumu, Provozně ekonomická fakulta, Mendelova zemědělská a lesnická univerzita v Brně, selucky@selucky.com
IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE. Jiří Vaněk, Jan Jarolímek
IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE Jiří Vaněk, Jan Jarolímek Anotace: Příspěvek se zabývá hlavními trendy rozvoje programů pro
Statistica, kdo je kdo?
Statistica, kdo je kdo? Newsletter Statistica ACADEMY Téma: Typy instalací Typ článku: Teorie Někteří z vás používají univerzitní licence, někteří síťové, podnikové atd. V tomto článku Vám představíme,
Šablonovací systém htmltmpl vypracoval: Michal Vajbar, 2007. Šablonovací systém htmltmpl
Šablonovací systém htmltmpl 1 Představení šablonovacích systémů Každý, kdo se zabývá tvorbou webových aplikací dříve nebo později zjistí, že je vhodné oddělovat obsah aplikace od jejího vzhledu. Pokud
Filr 2.0 Uživatelská příručka k aplikaci Filr Web. Únor 2016
Filr 2.0 Uživatelská příručka k aplikaci Filr Web Únor 2016 Právní vyrozumění Informace o právních upozorněních, ochranných známkách, prohlášeních o omezení odpovědnosti, zárukách, omezeních exportu a
DATA ARTICLE. AiP Beroun s.r.o.
DATA ARTICLE AiP Beroun s.r.o. OBSAH 1 Úvod... 1 2 Vlastnosti Data Article... 1 2.1 Požadavky koncových uživatelů... 1 2.2 Požadavky na zajištění bezpečnosti a důvěryhodnosti obsahu... 1 3 Implementace
Programování v jazyku C# II. 9.kapitola
Programování v jazyku C# II. 9.kapitola Reflexe Způsob získání informací o software za běhu Umožňuje získat z.net assembly info o jmenných prostorech třídách, strukturách a rozhraních metodách a datech
RMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
VNITŘNÍ POKYN Č. 3/2004 PROVOZNÍ ŘÁD POČÍTAČOVÉ SÍTĚ
MĚSTSKÝ ÚŘAD Masarykovo nám. 189, 766 01 Valašské Klobouky VALAŠSKÉ KLOBOUKY VNITŘNÍ POKYN Č. 3/2004 PROVOZNÍ ŘÁD POČÍTAČOVÉ SÍTĚ 1. ÚČEL Směrnice Provozní řád počítačové sítě stanovuje pravidla pro užívání
Manuál k aplikaci FieldGIS v.2.27
Manuál k aplikaci FieldGIS v.2.27 Petr Pala Copyright 2008 CENIA, laboratoř GIS 1. Úvod 1. Systémové požadavky 2. Části základního okna aplikace 1. Menu 1.1. File 1.2. Tools 1.3. Hlavní lišta 2. Editor
Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework
Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework úvod, historie, základy.net framework, programovací jazyky, vývojové prostředky Úvod strana 2 Cíl předmětu Seznámit se s vývojem aplikací
Principy operačních systémů. Lekce 7: Souborový systém
Principy operačních systémů Lekce 7: Souborový systém Souborový systém Souborový systém (anglicky file system) je označení pro způsob organizace dat ve formě souborů (a většinou i adresářů) tak, aby k
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
Název Popis Lhůta. dne Odmítnuté platby Zobrazení, tisk a export seznamu odmítnutých plateb. Informace připraveny k vyzvednutí z bankovního
PŘEHLED SLUŽEB A PARAMETRŮ ELEKTRONICKÉHO BANKOVNICTVÍ A) PŘEHLED SLUŽEB A PARAMETRŮ - ELTRANS 2000 Přehled pasivních služeb Eltrans 2000 Informace o zůstatcích Zobrazení, tisk a export Informací o zůstatcích
Elektronická pošta... 3 Historie... 3 Technické principy... 3 Komunikační protokoly... 3 MBOX... 4 Maildir... 4 Jak funguje e-mail... 5 POP3...
Elektronická pošta Elektronická pošta... 3 Historie... 3 Technické principy... 3 Komunikační protokoly... 3 MBOX... 4 Maildir... 4 Jak funguje e-mail... 5 POP3... 5 IMAP... 6 Výhody a nevýhody IMAP...
Technologie JavaBeans
Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent
Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Periferní zařízení, cvičení IPZ Analýza komunikace na sběrnici USB
Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Periferní zařízení, cvičení IPZ Analýza komunikace na sběrnici USB Úloha č. 2. Zadání: 1. Seznamte se s principy komunikace na sériovém
a autentizovaná proxy
Mendelova univerzita v Brně Virtuální privátní síť a autentizovaná proxy Verze: 1.2 Datum: 5. dubna 2011 Autor: Martin Tyllich, Aleš Vincenc, Stratos Zerdaloglu 2 Obsah 1 Připojení pomocí proxy serveru
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha
OSGi Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů
Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,
KIV/PIA 2013 Jan Tichava
KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise
Počítačové sítě. Miloš Hrdý. 21. října 2007
Počítačové sítě Miloš Hrdý 21. října 2007 Obsah 1 Pojmy 2 2 Rozdělení sítí 2 2.1 Podle rozlehlosti........................... 2 2.2 Podle topologie............................ 2 2.3 Podle přístupové metody.......................
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Uživatelem řízená navigace v univerzitním informačním systému
Hana Netrefová 1 Uživatelem řízená navigace v univerzitním informačním systému Hana Netrefová Abstrakt S vývojem počítačově orientovaných informačních systémů je stále větší důraz kladen na jejich uživatelskou
Nastavení DCOM. Uživatelský manuál
Nastavení DCOM Uživatelský manuál Obsah Úvod... 2 Nastavení DCOM pro počítač Hostitel... 3 Operační systém Windows XP... 3 Nastavení vlastností DCOM na Windows XP... 3 Rozšířená nastavení DCOM na Windows
Telekomunikační sítě Protokolové modely
Fakulta elektrotechniky a informatiky, VŠB-TU Ostrava Telekomunikační sítě Protokolové modely Datum: 14.2.2012 Autor: Ing. Petr Machník, Ph.D. Kontakt: petr.machnik@vsb.cz Předmět: Telekomunikační sítě
HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz
HTTP protokol Zpracoval : Petr Novotný novotny0@students.zcu.cz HTTP protokol - úvod zkratka z Hyper-Text Transfer Protocol možnost přenášet jakákoliv data (soubor, obrázek, výsledek dotazu) obvykle provozován
Obrázek 6.14: Prohlížec nápovedy
JavaHelp Základní popis systému JavaHelp Soucástí vetšiny interaktivních aplikací je nápoveda (help) aplikace v Jave nejsou výjimkou. Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené
Malý průvodce Internetem
Malý průvodce Internetem Úvod Toto povídání by mělo sloužit jako užitečný zdroj informací pro ty, co o Internetu zatím mnoho neví nebo o něm jen slyšeli a neví, co si pod tím slovem představit. Klade si
Jazyk C++ II. Výjimky
Jazyk C++ II Výjimky AR 2013/2014 Jazyk C++ II Funkce abort Dříve byl obvyklý způsob zavolat metodu abort(). Metoda provádí okamžitě: Vyprázdnění vyrovnávací paměti, Ukončení celého programu, Vrátí číslo
Téma 5. Ovladače přístrojů Instrument Drivers (ID)
Cíl a užitek z ID: Téma 5 Ovladače přístrojů Instrument Drivers (ID) ID jsou vrstvou nad tradičními příkazy pro ovládání přístrojů (SCPI) message based obsahují vyšší (high level) softwarové funkce, které
Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.
Přednáška 5 1. Stručný přehled vývoje html H T m l (HTML...XML... html5), (Web API, JSON, REST,AJAX) 2. Některé související IT IP adresa, doménová adresa, name servery JavaScritp, Jquery, Angular PHP vs
WINDOWS 8 APLIKACE PRO PREZENTACI DAT Z WEBOVÉHO API
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS WINDOWS 8 APLIKACE
Instalační manuál aplikace
Instalační manuál aplikace Informační systém WAK BCM je softwarovým produktem, jehož nástroje umožňují podporu procesního řízení. Systém je spolufinancován v rámci Programu bezpečnostního výzkumu České
Kolaborativní aplikace
Kolaborativní aplikace Michal Máčel Vema, a. s. Okružní 3a, 638 00 Brno - Lesná, macel@vema.cz Tomáš Hruška Fakulta informačních technologií Vysokého učení technického v Brně, Ústav informačních systémů,
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
Webové služby. Martin Sochor
Webové služby Martin Sochor Webové služby způsob komunikace dvou aplikací přes Web binární zprávy (CORBA) blokovány proxy servery a firewally masivní využití XML protokol SOAP + jazyk pro popis služeb
E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH
E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH ANDREA BAREŠOVÁ A KOL. Hewlett-Packard Abstrakt: e-education je název znamenající zapojení informačních technologií do výuky. S tímto pojmenováním přišla společnost
Čipové karty Lekařská informatika
Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
Tvorba aplikace typu klient/server pomocí Windows Communication Foundation
Tvorba aplikace typu klient/server pomocí Windows Communication Foundation Petr Kafka Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Tato bakalářská práce se bude zabývat využitím programovacího
Workmonitor. Servisní návod. 24. června 2014 w w w. p a p o u c h. c o m
Servisní návod 24. června 2014 w w w. p a p o u c h. c o m Workmonitor Katalogový list Vytvořen: 18.5.2009 Poslední aktualizace: 24.6 2014 09:20 Počet stran: 11 2014 Adresa: Strašnická 3164/1a 102 00 Praha
MyIO - webový komunikátor
MyIO - webový komunikátor Technická příručka verze dokumentu 1.0 FW verze modulu 1.4-1 - Obsah 1 MyIO modul... 3 2 Lokální webové rozhraní... 3 2.1 Start, první přihlášení... 3 2.2 Home úvodní strana MyIO...
20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
Problém identity instancí asociačních tříd
Problém identity instancí asociačních tříd Autor RNDr. Ilja Kraval Ve školeních a také následně po jejich ukončení se stále častěji objevují dotazy, které se týkají tzv. identity instancí asociační třídy.
Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky
Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
APS Administrator.OP
APS Administrator.OP Rozšiřující webový modul pro APS Administrator Přehled přítomnosti osob v oblastech a místnostech Instalační a uživatelská příručka 2004 2013,TECH FASS s.r.o., Věštínská 1611/19, Praha,
X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.
X33EJA Web Services Martin Ptáček, KOMIX s.r.o. ptacek@komix.cz Copyright 2007 KOMIX Copyright s.r.o. 2007 KOMIX s.r.o. 1. Obsah Historie Co jsou Web Services? Co je to SOA? JAX-WS (Java API for XML Web
Uživatelský manuál. Kerio Technologies
Uživatelský manuál Kerio Technologies C 1997-2003 Kerio Technologies. Všechna práva vyhrazena. Datum vydání: 24. listopadu 2003 Aktuální verze produktu: Kerio Personal Firewall 4.0.8. Změny vyhrazeny.
Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/
Technologie Java Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Trocha historie Java vznikla v roce 1995 jak minimalistický programovací jazyk (211 tříd). Syntaxe vycházela z C/C++. V
RESTful API TAMZ 1. Cvičení 11
RESTful API TAMZ 1 Cvičení 11 REST Architektura rozhraní navržená pro distribuované prostředí Pojem REST byl představen v roce 2000 v disertační práci Roye Fieldinga, zkratka z Representional State Transfer
Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace
Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 18.4.2016 Webové aplikace JSON, AJAX/AJAJ, zpracování na straně JS, JSONP, proxy, REST strana 2 JSON objekt JavaScript Object Notation { "nazev": hodnota, "cislo":
Nové jazykové brány do Caché. Daniel Kutáč
Nové jazykové brány do Caché Daniel Kutáč O čem budeme mluvit.net T/SQL Perl Python MultiValue Basic Téma.NET provider .NET Provider Co lze již dnes Factory / VisM ODBC.NET Web Services Factory a VisM
InTouch 8.0 Subsystém distribuovaných alarmů
InTouch 8.0 Subsystém distribuovaných alarmů Pavel Průša Pantek (CS) s.r.o. Strana 2 Obsah Úvod Úvod Subsystém distribuovaných alarmů Ukládání alarmů do relační databáze Zobrazování, potvrzování a potlačování
SPRÁVA ZÁKLADNÍCH REGISTRŮ PODMÍNKY PRO PŘIPOJENÍ AGENDOVÝCH INFORMAČNÍCH SYSTÉMŮ DO ISZR. verze 2.00
SPRÁVA ZÁKLADNÍCH REGISTRŮ PODMÍNKY PRO PŘIPOJENÍ ORGANIZAČNÍ SLOŽKA STÁTU AGENDOVÝCH INFORMAČNÍCH SYSTÉMŮ DO ISZR VÝROČNÍ ZPRÁVA verze 2.00 ZA ROK 2010 Na Vápence 14 1 www.szrcr.cz OBSAH 1. Úvod... 8