Your SlideShare is downloading. ×
0
MVC Revival on the Web
Janko Mivšek
janko.mivsek@eranova.si
@mivsek @aidaweb
ESUG 2013
Motivation
30 years of Smalltalk, 30 years of MVC
34 years exactly, since 1979
Hot in JavaScript MVC frameworks
For Single...
Contents
MVC explained
History
Usage in current JavaScript frameworks
Usage in Smalltalk
Current and future MVC in Aida/Web
MVC Explained
View Controller
Model
UI
Domain
Architectural design pattern
- Model for domain specific data and logic
- Vi...
MVC based on Observer pattern
Observer
Observee
(Observable)
- Observer looks at observee
- Observee is not aware of that
...
Multiple observers
Observer
Observee
(Observable)
- Multiple observers of the same Observee
- In MVC an Observee is View a...
Example: Counter demo in Aida/Web
Multiuser realtime web counter example
http://demo.aidaweb.si
– click Realtime on the le...
History of MVC (1)
Invented by Trygve Reenskaug when he worked in 1978/79 with
Alan Kay's group on Xerox Parc on Smalltalk...
History of MVC (2)
MVC State and Message Sending
A Description of the Mode-View-Controller User
Interface Paradigm in the ...
History of MVC (3)
80's
– 1979: invented by Trygve Reenskaug
– Smalltalk-80, VisualWorks by Parcplace
90's
– NeXTSTEP, Ope...
MVC in JavaScript
Backbone.js
Ember.js
KnockoutJS
AngularJS
- JS MVC »playground«
- simple web app to test
and compare fra...
MVC in Smalltalk
Nowadays in use:
GUI Frameworks
– VisualWorks
– Dolphin (MVP)
Web Frameworks
– Aida/Web
Future MVC in Aida/Web
- Extend dependency mechanism up to the
web clients
- auto update when domain object changes
- real...
Change detection
counter: anInteger
counter := anInteger.
self changed: #counter.
- Automatic change detection is needed
-...
Conclusion
MVC is well alive
Very usefull for nowadays Single Page Realtime web apps
Smalltalk community encouraged to fin...
www.aidaweb.si
@aidaweb
Thanks for your attention!
Upcoming SlideShare
Loading in...5
×

MVC Revivial on the Web

1,111

Published on

Janko Mivšek

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

  • Be the first to like this

No Downloads
Views
Total Views
1,111
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "MVC Revivial on the Web"

  1. 1. MVC Revival on the Web Janko Mivšek janko.mivsek@eranova.si @mivsek @aidaweb ESUG 2013
  2. 2. Motivation 30 years of Smalltalk, 30 years of MVC 34 years exactly, since 1979 Hot in JavaScript MVC frameworks For Single-Page and Realtime web apps We Smalltalkers should respect and revive our pearls better
  3. 3. Contents MVC explained History Usage in current JavaScript frameworks Usage in Smalltalk Current and future MVC in Aida/Web
  4. 4. MVC Explained View Controller Model UI Domain Architectural design pattern - Model for domain specific data and logic - View for presentation to the user - Controller for interactions with the user and updating domain model Main benefit: - separation of concerns events observing actions changes updates
  5. 5. MVC based on Observer pattern Observer Observee (Observable) - Observer looks at observee - Observee is not aware of that Dependency mechanism: - Observer is dependent on Observee state - Observee must report state changes to Observer - Pub/Sub Event Bus decouples Observee from Observer to preserve its unawarnes of observation Main benefit: - separation of concerns observing Pub/SubEventBus changed changed subscribe
  6. 6. Multiple observers Observer Observee (Observable) - Multiple observers of the same Observee - In MVC an Observee is View and Observee is domain Model, therefore: - many views of the same model - many apps - many users - mix of all three cases observing Pub/SubEventBus changed changed subscribe
  7. 7. Example: Counter demo in Aida/Web Multiuser realtime web counter example http://demo.aidaweb.si – click Realtime on the left – click Decrease or Increase to change counter – counter is changed on all other's browsers
  8. 8. History of MVC (1) Invented by Trygve Reenskaug when he worked in 1978/79 with Alan Kay's group on Xerox Parc on Smalltalk and Dynabook – Final term Model-View-Controller coined 10. December 1979. Reenskaug's diagram of MVC basic idea from 2006
  9. 9. History of MVC (2) MVC State and Message Sending A Description of the Mode-View-Controller User Interface Paradigm in the Smalltalk-80 System Glen E. Krasner and Stephen T. Pope Parcplace, 1988
  10. 10. History of MVC (3) 80's – 1979: invented by Trygve Reenskaug – Smalltalk-80, VisualWorks by Parcplace 90's – NeXTSTEP, OpenStep, Cocoa – 1996: Aida/Web – Squeak MVC 00's – JSP, Apache Struts, Spring, – ASP.NET – Ruby on Rails 10's – JavaScript MVC frameworks: Backbone, Ember, Angular, ...
  11. 11. MVC in JavaScript Backbone.js Ember.js KnockoutJS AngularJS - JS MVC »playground« - simple web app to test and compare frameworks - http://todomvc.com - Supported by Google - Influences new HTML5 standarts - Dart - Many ex-Smalltalkers there - W3C Web Components - First JS MVC framework
  12. 12. MVC in Smalltalk Nowadays in use: GUI Frameworks – VisualWorks – Dolphin (MVP) Web Frameworks – Aida/Web
  13. 13. Future MVC in Aida/Web - Extend dependency mechanism up to the web clients - auto update when domain object changes - realtime - decoupled - no need for extra code ValueHolder Domain object change Pub/SubEventBus changed changed subscribe View View View update update update change Aida/Web(ViewController)DomainModelClient change
  14. 14. Change detection counter: anInteger counter := anInteger. self changed: #counter. - Automatic change detection is needed - Possible solution: - Immutability flag as in VisualWorks - last remaining bit in object header used - flags an object as immutable (read-only) - any write attempt raise and exception self beImutable. ... counter: anInteger counter := anInteger. Exception handler self beMutable counter:= anInteger self beImmutable self changed: #counter exception continue
  15. 15. Conclusion MVC is well alive Very usefull for nowadays Single Page Realtime web apps Smalltalk community encouraged to find new ways of using MVC in our apps
  16. 16. www.aidaweb.si @aidaweb Thanks for your attention!
  1. A particular slide catching your eye?

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

×