The document discusses several problems with traditional client-server architectures for mobile applications and presents an adopted solution.
The main problems discussed are:
1. Presentation logic depends on interaction flows which differ between mobile and web.
2. Conversation state shared between client and server can lead to "session abuse".
3. Business logic usage is duplicated across clients.
4. Rich clients result in more duplication across languages and responsibilities.
5. Presentation changes often make conversations hard to test.
The adopted solution separates presentation from business logic and uses a stateless, conversational approach with clear application interfaces to address these issues. It allows for horizontal scalability, easy migration of conversations, and improved
2. presentation
http
business
logic
problem 1:
presentation depends on the interaction
flow, and mobile flows are really
different
3. presentation
http
business
logic
presentation
http
problem 2:
conversation state shared between client
and server. conversation state on
server leads to “session abuse”
4. presentation
http
business
logic
presentation
http
problem 2:
conversation state shared between client
and server. conversation state on
server leads to “session abuse”
5. presentation
http
business
logic
presentation
http
problem 2:
conversation state shared between client
and server. conversation state on
server leads to “session abuse”
6. n
io
presentation
t
http
a
s e
business
logic r t
e a
v t
presentation
n s
http
c o
problem 2:
conversation state shared between client
and server. conversation state on
server leads to “session abuse”
7. n
io
presentation
t
http
a
ap s e
pl business
logic
ic r t
e a
st at
v t
presentation
at io n s
http
e n
c o
problem 2:
conversation state shared between client
and server. conversation state on
server leads to “session abuse”
8. n
io
presentation
t
http
a
ap s e
pl business
r t
presentation
http
business
logic
presentation
http
e a
logic
ic
st at
v t
presentation
at io n s
http
e n
c o
problem 2: (sessions)
could make horizontal scalability harder
than it should be
9. n
io
presentation
t
http
a
ap s e
pl business
logic
ic r t
e a
st at
v t
presentation
at io n s
http
e n
c o
problem 2: (sessions)
it’s very hard to migrate conversations
from agents (mobile <-> desktop)
10. logic
business
business business
logic logic
usage usage
presentation presentation
problem 3:
http http
business logic usage is duplicated
11. business
logic
problem 3:
business business
logic logic
(duplication)
usage usage
presentation presentation
http http
worst when there’s an anemic domain model
12. presentation
presentation
http
business
logic
presentation
presentation
http
problem 4: rich client
more duplication (different languages),
more difficult to separate
responsibilities (where is what?)
13. presentation
business
http
usage
logic
business
logic
presentation
business
http
usage
logic
problem 5: (testability)
difficult to reach a particular point in
the conversation. presentation changes
often (smell: divergent change)