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

Preview:

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

dierk.koenig@canoo.com@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

Recommended