sproutcore gtug
DESCRIPTION
Presentation at Silicon Valley GTUG meetup @ Google. Slides 25-28 introduce microservices.TRANSCRIPT
SproutCore
How can we build desktop-class
applications on the web?
• Architecture
• Framework (SproutCore!)
• Deployment (AppEngine!)
• Demo
How can we build desktop-class
applications on the web?
Like this...
Not this...
Desktop Class Means...
Immediate response
Rich interactions
Offline mode
Document Driven
Web Server Web Browser User
Click
Request
Response
Render
Click
Request
Response
Render
Business Logic
Document Driven
Document Driven
Immediate ResponseRich InteractionsOffline Mode
Rarely
None
None
Ajax
"3270" Ajax
"3270" Ajax
Web Server Web Browser User
Click
RequestResponse
Update Page
Initial Page Load
RenderBusiness
Logic(Tiny bit of
business logic)
Document Driven "3270" Ajax
Immediate ResponseRich InteractionsOffline Mode
Rarely Occasionally
None Some
None Rare
"3270" Ajax
"They" say... But really...
Client computers are too slow
Most clients are as fast as servers 2 years ago
JavaScript is too slow see v8 & SquirrelFish
HTML is too limited Have you seen Safari lately?
Browser Advancements
Web Client-Server
UserIMAP/POP
Business Logic
User
Apache
Backend ServiceBusiness
Logic
Web Client-Server Is...
JavaScript app in browser
Loads data via Ajax
User interaction is not bound by the server
Document Driven
Web Server Web Browser User
Click
Request
Response
Render
Click
Request
Response
Render
Business Logic
"3270" Ajax
Web Server Web Browser User
Click
RequestResponse
Update Page
Initial Page Load
RenderBusiness
Logic(Tiny bit of
business logic)
Web Client-Server
Web Server Web Browser User
Click
RequestResponse
Update Page
Load JS Client
Render
Click
Update Page
Business Logic
Document Driven "3270" Ajax Web
Client-ServerImmediate ResponseRich InteractionsOffline Mode
Rarely Occasionally Usually
None Some Always
None Rare Offline Capable
Web Client-Server
Web Client-Server
But what about the server?
Custom Web ApplicationBig Rack
of Servers
Business Logic
Custom Web
ApplicationGoogleAppEngine
Business Logic
Business Logic
Microservice
Business Logic
GoogleAppEngine
Microservice is...
Thin API over cloud service
Moves business logic to the client
Designed for speed + scale
Framework
Framework Objectives
Provide common applications features for free
Optimize across web browsers
Eliminate Glue Code
Make coding fun!
Cocoa
SproutCore
SproutCore is...
Full MVC framework
Bindings, Observing, DnD
Embraces JavaScript
Includes build toolsChrome, Safari, FireFox, IE7+
JavaScript is Great!
Late binding
"Hackable" Object ModelClosures
Lambda Functions
Demo
SproutCore+
Web Client-Server
Web Server Web Browser User
Click
RequestResponse
Update Page
Load JS Client
Render
Click
Update Page
MicroserviceGoogleAppEngine
sudo gem install sproutcore
www.sproutcore.com
SproutCore