SlideShare une entreprise Scribd logo
1  sur  82
hexMachina
urban framework for hardcore developers
?
francis bourre / Docler Holding
author of @pixlib
pixLib adventures
in the web apps jungles
pixLib adventures
“Let’s grab knowledge from
other Tech eco-systems”
in the web apps jungles
@tweenpix.net 2003
pixLib adventures
pixlib (as2)
pixioc (as2)
lowra (as3)
palmer (as3)
pixlib community version (as3)
pixlib closed source version (as3)
hexMachina (as3)
@tweenpix.net 2003
2003
2004
2007
2008
2008
2009
2015
Six Feet Under
2015
...
How can I target the browser now?
with a statically typed language
No interface @compile time
with extra benefits
hexMachina
Which kind of framework is it...
and what is the goal?
Monolith framework?
Monolith framework?
Many repositories available:
Core, Annotation, Inject, Service, MVC, IoC,State...
Golden Principles
for maintaining long lifecycle applications
- secure collaboration
Golden Principles
for maintaining long lifecycle applications
- secure collaboration
- code reusability
Golden Principles
for maintaining long lifecycle applications
- secure collaboration
- code reusability
- low coupling
Golden Principles
for maintaining long lifecycle applications
Secure collaboration
design by contract @compile time
INTERFACEs
define contracts
● Formal specs of your components
INTERFACEs
define contracts
● Formal specs of your components
● Hide the implementation
INTERFACEs
define contracts
● Formal specs of your components
● Hide the implementation
● Easy team workflow
INTERFACEs
define contracts
● Formal specs of your components
● Hide the implementation
● Easy team workflow
● And more...
Code reusability
modular system and configurable components
MODULE
Every module is a micro-application
...And proud to be.
DOMAIN
Every module belongs to an unique domain
.slides
.wwx
.live
.hx
.docler
.talk
.modular
MODULE
micro-application
●unique Domain
●private EventBus
●FrontController
(and/or Controller/s)
●Model/s
Low coupling
prefer runtime coupling - USE IoC
Jimmy!
Answer me!
Hollywood principle
" Don’t call us, we will call you "
Dependency Injection
Automate coupling
Use automatic dependency injection
INJECTION with ANNOTATIONS
hexAnnotation
Do dirty reflection job @compile time
LoadPhotosCommand.__meta__ = { obj : { 'hex.di.IInjectorContainer' :
["{"ctor":{"args":[],"isPre":false,"name":"new","isPost":false,"order":0},"props":[{"isOpt":false,"na
me":"photosService","type":"IGetPhotosService","key":""},{"isOpt":false,"name":"galleryModel","t
ype":"IGalleryModel","key":""}],"name":"LoadPhotosCommand","methods":[]}"]}};
hexInject
Works with annotations: Properties, methods and constructors
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
Value, class instance or singleton can satisfy dependencies
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
Value, class instance or singleton can satisfy dependencies
Injections can be optional
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
Value, class instance or singleton can satisfy dependencies
Injections can be optional
Injectors chaining
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
Value, class instance or singleton can satisfy dependencies
Injections can be optional
Injectors chaining
Event-driven and Exception handling
hexInject
Works with annotations: Properties, methods and constructors
Mapping by type and optionally by name
Value, class instance or singleton can satisfy dependencies
Injections can be optional
Injectors chaining
Event-driven and Exception handling
Build configurable architecture
use Domain Specific Language
hexIoC
Injections with DSL
DSL PARSING/ASSEMBLING FLOW
Xml Parser
parses
DSL PARSING/ASSEMBLING FLOW
Xml Parser Assembler
parses translates
DSL PARSING/ASSEMBLING FLOW
Xml Parser Assembler
Context
Factory
parses translates
Runtime @pplication
builds
DSL PARSING/COMPILING FLOW
Xml Parser Assembler
CompileTime
Factory
parses translates
Generated Code
generates
HEXMACHINA DSL
hello world
HEXMACHINA DSL
String is default type
HEXMACHINA DSL
simple module creation
SERVICES
service locator / services mapping
HEXMACHINA DSL
constructor injection by DSL
After compilation
JavaScript is generated
INCLUDE
recursive files inclusion
DSL CHECKING
@compile time
Fail early, fail loudly
DSL CHECKING @compile time
type not found
DSL CHECKING @compile time
missing ID
DSL CHECKING @compile time
file missing
Low coupling
Use messaging
Publisher
type
observer
type
observer
observer
observer
observer
observer
Observable
named domain
Observer pattern
with domain messaging
Observable
hexState
states flow configurable with DSL
state machine
asleep
STATE
awake
STATE
wakeup
MESSAGE
STATE CONTROLLER
triggers
state machine
asleep
STATE
awake
STATE
wakeup
MESSAGE
STATE CONTROLLER
triggers
transition
triggers
state machine
asleep
STATE
awake
STATE
executes
wakeup
MESSAGE
STATE CONTROLLER
triggers
transition
triggers
commands
list
state machine
asleep
STATE
awake
STATE
executes
wakeup
MESSAGE
STATE CONTROLLER
triggers
transition
triggers
executes
commands
list
commands
list
Context state machine
dispatcher
external
MESSAGE
sent to
application Context
Context state machine
dispatcher STATE MACHINE
triggers
external
MESSAGE
sent to
application Context
Context state machine
dispatcher STATE MACHINE
triggers
external
MESSAGE
sent to
commands
list
commands
list
application Context
Context state machine
application Context
dispatcher STATE MACHINE
triggers
external
MESSAGE
sent to
commands
list
commands
list
Module
Context states
state flow described with DSL
Context states
module scope for execution
hexUnit
UNIT TEST FRAMEWORK
TEST RESULTS NOTIFIERS
●Shell
●Browser/Dom
●Flash/Display
●Flash/Trace
●Web socket
hexCore
Logging API
filter logs by:
●Domain
●Levels
web console
●search text
hexMachina
What’s next?
Recursive composition
context agregates contexts, that agregates contexts, that...
Contexts hierarchy
hierarchy is handled by DSL
Other planned additions
High level of code coverage
More platforms testing
More articles
Add states transitions to DSL compiler
hexDom (virtual DOM, databinding)
Questions...
hexMachina WWX 2016

Contenu connexe

Tendances

TypeScript Presentation
TypeScript PresentationTypeScript Presentation
TypeScript Presentation
Patrick John Pacaña
 

Tendances (20)

TypeScript Presentation
TypeScript PresentationTypeScript Presentation
TypeScript Presentation
 
Swift Programming Language
Swift Programming LanguageSwift Programming Language
Swift Programming Language
 
Introducing type script
Introducing type scriptIntroducing type script
Introducing type script
 
TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!TypeScript . the JavaScript developer best friend!
TypeScript . the JavaScript developer best friend!
 
Typescript in 30mins
Typescript in 30mins Typescript in 30mins
Typescript in 30mins
 
TypeScript 101 - Studio Session - Accenture Liquid Studio
TypeScript 101 - Studio Session - Accenture Liquid StudioTypeScript 101 - Studio Session - Accenture Liquid Studio
TypeScript 101 - Studio Session - Accenture Liquid Studio
 
Getting Started with TypeScript
Getting Started with TypeScriptGetting Started with TypeScript
Getting Started with TypeScript
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
 
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
 
TypeScript Best Practices
TypeScript Best PracticesTypeScript Best Practices
TypeScript Best Practices
 
Typescript Fundamentals
Typescript FundamentalsTypescript Fundamentals
Typescript Fundamentals
 
TypeScript intro
TypeScript introTypeScript intro
TypeScript intro
 
Typescript for the programmers who like javascript
Typescript for the programmers who like javascriptTypescript for the programmers who like javascript
Typescript for the programmers who like javascript
 
Introduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston LeviIntroduction to TypeScript by Winston Levi
Introduction to TypeScript by Winston Levi
 
Introducing TypeScript
Introducing TypeScriptIntroducing TypeScript
Introducing TypeScript
 
Kotlin
KotlinKotlin
Kotlin
 
TypeScript 101
TypeScript 101TypeScript 101
TypeScript 101
 
TypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the painTypeScript: coding JavaScript without the pain
TypeScript: coding JavaScript without the pain
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET Developers
 

Similaire à hexMachina WWX 2016

Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko3D
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
Satish Verma
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp
 
SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!
melbats
 

Similaire à hexMachina WWX 2016 (20)

Minko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSLMinko - Targeting Flash/Stage3D with C++ and GLSL
Minko - Targeting Flash/Stage3D with C++ and GLSL
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
 
The Future of Cross-Platform is Native
The Future of Cross-Platform is NativeThe Future of Cross-Platform is Native
The Future of Cross-Platform is Native
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Building frameworks: from concept to completion
Building frameworks: from concept to completionBuilding frameworks: from concept to completion
Building frameworks: from concept to completion
 
Realizing the promise of portable data processing with Apache Beam
Realizing the promise of portable data processing with Apache BeamRealizing the promise of portable data processing with Apache Beam
Realizing the promise of portable data processing with Apache Beam
 
Realizing the Promise of Portable Data Processing with Apache Beam
Realizing the Promise of Portable Data Processing with Apache BeamRealizing the Promise of Portable Data Processing with Apache Beam
Realizing the Promise of Portable Data Processing with Apache Beam
 
Online voting system ppt by anoop
Online voting system ppt by anoopOnline voting system ppt by anoop
Online voting system ppt by anoop
 
Introduction to .NET
Introduction to .NETIntroduction to .NET
Introduction to .NET
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep diveITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
ITCamp 2013 - Raffaele Rialdi - Windows Runtime (WinRT) deep dive
 
Overview to Xamarin : Understanding Xamarin Architecture
Overview to Xamarin : Understanding Xamarin ArchitectureOverview to Xamarin : Understanding Xamarin Architecture
Overview to Xamarin : Understanding Xamarin Architecture
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently2017 03 25 Microsoft Hacks, How to code efficiently
2017 03 25 Microsoft Hacks, How to code efficiently
 
10-DesignPatterns.ppt
10-DesignPatterns.ppt10-DesignPatterns.ppt
10-DesignPatterns.ppt
 
SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!SiriusCon 2015 - Breathe Life into Your Designer!
SiriusCon 2015 - Breathe Life into Your Designer!
 
Unit 1 - TypeScript & Introduction to Angular CLI.pptx
Unit 1 - TypeScript & Introduction to Angular CLI.pptxUnit 1 - TypeScript & Introduction to Angular CLI.pptx
Unit 1 - TypeScript & Introduction to Angular CLI.pptx
 

Dernier

Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptx
chumtiyababu
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
MayuraD1
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 

Dernier (20)

GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLEGEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
Verification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptxVerification of thevenin's theorem for BEEE Lab (1).pptx
Verification of thevenin's theorem for BEEE Lab (1).pptx
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network Devices
 
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Moment Distribution Method For Btech Civil
Moment Distribution Method For Btech CivilMoment Distribution Method For Btech Civil
Moment Distribution Method For Btech Civil
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptxOrlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
Orlando’s Arnold Palmer Hospital Layout Strategy-1.pptx
 

hexMachina WWX 2016