Configuration Patterns

Slides:



Advertisements
Podobné prezentace
Hotel Tatra, Velké Karlovice 23. – 25. dubna 2007 S4U – Seminář o Univerzitním informačním systému 1 Osobní management Tomáš Procházka.
Advertisements

Strategické řízení školy s využitím sebehodnocení školy dle modelu CAF RNDr. Hana Žufanová.
Datové schránky v praxi Lukáš Jelínek
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Praha6.cz Administrace portálu. Struktura informací Hlavní strom  Stránky se statickým textem automatické oživení ( , web, tel., RMČ/ZMČ) textové.
Výstupy projektu „Podpora plánování rozvoje sociálních služeb v JMK III.“ Benchmarking sociálních služeb Mgr. Marián Svoboda AUGUR Consulting s.r.o.
Jak lze využít infrastrukturu CzechPOINT v rámci úřadu Mgr. Jarmila Šmardová
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Prostředí internetu Číslo DUM: III/2/VT/2/2/27 Vzdělávací předmět: Výpočetní technika Tematická oblast:
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Úvod do Delphi - 1.hodina OB21-OP-EL-KON-DOL-M-4-006A Orbis pictus 21. století.
Seminář na MZ Bezpečnost zdravotních služeb - současná priorita MZ MUDr. Markéta Hellerová Ministerstvo zdravotnictví.
Programování v jazyce C++ Dědičnost a polymorfismus.
Název školyZákladní škola praktická Rožnov pod Radhoštěm Číslo projektuCZ / / Číslo materiáluVY_32_INOVACE_225 AutorMgr. Romana Rybiařová.
Snímek 1 PowerPoint2OP381 Manažerská informatika 1 2OP381 Manažerská informatika 1 Microsoft PowerPoint 2016 – 2. část.
Zlepšení podmínek pro vzdělávání na středních školách Operačního programu Vzdělávání pro konkurenceschopnost Název a adresa školy: Integrovaná střední.
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor:Ing. Radoslava Benová Název materiálu:
Principy Základních registrů Ing. Ondřej Felix, CSc.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Síťové operační systémy OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Software Licence a distribuce Karel Nymsa Dotkněte se inovací CZ.1.07/1.3.00/
Systém vzájemného sdílení mezi občanem a obcí
model fungování a praxe
PROJEKT OP LZZ „IMPLEMENTACE AGE MANAGEMENTU V ČR“ CZ /5. 1
Výukový materiál zpracován v rámci projektu
STANDARDY KVALITY V SOCIÁLNÍCH SLUŽBÁCH „SKSS“
Analýza kvality života aneb proč, jak a pro koho …
Zkušenosti s implementací vybraných požadavků ISO 9001:2015
Vnitropodniková komunikace ve vybraném subjektu
COM – Práce s objektovým modelem jiné aplikace
Evaluace předmětů studenty (Anketky)
Rozhodování 1.
Dopravní značení pro chodce VY_32_INOVACE_5A_13
Webová aplikace MS OLOMOUC.
STANDARDY KVALITY V SOCIÁLNÍCH SLUŽBÁCH „SKSS“
AUTOR: Kateřina Křížová NÁZEV: VY_32_INOVACE_05_09 sociální role
State 1.
Algoritmizace - opakování
Prvky v síti Střední škola hotelová a služeb Kroměříž Název školy
Algoritmizace - opakování
P2 MARKETINGOVÉ PROSTŘEDÍ
Financováno z ESF a státního rozpočtu ČR.
Název školy Základní škola Šumvald, okres Olomouc Číslo projektu
Databáze MS ACCESS 2010.
Webová aplikace MS2014+ Ing. Josef Šetek
Cesta k flexibilitě J.Skorkovský ESF MU
Abstract Factory.
Střední odborná škola a Střední odborné učiliště, Hradec Králové, Vocelova 1338, příspěvková organizace Registrační číslo projektu: CZ.1.07/1.5.00/
První zkušenosti z implementace Václav Kašpar
Informatika pro ekonomy přednáška 8
GDPR: ochrana osobních údajů
MU002 Informatika II Základy algoritmizace 1/13
Materiál byl vytvořen v rámci projektu
Remote login.
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Název školy: Autor: Název: Číslo projektu: Název projektu:
Platforma pro personalizaci standardizovaných výukových materiálů
Kde najdu informaci o teplotě tání a varu různých látek?
Přednášky z Distribuovaných systémů
Kooperace a kolaborace v online prostředí
Nádherné prezentace navrhnete a předvedete snadno a s jistotou.
Analýza informačního systému
Práce psychologa Úřadu s dítětem v procesu mezinárodního osvojení Brno, Mgr. Ondřej Bouša.
Vzdělávání jako hlavní složka řízení lidských zdrojů
Informační systém základních registrů
Seminář pro žadatele pro výzvu 082
Hromadné dokumenty opakující se pro kolekci osob
Bridge.
Digitální učební materiál
Class Diagrams.
Transkript prezentace:

Configuration Patterns Service Access and Configuration Patterns 1

Service Access and Configuration Patterns WrapperFacade Component Configurator Interceptor Extension Interface 2

Service Access and Configuration Patterns Vlastnosti, cíle Dynamická změna funkcionality bez rekompilace Snadné přidávání, odebírání a konfigurace komponent Zvýšení přenositelnosti Odstínění od networkingu 3

Wrapper Facade - Cíle Zvýšit úroveň abstrakce Funkce převést na třídy a rozhraní Jednotné rozhraní na všech platformách => Zapouzdřit práci s vlákny, zámky, sokety, GUI.. 4

Wrapper Facade Zakrývá low-level rozhraní Zakrývá komplexní vztahy mezi objekty Wrapper Facade Zakrývá low-level rozhraní Low-level API Nízká úroveň abstrakce (nebývá objektové) Nekompatibilita mezi platformami Náročné na použití Náchylné na chyby 5

Wrapper Facade – Jak na to Seskupit funkce pracující se stejnými datovými strukturami Identifikovat průnik funkcionalit na podporovaných platformách Skupiny + průniky = třídy wrapper fasády Ponechat přístup k nízkorúrovňovým datovým strukturám (handle, ukazatel) 6

Wrapper Facade – Příklad 7

Wrapper Facade – v praxi Použití v praxi MFC, OpenGL, Qt, WPF 8

Component Configurator - motivace Změna implementace znamená restart celého programu Co když program musí běžet 24/7 ? Program běží v různých prostředích V každém potřebuje jinou konfiguraci 9

Component Configurator , opětovné spuštění, terminace Životní cyklus komponent Inicializace, zastavení, opětovné spuštění, terminace Component configurator které se mohou za běhu měnit Spravuje komponenty a jejich životní cykly, zastavení Component repository Udržuje seznam používaných komponentzastavení 10

Component Configurator - diagram , opětovné spuštění, terminace 11

Component Configurator 12

Component Configurator , opětovné spuštění, terminace Výhody Dynamická konfigurace Centrální správa komponent Modularita Nevýhody Runtime overhead Zvyšuje se komplexita 13

Component Configurator - použití , opětovné spuštění, terminace Použití Java applets Plug and play Windows Service Control Management(SCM) 14

Interceptor - Motivace Rozšiřitelnost rozsáhlého systému (frameworku) o nové služby Řešení: Monolitický systém obsahující vše? Velké, neflexibilní řešení Neznáme všechny potřeby klientů v době vývoje Úplná otevřenost systému? Nebezpečné Složité pro uživatele Jiné řešení: Nadefinovat uvnitř systému „body“, ve kterých uživatel může ovlivnit a rozšířit chování systému. 15

Interceptor - Motivace Rozšiřitelnost rozsáhlého systému (frameworku) o nové služby Řešení: Monolitický systém obsahující vše? Velké, neflexibilní řešení Neznáme všechny potřeby klientů v době vývoje Úplná otevřenost systému? Nebezpečné Složité pro uživatele Jiné řešení: Nadefinovat uvnitř systému „body“, ve kterých uživatel může ovlivnit a rozšířit chování systému. 16

Interceptor - Idea Přidávání služeb do systému na přesně určených místech Místo = událost ( příjem zprávy, zpracování dotazu, … ) Služba = callback ( logování, šifrování, … ) Částečné otevření a zpřístupnění vnitřní funkcionality systému 17

Interceptor – Struktura 2

Interceptor – Struktura 1 Concrete framework Základní služby Události a příslušné dispatchery v klíčových místech Interceptor Je příslušný události nebo skupině událostí Definuje rozhraní pro integraci vnějších služeb Concrete interceptor Implementuje rozhraní interceptoru Používá context object pro komunikaci s frameworkem Dispatcher Umožnuje registraci konkrétních interceptorů Zavolá metody registrovaných interceptorů při události Context object Pozorování vnitřního stavu frameworku („Accessor“) Ovlivňování chování frameworku („Mutator“) Application Implementuje konkrétní interceptory a registruje je pomocí dispatcherů

Interceptor – Návrh systému Změna systému na stavový automat Přechod mezi stavy – potenciální místo pro událost Definování rozhraní pro callback zpracování události Obecný interceptor Definování rozhraní pro přidávání a odebíraní interceptorů Dispatcher pro každou událost Vytvoření kontextu pro událost: Informace o události a vnitřním stavu systému Navíc modifikování chování systému Vztah událost – callback je 1 ku n Dispatcher rozhoduje o způsobu a pořadí zavolání callbacků. 20

Interceptor - Výsledek Výhody: Rozšiřitelnost a flexibilita Bez nutnosti znát nebo měnit vnitřní strukturu systému Přehlednost a jednoduchost pro uživatele Nevýhody: Výzva pro návrháře Počet událostí a místa pro ně Počet dispatcherů Možnosti kontextů Chybné interceptory Kaskády událostí a zavolání interceptorů Deadlock

Interceptor – Varianty, příklady použití Interceptor proxy aka Delegator Single interceptor per Dispatcher Interceptor factory Místo registrace interceptorů pomocí Dispatcherů konkrétní framework registruje interceptory pomocí klientem dané továrny Implicit Interceptor Registration Například registrace všech Interceptorů, nalezených v .dll v nějaké složce Příklady použití CORBA COM Pluginy do webových prohlížečů

Interceptor – vztahy k jiným NV Template method Lze chápat jako jednoduchou variantu Concrete Frameworku, kde jednotlivé kroky algoritmu jsou Interceptory Chain of Responsibility Definuje handlery, které lze chápat jako Interceptory Na rozdíl od NV Interceptor, zpracování skončí když nějaký handler opravdu zpracuje požadavek Observer Lze chápat jako variantu Interceptoru, kde Context object obsahuje jenom informací o události, nikoliv o vnitřním stavu frameworku

Extension interface - Motivace Evoluce rozhraní komponent V počátcích vývoje je těžké předpovědět, jak a kam se systém rozroste Přidávání funkcionalit – přehuštění rozhraní metodami Těžké udržovat zpětnou kompatibilitu Přidávání funkcionalit do rozhraní porušuje funkčnost starých verzí klientského kódu, je potřeba rekompilace Ovšem většinou nové featury opravdu potřebuje jenom několik aplikací 24

Extension interface - Idea Rozdělit jedno velké rozhraní na vícero malých Přidávání funkcí = definice dalšího rozhraní Jedna komponenta implementuje několik rozhraní Update komponenty = implementace dalšího rozhraní Výběr rozhraní pro přístup ke komponentě je na uživateli Ovšem přístup ke komponentě přímo je zakázán – porušuje zpětnou kompatibilitu Jednotný přístup ke všem rozhraním

Extension interface – Struktura 1 Component Implementuje všechna rozhraní, která podporuje Root interface Rozhraní, které musí implementovat každá komponenta Přístup k ostatním rozhraním (třeba pomocí identifikátorů rozhraní) Component factory Definuje funkcionalitu pro vytváření instancí komponent Vrací „root interface“ (klientský kód by neměl pracovat s komponentou přímo) Extension interface Definuje specifickou funkcionalitu Zároveň hraje roli „root interface“ Client Používá „component factory“ pro vytváření komponent Přístup ke komponentě pouze přes specifická rozhraní

Extension interface – Struktura 2

Extension interface – Implementace Multiple inheritance Třída komponenty se dědí od všech potřebných extension interface Výhodné pří použiti objektově orientovaných jazyku – downcasting může hrát roli Component Factory Nested classes Extension interface jsou implementovány uvnitř komponenty jako vnořené třídy (Singleton) Separate interface classes. Extension interface jsou implementovány jako zvláštní třídy Komunikace s třídou komponenty pomocí NV Bridge nebo Adapter

Extension interface - Výsledky Výhody Velmi snadná rozšiřitelnost Separation of concern Každé rozhraní hraje specifickou roli Nevýhody Runtime overhead Složitost návrhu Závisí na použité metodě a jazyce Složitost používání Uživatel musí získat referenci na extension interface před použitím

Extension interface – varianty, příklady Extension object Varianta bez použití Component factory pro objektově orientované jazyky Distributed extension interface Vzdálený server obsahuje implementaci komponent Extension interface with access control Klienti mohou mít různá oprávnění na použití rozhraní Asymmetric extension interface Jedno speciální rozhraní pro navigaci mezi rozhraními Příklady Microsoft COM/COM+ CORBA component model

Shrnutí Wrapper Facade Component configurator Interceptor Zapouzdřuje (neobjektové) low-level API Zvyšuje přenositelnost, robustnost Snižuje komplexitu programu Component configurator Runtimové přilinkování/odlinkování implementací svých komponent Vhodné pro online aplikace, které musí běžet pořád Interceptor Dynamické přidání funkcionality jako reakci na události Extension Interface Zabraňuje přehuštění rozhraní velkým množstvím metod Výběr rozhraní pro přístup ke komponentě je na uživateli Jednotný přístup ke všem rozhraním

Otázky