Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJoris Jacobs Laatst gewijzigd meer dan 10 jaar geleden
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.