Armağan Amcalar
WebTech Conference, Munich
Oct 26th, 2015
Framework economy
Marketing-driven
Framework-dependent
Too complex
Not solution-oriented
Information pollution
Lack of context and experience
Developers deserve better
Easy to reason about, easy to apply
Framework agnostic
Doesn't carry the baggage of the past
Unambiguous concepts
Proven in hardest applications
A consistent story
Companionship instead of pedantry
Modular architecture
Single responsibility
Extensible
Low complexity
Object oriented
Event-driven
3-layered architecture
4 core, 3 auxiliary roles
Culture
Representative
Regime
Undertaker
Stereotype
Diplomat
Satellite
Union*
Classes that store data about a known identity
User, Account, Product, ShoppingCartItem, CreditCard, etc.
May contain simple, related methods
Created and managed by Regimes
*Entity
Governs the UI
Exhibits a set of predefined behaviors
As dummy and ignorant as possible, no memory or state
Interprets user input and sends to a Representative
Can contain subcultures that exhibit different behaviors
List, ListItem, etc.
Can contain immigrant subcultures temporarily
*View
Keeps Culture's state
If a Culture has a Stereotype instance, keeps that, too
Represents a Culture to the Regime
Every Culture breeds their own Representatives
*ViewModel
Keeps and manages application's state in application layer
Breeds, manages, and operates on Stereotypes
May communicate with other Regimes through Diplomats
Delegates persistence to Undertakers
Lives as a Singleton
More complex apps can use two layers of Regimes
*Domain Model / Service
Works at the infrastructure layer, persists state
Doesn't keep state, takes orders from the Regime
May include technology-specific code (e.g. WebSQL, LocalStorage, AJAX, WebSockets)
May utilize Satellites for keeping state in multiple technologies
Lives as a Singleton
*Repository
Coordinates communication between Regimes.
Quasi-autonomous
Lives as a Singleton
On rare occasions, may coordinate communication between Representatives
*Event Manager
Abstracts a certain persistence technology
Persists serialized data
Mostly redundant
*Event Manager
Brings together contextually-similar roles that work together under an umbrella
Eases to see the big picture
Provides a clear file structure
*Package
We need more examples, more detailed documentation and more voice!
Armağan Amcalar
hello@arm.ag
twitter: @dashersw
github: dashersw
blog: arm.ag