View
509
Download
2
Tags:
Embed Size (px)
DESCRIPTION
see http://open-dolphin.org
Citation preview
OpenDolphinEnterprise Apps for Desktop, Web & Mobile
Donnerstag, 7. November 13
OpenDolphinEnterprise Apps for Desktop, Web & Mobile
Donnerstag, 7. November 13
Collaborative Enterprise
Desktop Android iPad Embedded
for the officefor the fieldfor meetingsfor displays
Donnerstag, 7. November 13
Tour Guide
Single clientMultiple clientsMultiple channels
Donnerstag, 7. November 13
Single client
Enterprise == Server-side application
Clean separationLeast possible coupling
Donnerstag, 7. November 13
Shared Presentation Model
View Controller
Model Model
Donnerstag, 7. November 13
Shared Presentation Model
View Controller
Model Model
What
Donnerstag, 7. November 13
Shared Presentation Model
View Controller
Model Model
WhatHow
Donnerstag, 7. November 13
Shared Presentation Model
View Controller
Model Model
WhatHow
Client
Donnerstag, 7. November 13
Shared Presentation Model
View Controller
Model Model
WhatHow
Client Server
Donnerstag, 7. November 13
How it works
Asynchronous commands in strict sequence
Rich, generic models in managed environment
“@KentBeck: If MVC is so damn clear, why do I see classes like
XViewController & YViewModel? Something's wrong with this picture.”
20. April 2013
Donnerstag, 7. November 13
How it works
Asynchronous commands in strict sequence
Rich, generic models in managed environment
Donnerstag, 7. November 13
Independent Views
Donnerstag, 7. November 13
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
LoginAction
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
id: currentUsernamepasswloggedIn
LoginAction
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginAction
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginAction
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginAction
binding
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginAction
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
ControllerView
Login
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
ControllerView
Login
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
ControllerView
read
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
ControllerView
write
Shared Presentation Model
Donnerstag, 7. November 13
Login
NamePassw
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginActionabc
abc
abc
abc
abcabc
***
TRUETRUE
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
id: currentUsernamepasswloggedIn
id: currentUsernamepasswloggedIn
LoginAction
abc
abc
abc
abcabc
TRUETRUE
ControllerView
Shared Presentation Model
Donnerstag, 7. November 13
Create PMClientPresentationModel user = clientDolphin.presentationModel( CURRENT_USER, USER, new ClientAttribute(NAME), new ClientAttribute(PASSW), new ClientAttribute(LOGGED_IN));
Donnerstag, 7. November 13
Bind to viewbind(NAME).of(user) .to(TEXT).of(nameTextField);
Donnerstag, 7. November 13
Send command
clientDolphin.send(LOGIN);
Donnerstag, 7. November 13
Read from storeServerPresentationModel user = serverDolphin.getAt(CURRENT_USER);
String name = user.getAt(NAME).getValue();
Donnerstag, 7. November 13
Change valuechangeValue( user.getAt(LOGGED_IN), true);
Donnerstag, 7. November 13
Multiple clients
PresenceNotificationInstant updateShared information
Donnerstag, 7. November 13
Multiple clientsin collaboration
Donnerstag, 7. November 13
Client Server
Shared Presentation Model
View Controller
Model Model
Donnerstag, 7. November 13
Client Server
View 1 Controller
Model Model
View 2 Controller
Model Model
Even
t B
us
Donnerstag, 7. November 13
Multiple channels
Same application logic Different UI technologiesLeast common denominator
Donnerstag, 7. November 13
Multiple channels
Same application logic Different UI technologiesLeast common denominator
Full channel fidelity!
Donnerstag, 7. November 13
Client Server
View 1 Controller
Model Model
View 2 Controller
Model Model
Even
t B
us
Donnerstag, 7. November 13
Client Server
Desktop Controller
Model Model
Mobile Web Controller
Model Model
Even
t B
us
Donnerstag, 7. November 13
iPhone
Swing JavaFX Hybrid
Web
AndroidNexus
Donnerstag, 7. November 13
Embedded device
Donnerstag, 7. November 13
JavaFX + PI
Donnerstag, 7. November 13
OpenDolphin
What it isWhy we careHow it works
Donnerstag, 7. November 13
OpenDolphin is
a small, generic library for communication between view and controller in an async [remote] fashion with presentation models.
Donnerstag, 7. November 13
Why we care
Save moneyProtect investmentOutperform competition
Donnerstag, 7. November 13
Save money
Implement cleanlyLess maintenance costsEasy to test
Donnerstag, 7. November 13
Protect investment
UI channels come and go,application logic lives on.
You can bet who will winor bet that things change.
Donnerstag, 7. November 13
Lead the pack
Multi-user, multi-channel, collaboration,instant updates,3D, undo/redo, validation, lazy loading,local devices, ...
Donnerstag, 7. November 13
Channel fidelity
Donnerstag, 7. November 13
Use when
Clean is betterlow coupling,build, test, maintain, extend,safe threading
The future is open
Donnerstag, 7. November 13
Donnerstag, 7. November 13
[email protected]@mittie
@OpenDolphinopen-dolphin.orggithub.com/canoo/open-dolphinavailable from MavenCental
Donnerstag, 7. November 13
UI Engineering
canoo
Donnerstag, 7. November 13
UI Engineering
canoocanoo
We enable you to write great applications.
Donnerstag, 7. November 13