sproutcore gtug
DESCRIPTION
Presentation at Silicon Valley GTUG meetup @ Google. Slides 25-28 introduce microservices.TRANSCRIPT
![Page 1: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/1.jpg)
SproutCore
![Page 2: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/2.jpg)
How can we build desktop-class
applications on the web?
![Page 3: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/3.jpg)
• Architecture
• Framework (SproutCore!)
• Deployment (AppEngine!)
• Demo
![Page 4: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/4.jpg)
How can we build desktop-class
applications on the web?
![Page 5: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/5.jpg)
Like this...
![Page 6: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/6.jpg)
Not this...
![Page 7: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/7.jpg)
Desktop Class Means...
Immediate response
Rich interactions
Offline mode
![Page 8: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/8.jpg)
Document Driven
Web Server Web Browser User
Click
Request
Response
Render
Click
Request
Response
Render
Business Logic
![Page 9: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/9.jpg)
Document Driven
Document Driven
Immediate ResponseRich InteractionsOffline Mode
Rarely
None
None
![Page 10: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/10.jpg)
Ajax
![Page 11: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/11.jpg)
"3270" Ajax
![Page 12: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/12.jpg)
![Page 13: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/13.jpg)
"3270" Ajax
Web Server Web Browser User
Click
RequestResponse
Update Page
Initial Page Load
RenderBusiness
Logic(Tiny bit of
business logic)
![Page 14: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/14.jpg)
Document Driven "3270" Ajax
Immediate ResponseRich InteractionsOffline Mode
Rarely Occasionally
None Some
None Rare
"3270" Ajax
![Page 15: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/15.jpg)
"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
![Page 16: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/16.jpg)
Web Client-Server
![Page 17: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/17.jpg)
UserIMAP/POP
Business Logic
![Page 18: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/18.jpg)
User
Apache
Backend ServiceBusiness
Logic
![Page 19: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/19.jpg)
Web Client-Server Is...
JavaScript app in browser
Loads data via Ajax
User interaction is not bound by the server
![Page 20: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/20.jpg)
Document Driven
Web Server Web Browser User
Click
Request
Response
Render
Click
Request
Response
Render
Business Logic
![Page 21: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/21.jpg)
"3270" Ajax
Web Server Web Browser User
Click
RequestResponse
Update Page
Initial Page Load
RenderBusiness
Logic(Tiny bit of
business logic)
![Page 22: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/22.jpg)
Web Client-Server
Web Server Web Browser User
Click
RequestResponse
Update Page
Load JS Client
Render
Click
Update Page
Business Logic
![Page 23: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/23.jpg)
Document Driven "3270" Ajax Web
Client-ServerImmediate ResponseRich InteractionsOffline Mode
Rarely Occasionally Usually
None Some Always
None Rare Offline Capable
Web Client-Server
![Page 24: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/24.jpg)
Web Client-Server
![Page 25: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/25.jpg)
But what about the server?
![Page 26: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/26.jpg)
Custom Web ApplicationBig Rack
of Servers
Business Logic
![Page 27: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/27.jpg)
Custom Web
ApplicationGoogleAppEngine
Business Logic
Business Logic
![Page 28: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/28.jpg)
Microservice
Business Logic
GoogleAppEngine
![Page 29: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/29.jpg)
Microservice is...
Thin API over cloud service
Moves business logic to the client
Designed for speed + scale
![Page 30: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/30.jpg)
Framework
![Page 31: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/31.jpg)
Framework Objectives
Provide common applications features for free
Optimize across web browsers
Eliminate Glue Code
Make coding fun!
![Page 32: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/32.jpg)
Cocoa
![Page 33: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/33.jpg)
SproutCore
![Page 34: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/34.jpg)
SproutCore is...
Full MVC framework
Bindings, Observing, DnD
Embraces JavaScript
Includes build toolsChrome, Safari, FireFox, IE7+
![Page 35: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/35.jpg)
JavaScript is Great!
Late binding
"Hackable" Object ModelClosures
Lambda Functions
![Page 36: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/36.jpg)
Demo
![Page 37: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/37.jpg)
SproutCore+
![Page 38: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/38.jpg)
Web Client-Server
Web Server Web Browser User
Click
RequestResponse
Update Page
Load JS Client
Render
Click
Update Page
![Page 39: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/39.jpg)
MicroserviceGoogleAppEngine
![Page 40: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/40.jpg)
sudo gem install sproutcore
![Page 41: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/41.jpg)
www.sproutcore.com
![Page 42: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/42.jpg)
SproutCore
![Page 43: SproutCore GTUG](https://reader034.vdocument.in/reader034/viewer/2022042614/554f72b6b4c905bb178b52ef/html5/thumbnails/43.jpg)