OpenDolphin
Enterprise Apps for
Desktop, Web & Mobile
Donnerstag, 7. November 13
OpenDolphin
Enterprise Apps for
Desktop, Web & Mobile
Donnerstag, 7. November 13
Collaborative Enterprise
Desktop
Android
iPad
Embedded

Donnerstag, 7. November 13

for
for
for
for

the office
the field
...
Tour Guide
Single client
Multiple clients
Multiple channels

Donnerstag, 7. November 13
Single client
Enterprise ==
Server-side application
Clean separation
Least possible coupling

Donnerstag, 7. November 13
View

Model

Controller

Model

Shared Presentation Model

Donnerstag, 7. November 13
View

Model

What Controller

Model

Shared Presentation Model

Donnerstag, 7. November 13
View

How

Model

What Controller

Model

Shared Presentation Model

Donnerstag, 7. November 13
Client
View

How

Model

What Controller

Model

Shared Presentation Model

Donnerstag, 7. November 13
Client
View

Server
How

Model

What Controller

Model

Shared Presentation Model

Donnerstag, 7. November 13
How it works
Asynchronous commands
“@KentBeck: If MVC is so damn clear,
in strictdo I see classes like
sequence
why
XViewC...
How it works
Asynchronous commands
in strict sequence
Rich, generic models in
managed environment

Donnerstag, 7. November...
Independent Views

Donnerstag, 7. November 13
View

Controller

Shared Presentation Model
Donnerstag, 7. November 13

abc
LoginAction

View

Controller

Shared Presentation Model
Donnerstag, 7. November 13

abc
LoginAction

View

Controller

id: currentUser
name
passw
loggedIn

Shared Presentation Model
Donnerstag, 7. November 13

...
LoginAction

View

Controller

id: currentUser
name
passw
loggedIn

id: currentUser
name
passw
loggedIn

Shared Presentati...
LoginAction

Name
Passw
Login

View

Controller

id: currentUser
name
passw
loggedIn

id: currentUser
name
passw
loggedIn
...
LoginAction

Name
Passw
Login

binding

View

Controller

id: currentUser
name
passw
loggedIn

id: currentUser
name
passw
...
LoginAction

Name
Passw
Login

View

Controller

id: currentUser
name
passw
loggedIn

id: currentUser
name
passw
loggedIn
...
Name

LoginAction

abc

Passw
Login

View

Controller

id: currentUser
abc
name
passw
loggedIn

id: currentUser
abc
name
p...
Name
Passw

LoginAction

abc
***
Login

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn

id: currentUser
abc...
Name
Passw

LoginAction

abc
***
Login

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn

id: currentUser
abc...
Name
Passw

Login
LoginAction

abc
***
Login

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn

id: currentUs...
Name
Passw

LoginAction

abc
***

read

Login

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn

id: currentU...
Name
Passw

LoginAction

abc
***
Login

write

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn

id: currentU...
Name
Passw

LoginAction

abc
***
Login

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn TRUE

id: currentUse...
LoginAction

View

Controller

id: currentUser
abc
name
abc
passw
loggedIn TRUE

id: currentUser
abc
name
abc
passw
logged...
Create PM
ClientPresentationModel user =
clientDolphin.presentationModel(
CURRENT_USER, USER,
new ClientAttribute(NAME),
n...
Bind to view
bind(NAME).of(user)
.to(TEXT).of(nameTextField);

Donnerstag, 7. November 13
Send command
clientDolphin.send(LOGIN);

Donnerstag, 7. November 13
Read from store
ServerPresentationModel user =
serverDolphin.getAt(CURRENT_USER);
String name =
user.getAt(NAME).getValue(...
Change value
changeValue(
user.getAt(LOGGED_IN),
true
);

Donnerstag, 7. November 13
Multiple clients
Presence
Notification
Instant update
Shared information

Donnerstag, 7. November 13
Multiple clients
in collaboration

Donnerstag, 7. November 13
Client

Server

View

Controller

Model

Model

Shared Presentation Model

Donnerstag, 7. November 13
Server

View 1

Controller

Model

View 2
Model

Donnerstag, 7. November 13

Model

Controller
Model

Event Bus

Client
Multiple channels
Same application logic
Different UI technologies
Least common denominator

Donnerstag, 7. November 13
Multiple channels
Same application logic
Different UI technologies
Least common denominator

Full channel fidelity!
Donner...
Server

View 1

Controller

Model

View 2
Model

Donnerstag, 7. November 13

Model

Controller
Model

Event Bus

Client
Server

Desktop

Controller

Model

Mobile Web
Model

Donnerstag, 7. November 13

Model

Controller
Model

Event Bus

Clie...
Swing

iPhone

JavaFX

Hybrid
Web

Android
Nexus

Donnerstag, 7. November 13
Embedded device

Donnerstag, 7. November 13
JavaFX + PI

Donnerstag, 7. November 13
OpenDolphin
What it is
Why we care
How it works

Donnerstag, 7. November 13
OpenDolphin is
a small, generic library for
communication between
view and controller in an
async [remote] fashion
with pr...
Why we care
Save money
Protect investment
Outperform competition

Donnerstag, 7. November 13
Save money
Implement cleanly
Less maintenance costs
Easy to test

Donnerstag, 7. November 13
Protect investment
UI channels come and go,
application logic lives on.
You can bet who will win
or bet that things change...
Lead the pack
Multi-user, multi-channel,
collaboration,
instant updates,
3D, undo/redo,
validation, lazy loading,
local de...
Channel fidelity

Donnerstag, 7. November 13
Use when
Clean is better
low coupling,
build, test, maintain, extend,
safe threading

The future is open
Donnerstag, 7. No...
Donnerstag, 7. November 13
dierk.koenig@canoo.com
@mittie

@OpenDolphin
open-dolphin.org
github.com/canoo/open-dolphin
available from MavenCental
Don...
canoo
UI Engineering

Donnerstag, 7. November 13
canoo
UI Engineering
We enable you
to write great
applications.
Donnerstag, 7. November 13
Upcoming SlideShare
Loading in...5
×

OpenDolphin: Enterprise Apps for collaboration on Desktop, Web, and Mobile

473

Published on

see http://open-dolphin.org

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
473
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

OpenDolphin: Enterprise Apps for collaboration on Desktop, Web, and Mobile

  1. 1. OpenDolphin Enterprise Apps for Desktop, Web & Mobile Donnerstag, 7. November 13
  2. 2. OpenDolphin Enterprise Apps for Desktop, Web & Mobile Donnerstag, 7. November 13
  3. 3. Collaborative Enterprise Desktop Android iPad Embedded Donnerstag, 7. November 13 for for for for the office the field meetings displays
  4. 4. Tour Guide Single client Multiple clients Multiple channels Donnerstag, 7. November 13
  5. 5. Single client Enterprise == Server-side application Clean separation Least possible coupling Donnerstag, 7. November 13
  6. 6. View Model Controller Model Shared Presentation Model Donnerstag, 7. November 13
  7. 7. View Model What Controller Model Shared Presentation Model Donnerstag, 7. November 13
  8. 8. View How Model What Controller Model Shared Presentation Model Donnerstag, 7. November 13
  9. 9. Client View How Model What Controller Model Shared Presentation Model Donnerstag, 7. November 13
  10. 10. Client View Server How Model What Controller Model Shared Presentation Model Donnerstag, 7. November 13
  11. 11. How it works Asynchronous commands “@KentBeck: If MVC is so damn clear, in strictdo I see classes like sequence why XViewController & YViewModel? Rich, generic models in Something's wrong with this picture.” managed environment 20. April 2013 Donnerstag, 7. November 13
  12. 12. How it works Asynchronous commands in strict sequence Rich, generic models in managed environment Donnerstag, 7. November 13
  13. 13. Independent Views Donnerstag, 7. November 13
  14. 14. View Controller Shared Presentation Model Donnerstag, 7. November 13 abc
  15. 15. LoginAction View Controller Shared Presentation Model Donnerstag, 7. November 13 abc
  16. 16. LoginAction View Controller id: currentUser name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  17. 17. LoginAction View Controller id: currentUser name passw loggedIn id: currentUser name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  18. 18. LoginAction Name Passw Login View Controller id: currentUser name passw loggedIn id: currentUser name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  19. 19. LoginAction Name Passw Login binding View Controller id: currentUser name passw loggedIn id: currentUser name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  20. 20. LoginAction Name Passw Login View Controller id: currentUser name passw loggedIn id: currentUser name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  21. 21. Name LoginAction abc Passw Login View Controller id: currentUser abc name passw loggedIn id: currentUser abc name passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  22. 22. Name Passw LoginAction abc *** Login View Controller id: currentUser abc name abc passw loggedIn id: currentUser abc name abc passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  23. 23. Name Passw LoginAction abc *** Login View Controller id: currentUser abc name abc passw loggedIn id: currentUser abc name abc passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  24. 24. Name Passw Login LoginAction abc *** Login View Controller id: currentUser abc name abc passw loggedIn id: currentUser abc name abc passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  25. 25. Name Passw LoginAction abc *** read Login View Controller id: currentUser abc name abc passw loggedIn id: currentUser abc name abc passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  26. 26. Name Passw LoginAction abc *** Login write View Controller id: currentUser abc name abc passw loggedIn id: currentUser abc name abc passw loggedIn Shared Presentation Model Donnerstag, 7. November 13 abc
  27. 27. Name Passw LoginAction abc *** Login View Controller id: currentUser abc name abc passw loggedIn TRUE id: currentUser abc name abc passw loggedIn TRUE Shared Presentation Model Donnerstag, 7. November 13 abc
  28. 28. LoginAction View Controller id: currentUser abc name abc passw loggedIn TRUE id: currentUser abc name abc passw loggedIn TRUE Shared Presentation Model Donnerstag, 7. November 13 abc
  29. 29. Create PM ClientPresentationModel user = clientDolphin.presentationModel( CURRENT_USER, USER, new ClientAttribute(NAME), new ClientAttribute(PASSW), new ClientAttribute(LOGGED_IN) ); Donnerstag, 7. November 13
  30. 30. Bind to view bind(NAME).of(user) .to(TEXT).of(nameTextField); Donnerstag, 7. November 13
  31. 31. Send command clientDolphin.send(LOGIN); Donnerstag, 7. November 13
  32. 32. Read from store ServerPresentationModel user = serverDolphin.getAt(CURRENT_USER); String name = user.getAt(NAME).getValue(); Donnerstag, 7. November 13
  33. 33. Change value changeValue( user.getAt(LOGGED_IN), true ); Donnerstag, 7. November 13
  34. 34. Multiple clients Presence Notification Instant update Shared information Donnerstag, 7. November 13
  35. 35. Multiple clients in collaboration Donnerstag, 7. November 13
  36. 36. Client Server View Controller Model Model Shared Presentation Model Donnerstag, 7. November 13
  37. 37. Server View 1 Controller Model View 2 Model Donnerstag, 7. November 13 Model Controller Model Event Bus Client
  38. 38. Multiple channels Same application logic Different UI technologies Least common denominator Donnerstag, 7. November 13
  39. 39. Multiple channels Same application logic Different UI technologies Least common denominator Full channel fidelity! Donnerstag, 7. November 13
  40. 40. Server View 1 Controller Model View 2 Model Donnerstag, 7. November 13 Model Controller Model Event Bus Client
  41. 41. Server Desktop Controller Model Mobile Web Model Donnerstag, 7. November 13 Model Controller Model Event Bus Client
  42. 42. Swing iPhone JavaFX Hybrid Web Android Nexus Donnerstag, 7. November 13
  43. 43. Embedded device Donnerstag, 7. November 13
  44. 44. JavaFX + PI Donnerstag, 7. November 13
  45. 45. OpenDolphin What it is Why we care How it works Donnerstag, 7. November 13
  46. 46. OpenDolphin is a small, generic library for communication between view and controller in an async [remote] fashion with presentation models. Donnerstag, 7. November 13
  47. 47. Why we care Save money Protect investment Outperform competition Donnerstag, 7. November 13
  48. 48. Save money Implement cleanly Less maintenance costs Easy to test Donnerstag, 7. November 13
  49. 49. Protect investment UI channels come and go, application logic lives on. You can bet who will win or bet that things change. Donnerstag, 7. November 13
  50. 50. Lead the pack Multi-user, multi-channel, collaboration, instant updates, 3D, undo/redo, validation, lazy loading, local devices, ... Donnerstag, 7. November 13
  51. 51. Channel fidelity Donnerstag, 7. November 13
  52. 52. Use when Clean is better low coupling, build, test, maintain, extend, safe threading The future is open Donnerstag, 7. November 13
  53. 53. Donnerstag, 7. November 13
  54. 54. dierk.koenig@canoo.com @mittie @OpenDolphin open-dolphin.org github.com/canoo/open-dolphin available from MavenCental Donnerstag, 7. November 13
  55. 55. canoo UI Engineering Donnerstag, 7. November 13
  56. 56. canoo UI Engineering We enable you to write great applications. Donnerstag, 7. November 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×