1 / 25

Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving

Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving. Yves Vandewoude Peter Rigole. 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

chaman
Télécharger la présentation

Introductie tot de SEESCOA methodologie en de Draco Runtime omgeving

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. camera Motion detector switch Video recorder SEESCOA • Componenten methodologie met als concepten: • Component • Blueprint • Instance • Port • Blueprint • Instance • Connector

  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 NumberDisplay: package components.numberdisplay; component NumberDisplay { portgroup Input 1 { message Number() { System.out.println("Received number: " + $$inmessage::value); } } }

  6. Implementatie van Componenten NumberGenerator: 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() { ... } }}

  7. Implementatie van Componenten NumberGenerator (2): 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; } }}}

  8. Implementatie van Componenten NumberGenerator (2): 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; } }}}

  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. Draco Architectuur • 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> <Profile name="DefaultProfile"> <ComponentManager> draco.core.componentmanager.defaultcomponentmanager.DefaultComponentManager </ComponentManager> <Scheduler> draco.core.scheduler.defaultscheduler.DefaultScheduler </Scheduler> <ModuleManager> draco.core.modulemanager.defaultmodulemanager.DefaultModuleManager </ModuleManager> <ConnectorManager> draco.core.connectormanager.defaultconnectormanager.DefaultConnectorManager </ConnectorManager> <MessageManager> draco.core.messagemanager.defaultmessagemanager.DefaultMessageManager </MessageManager> </Profile> </Draco>

  17. Draco Message Delivery: Concept

  18. Draco Message Delivery: Implementation Sending Chain: Delivery 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. Switch proxy camera Motion detector Video Recorder proxy switch Video recorder Transparent proxy components Connection

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

  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

More Related