4. Separates storage from
interaction
❖ Helps separate code into unique pieces that don’t
overlap
❖ Keeps your data storage separate from any specific
representation of it to a user
❖ Facilitates code reuse
❖ read more about “Separation of Concerns”
5. MVC Summary
❖ Model: stores your data and any logic needed to use it
❖ Controller: takes user input, manipulates models, sets
things up for the views
❖ View: renders the model data for a user
6. MVC: Use
❖ Many application and web frameworks have this baked in
❖ Rails has Models, Views and Controllers
❖ iOS has CoreData (NSManagedObject), UIView
subclasses, UIViewController subclasses
❖ In-browser JS frameworks use this too
❖ This way of thinking about your software will pay off
down the road
7. MVC dominates the Web
❖ fat Model represents the data
❖ Database access + “business logic”
❖ (sometimes) tells view when data changes
❖ skinny Controller is glue
❖ Parse user input, gather data, clean and pass to view
❖ lightweight View is the UI
❖ HTML + inline code
❖ Put re-used code in helper libraries
9. A Variety of Approaches
❖ “CGI”: roll your own quick scripts
❖ Don’t usually play well with others
❖ Microframeworks (microkernel)
❖ Quick spin up, lightweight
❖ Sinatra (ruby), Flask (Python), etc…
❖ Frameworks (macrokernel)
❖ French is easy once you speak French
❖ Rails (ruby), Django (Python), CakePHP etc…
❖ Content Management Systems (CMS)
❖ Core rigid, flexible module system, can get features for free
❖ Drupal (php), Wordpress (php), etc…
❖ PS: Javascript is HOT right now
❖ NodeJS (+express), Meteor, BackboneJS
11. Microframeworks
❖ Positives
❖ Easier learning curves
❖ Not many assumptions to learn
❖ Not many commands to understand
❖ Get results quickly
❖ Real web app in just a few lines of code
❖ Negatives
❖ Only do a few things out of the box (need libraries to
do more)
❖ Don’t scale well with features
15. Frameworks
❖ Positives
❖ Lots of simplifying assumptions
❖ Built for production environments
❖ More basics built-in (db, email, etc)
❖ Negatives
❖ Opaque
❖ Takes a while to learn common patterns
❖ Annoying if you don’t do things “right”
16. Framework: Rails
❖ Dependencies
❖ Ruby (use RVM to install)
❖ RubyGems
❖ Install
❖ > gem install rails
❖ Quickstart
❖ Demo
❖ Install Aptana’s RadRails to get started quickly!