De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving Yves Vandewoude Peter Rigole.

Verwante presentaties


Presentatie over: "Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving Yves Vandewoude Peter Rigole."— Transcript van de presentatie:

1 Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving Yves Vandewoude Peter Rigole

2 Overzicht Concepten van SEESCOA Implementatie van een SEESCOA component Hoe gaat het in zijn werk at runtime? Voorbeeldje op Draco Draco architectuur  Core Modules  Messageflow  Extension Modules Voorbeeld van een extension module: distribution Open Issues / Future work

3 SEESCOA Componenten methodologie met als concepten:  Component Blueprint Instance  Port Blueprint Instance  Connector camera Motion detector switch Video recorder

4 Draco Implementatie van SEESCOA componenten .component file (en eventueel.java files) Templates zullen worden gegenereerd met de CCOM tool van David Urting  De.component files worden gepreprocessed en omgezet naar.java files  Uiteindelijke resultaat van is een.jar die door Draco kan worden geinstantieerd

5 Draco Voorbeeld van.component file:  NumberGenerator & NumberDisplay package components.numberdisplay; component NumberDisplay { portgroup Input 1 { message Number() { System.out.println("Received number: " + $$inmessage::value); } NumberDisplay:

6 Implementatie van Componenten component NumberGenerator{ protected int $delay = 1000;... multicastport Value 10; portgroup Control 1 { message start() {... $delay = Integer.parseInt((String) $$inmessage::timer); $ex = new Execution(NumberGenerator.this); new Thread($ex, "Execution").start(); } message stop() {... }} NumberGenerator:

7 Implementatie van Componenten class Execution implements Runnable {... private NumberGenerator $ng; Execution(NumberGenerator ng) { $ng = ng; } public void run() {... Integer valueToSend = new Integer($rnd.nextInt(100)); message mNew = Number; mNew::value = valueToSend... $ng.Value..mNew; } }}} NumberGenerator (2):

8 Implementatie van Componenten class Execution implements Runnable {... private NumberGenerator $ng; Execution(NumberGenerator ng) { $ng = ng; } public void run() {... Integer valueToSend = new Integer($rnd.nextInt(100)); message mNew = Number; mNew::value = valueToSend... $ng.Value..mNew; } }}} NumberGenerator (2):

9 At Runtime Start Draco

10 At Runtime Load Components

11 At Runtime Connect Components

12 At Runtime Start Components

13 At Runtime Start Components

14 Draco Architectuur

15 Core Modules worden gekozen at startup time  Voor zeer ingrijpende aanpassingen kan een custom core module worden geschreven  Zijn niet wijzigbaar at runtime  Profielen laten toe makkelijk te switchen tussen verschillende systemen: CoreModules.xml Mogelijke toepassingen:  Totaal andere component structuur  Andere scheduler

16 Draco Startup Profiles draco.core.componentmanager.defaultcomponentmanager.DefaultComponentManager draco.core.scheduler.defaultscheduler.DefaultScheduler draco.core.modulemanager.defaultmodulemanager.DefaultModuleManager draco.core.connectormanager.defaultconnectormanager.DefaultConnectorManager draco.core.messagemanager.defaultmessagemanager.DefaultMessageManager

17 Draco Message Delivery: Concept

18 Draco Message Delivery: Implementation Delivery Chain: Sending Chain:

19 Draco Extensie Modules Een extensiemodule laat toe om de functionaliteit van Draco uit te breiden. Vb:  Dynamic Updating  Distributie  CRuMB: Contract negotiation Kunnen dynamisch worden ingeladen en verwijderd in Draco Koppelen zich aan Draco door:  MessageHandlers toe te voegen om berichten te onderscheppen  Zich te registreren bij de coremodules via Publish-Subscribe mechanisme  Geen Controlemechanisme: een module heeft volledige toegang tot de interne werking van Draco en wordt als dusdanig vertrouwd (itt componenten die worden afgeschermd)

20 Draco Distribution Module (DM) Concepts:  Connection  Proxy component (very light-weight component) Completely transparant for the Draco Core  Simply use proxy components as ordinary components  Creating connections: DM monitors creation DM automatically creates equivalent connection on the other side DM creates necessary proxy components on other side if necessary

21 Transparent proxy components camera Motion detector switch Video recorder Video Recorder proxy Switch proxy Connection

22 Transparent Ad Hoc Routing host 1 host 2 host 3 camera switchSwitch proxy Camera proxy Switch proxy Camera proxy

23 Draco DM: internals Fully extensible  Connection is an abstract concept  May be implemented by ANY type of connection loaded at runtime by factory method  Creation of proxies Load Module dist from Distribution.jar ModuleCommand dist CreateConnectionServer TcpIpConnection tcpserver 2222 ModuleCommand distribution RenewRemoteComponentCache testconnection ModuleCommand distribution RetrieveRemoteComponents testconnection ModuleCommand dist CreateProxyComponent testconnection:Switch

24 Open Issues / Future work Ontwikkeling eigen classloader voor Draco Uitbreiding van connectoren  Aanpasbare syntactic vertaling  Multi-Party connectoren Centraal Threadbeheer door Draco ipv actieve componenten zelf Threads te laten aanmaken Hierarchische componenten?  Eerder een statisch issue

25 The End Bedankt voor de opportuniteit om deze voordracht te mogen houden. Het is een onbeschrijfelijke eer en een ervaring die we niet snel zullen vergeten. Yves & Peter


Download ppt "Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving Yves Vandewoude Peter Rigole."

Verwante presentaties


Ads door Google