SlideShare a Scribd company logo
1 of 31
RL2
ActionScript Application Framework




            Dot Brighton - 2012      1
hello, I’m
                            shaun
                            smith

                            @darscan
                            #robotlegs
http://shaun.boyblack.co.za/blog/about/   2
RL1 Recap
             Dependency Injection
                     Commands
                      Mediators




https://github.com/robotlegs/robotlegs-framework/tree/master   3
RL2
                As above, but with:


                     A fluent API
               Extensions (opt-in)
                Bundles (presets)
                        Configs
                 Logging (built-in)
                Module autowiring

https://github.com/robotlegs/robotlegs-framework/tree/version2   4
Dependency Injection


   https://github.com/tschneidereit/SwiftSuspenders/   5
Swiftsuspenders 2

injector.map(IService).toValue(service)
injector.map(IService).toType(SomeService)
injector.map(IService).toSingleton(SomeService)
injector.map(SomeService).asSingleton()


                             Faster
                Local vs shared scopes
                 Hard vs soft mappings


          https://github.com/tschneidereit/SwiftSuspenders/   6
Context & Startup


     framework/readme-context.md   7
context = new Context()
 .extend(MVCSBundle)
 .configure(MyAppConfig, this);


No more extend and override
Opt-in extensions
Convenient, shareable bundles
Conventions for configuration
Consolidated startup process


           framework/readme-context.md   8
Commands

  extensions/eventCommandMap   9
eventCommandMap
.map(SomeEvent.EVENT, SomeEvent)
.toCommand(MyCommand)
.once();




           extensions/eventCommandMap   10
Mediators

  extensions/mediatorMap   11
mediatorMap
 .map(SomeType)
 .toMediator(SomeMediator)


Can map to interfaces and abstract types
Possibly many mediators per view
Nested stage listener optimisations




              extensions/mediatorMap       12
Configs

 framework/readme-context.md   13
context = new Context()
 .extend(MVCSBundle)
 .configure(MyAppConfig, this);




          framework/readme-context.md   14
class ViewConfig
{
    public function ViewConfig(mediatorMap:IMediatorMap)
    {

        mediatorMap.map(SomeView)
            .toMediator(SomeMediator);
    }
}




                       framework/readme-context.md        15
class MyModuleConfig implements IConfig
{
    [Inject]
    public var mediatorMap:IMediatorMap;

    public function configure():void
    {
        mediatorMap.map(SomeView)
          .toMediator(SomeMediator);
    }
}


                  framework/readme-context.md   16
Extensions

    extensions   17
public class EventCommandMapExtension
    implements IExtension
{
    public function extend(context:IContext):void
    {
        context.injector
         .map(IEventCommandMap)
         .toSingleton(EventCommandMap);
    }
}



                           extensions/eventCommandMap   18
Extensions are installed immediately:

      context.extend(MyExtension)
                   ~=
    new MyExtension().extend(context)




                 extensions             19
Bundles

  bundles   20
context = new Context()
 .extend(MVCSBundle)
 .configure(MyAppConfig, this);




                 bundles        21
public class MVCSBundle implements IBundle
{
    public function extend(context:IContext):void
    {
        context.extend(
         ModularityExtension,
         EventCommandMapExtension,
         ... etc ...
         MediatorMapExtension,
         StageSyncExtension);
        context.configure(ContextViewListenerConfig);
    }
}

                                bundles/mvcs          22
Bundles are installed immediately:

      context.extend(MyBundle)
                ~=
   new MyBundle().extend(context)




               bundles               23
Bundles vs Extensions


         extensions     24
An extension integrates a single utility or library with a
                 Robotlegs context


    A bundle installs a selection of extensions and
       configurations into a Robotlegs context




                         extensions                          25
Logging

 framework/readme-logging.md   26
Lightweight logging system built in: context.getLogger(MyClass)


                 Optional logging extensions

LoggingExtension: allows you to [Inject] public var logger:ILogger;


InjectorLoggingExtension: logs injection events (not 4 production!)


TraceLoggingExtension: simple trace log target




                          extensions/logging                          27
Demos

 github urls to follow   28
https://github.com/darscan/robotlegs-demos-HelloFlash


https://github.com/darscan/robotlegs-demos-HelloFlex


https://github.com/darscan/robotlegs-demos-Todo




                      github.com                        29
Thanks!

https://github.com/robotlegs/robotlegs-framework   30
Questions?

             31

More Related Content

Viewers also liked

Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
UCACUE
 
Employee Training & Development Ch 06
Employee Training & Development Ch 06Employee Training & Development Ch 06
Employee Training & Development Ch 06
Eko Satriyo
 
디지털엔터테인먼트
디지털엔터테인먼트디지털엔터테인먼트
디지털엔터테인먼트
전유진
 
디지털엔터테인먼트
디지털엔터테인먼트디지털엔터테인먼트
디지털엔터테인먼트
전유진
 
Aarón & Iván
Aarón & IvánAarón & Iván
Aarón & Iván
isarevi
 
Customer_Service_on_Twitter_Playbook
Customer_Service_on_Twitter_PlaybookCustomer_Service_on_Twitter_Playbook
Customer_Service_on_Twitter_Playbook
Raj Narayanan
 
Sesion 6 resiliencia
Sesion 6 resilienciaSesion 6 resiliencia
Sesion 6 resiliencia
LNolbert
 
San Pedrín de la Cueva Mateo
San Pedrín de la Cueva   MateoSan Pedrín de la Cueva   Mateo
San Pedrín de la Cueva Mateo
isarevi
 
지브리스튜디오 사례
지브리스튜디오 사례지브리스튜디오 사례
지브리스튜디오 사례
전유진
 

Viewers also liked (20)

Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Sesión9 cv actualizado
Sesión9 cv actualizadoSesión9 cv actualizado
Sesión9 cv actualizado
 
Employee Training & Development Ch 06
Employee Training & Development Ch 06Employee Training & Development Ch 06
Employee Training & Development Ch 06
 
디지털엔터테인먼트
디지털엔터테인먼트디지털엔터테인먼트
디지털엔터테인먼트
 
디지털엔터테인먼트
디지털엔터테인먼트디지털엔터테인먼트
디지털엔터테인먼트
 
9)+potênc..
9)+potênc..9)+potênc..
9)+potênc..
 
Aarón & Iván
Aarón & IvánAarón & Iván
Aarón & Iván
 
Hvað kostar vefur? Um mat á tilboðum og val á samstarfsaðila
Hvað kostar vefur? Um mat á tilboðum og val á samstarfsaðilaHvað kostar vefur? Um mat á tilboðum og val á samstarfsaðila
Hvað kostar vefur? Um mat á tilboðum og val á samstarfsaðila
 
Proyecto
ProyectoProyecto
Proyecto
 
Customer_Service_on_Twitter_Playbook
Customer_Service_on_Twitter_PlaybookCustomer_Service_on_Twitter_Playbook
Customer_Service_on_Twitter_Playbook
 
Betri opinberir vefir: Sex spora kerfið til bættrar vefheilsu
Betri opinberir vefir: Sex spora kerfið til bættrar vefheilsuBetri opinberir vefir: Sex spora kerfið til bættrar vefheilsu
Betri opinberir vefir: Sex spora kerfið til bættrar vefheilsu
 
Sesion 6 resiliencia
Sesion 6 resilienciaSesion 6 resiliencia
Sesion 6 resiliencia
 
Ský 23. september 2015 - Starfsumhverfi vefstjóra á íslandi
Ský 23. september 2015  - Starfsumhverfi vefstjóra á íslandiSký 23. september 2015  - Starfsumhverfi vefstjóra á íslandi
Ský 23. september 2015 - Starfsumhverfi vefstjóra á íslandi
 
Pseudosecularism
PseudosecularismPseudosecularism
Pseudosecularism
 
San Pedrín de la Cueva Mateo
San Pedrín de la Cueva   MateoSan Pedrín de la Cueva   Mateo
San Pedrín de la Cueva Mateo
 
Lab styles dario-changes-two-type-1-diabetics-lives-personaltechmd
Lab styles dario-changes-two-type-1-diabetics-lives-personaltechmdLab styles dario-changes-two-type-1-diabetics-lives-personaltechmd
Lab styles dario-changes-two-type-1-diabetics-lives-personaltechmd
 
지브리스튜디오 사례
지브리스튜디오 사례지브리스튜디오 사례
지브리스튜디오 사례
 
Ci Town&Country
Ci Town&CountryCi Town&Country
Ci Town&Country
 
Smart Buildings
Smart BuildingsSmart Buildings
Smart Buildings
 
Presentation
PresentationPresentation
Presentation
 

Similar to RL2 Dot Brighton

Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
Benjamin Cabé
 
Using advanced C# features in Sharepoint development
Using advanced C# features in Sharepoint developmentUsing advanced C# features in Sharepoint development
Using advanced C# features in Sharepoint development
sadomovalex
 

Similar to RL2 Dot Brighton (20)

Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head...
Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head...Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head...
Pavlo Zhdanov "Java and Swift: How to Create Applications for Automotive Head...
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1
 
Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017
Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017
Microservices in GO - Massimiliano Dessì - Codemotion Rome 2017
 
Mapredtutorial
MapredtutorialMapredtutorial
Mapredtutorial
 
Java programming concept
Java programming conceptJava programming concept
Java programming concept
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom components
 
Roboconf Detailed Presentation
Roboconf Detailed PresentationRoboconf Detailed Presentation
Roboconf Detailed Presentation
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Using advanced C# features in Sharepoint development
Using advanced C# features in Sharepoint developmentUsing advanced C# features in Sharepoint development
Using advanced C# features in Sharepoint development
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e JavaCome costruire una Platform As A Service con Docker, Kubernetes Go e Java
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
 
MongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + KubernetesMongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
MongoDB.local DC 2018: MongoDB Ops Manager + Kubernetes
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
 
micro-frontends-with-vuejs
micro-frontends-with-vuejsmicro-frontends-with-vuejs
micro-frontends-with-vuejs
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

RL2 Dot Brighton

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n