SlideShare uma empresa Scribd logo
1 de 18
The New Web
Stateful, Realtime, Programmable
Chris Gomez
chris@chrisgomez.com
www.chrisgomez.com
Twitter: @SpaceShot
Eventboard
 Use Eventboard to evaluate presentations
today.
 Available for Windows 8, and Mobile… iOs,
Android, Windows Phone
Definitions
 “AJAX” – xmlhttprequest, calling back to
server without page refresh
 “HTML5” -
 “Modern Browsers” – Latest Firefox or
Chrome, IE 9 or 10 (lean towards 10).
XML
Ruby On Rails
Sinatra
ODBC
Requests
Developing for the Web
Database Web
Server
Classic ASP
Access Static HTML
CGI/ISAPI
ASP.NET (WebForms)
SQL Server
NoSQLMongoDB
RavenDB
HTTP
AJAX
ASP.NET Web APICassandra
CouchDB
NodeJS
Jade
JSONP
CookiesLinq to SQL
SQL Server Express
SQL Server Compact
ASP.NET MVC
EF Code
First
Requests
The Stateless Web
(or “Who are you? What’s going on here?”)
Database Web
Server
Hey, it’s John Baird
Who?
Ugh, you forgot?
Try a cookie?
Hold a sec…
Let’s see…
Jim Bear…
John Barker…
John… Baird!
Here’s Session
State!
Great, thanks!
Here’s how
the web page
looks now!
Finally…
When does this approach break down?
 Loading of complex and fast changing state
 Realtime updates to the browser
 Working around the “page cycle”
What’s a “Stateful” Web Server?
Requests
Web
Server
This is Chris, I moved
token #1 to 100,100
John moved token #2
to 400,100
Board game scenario
 All players can join at any time and view the game
state as it currently is
 All players can join a chat and talk in real time
 All players can move game tokens around at any time
 Other players see the tokens in motion
• The environment is extensible via a common scripting
language.
File > New Project
 ASP.NET MVC 4 Web Application
 Empty Project (nothing done for you)
 No Unit Tests / Razor
 Just using MVC as a means to quickly deliver a web page
Steve Sanderson’s “App” Layouts
 http://blog.stevensanderson.com/2011/10/05/full-
height-app-layouts-a-css-trick-to-make-it-easier/
 Don’t think this is the only way or the only place or the
only guy looking at this
HTML5 Canvas
 “Immediate Mode” rendering
 <canvas> tag
 Only accessible via JavaScript
Use a library or toolkit!
EaselJS
 Part of CreateJS Suite (www.createjs.com)
EaselJS API
Stage – Manages a canvas for you
Ticker – Represents the “Game loop” or “render loop”
Bitmap – Represents a bitmap on a canvas
SpriteSheet – Assists in keyframe (flipbook) style
animation
Touch – assists with Touch support in Chrome.Firefox, IE10
SignalR
 Started as open source project (within Microsoft ASP.NET team)
 In PreRelease as a full member of ASP.NET.
 Moving into Microsoft.AspNet.SignalR
 Supporting web clients and ASP.NET servers
 Also supports .NET Clients and WinRT clients.
 You can “self-host”
Version 1.0!!
Building Real-time Web Apps at build
http://channel9.msdn.com/Events/Build/2012/3-034/player
I maintain & update game
state as it happens
I deliver HTML/JS to
bootstrap
Web Server
--MVC on IIS—
Requests
Game Board Archectiture
Console App
SignalR
“GameHub”
JavaScript Engines
 NOT the same as letting user script run in the browser
 This is running on the server
 Use a Javascript implementation to drive adoption of your API
or platform
 There are Javascript developers already out there!
 No one writes CustomSuperDuperScriptXPlus!
Hosting Javascript
Console App
JavaScript Engine Context
Exposes a CLR object like “map”
Exposes public methods: GetTokenList()

Mais conteúdo relacionado

Mais procurados

Nodejs - Building a RESTful API
Nodejs - Building a RESTful APINodejs - Building a RESTful API
Nodejs - Building a RESTful API
Sang Cù
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
Spike Brehm
 

Mais procurados (20)

Use SVG to Bring the Web to Life (Quinton Jason Jr)
Use SVG to Bring the Web to Life (Quinton Jason Jr)Use SVG to Bring the Web to Life (Quinton Jason Jr)
Use SVG to Bring the Web to Life (Quinton Jason Jr)
 
JavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right ChoiceJavaScript MV* Framework - Making the Right Choice
JavaScript MV* Framework - Making the Right Choice
 
Nodejs - Building a RESTful API
Nodejs - Building a RESTful APINodejs - Building a RESTful API
Nodejs - Building a RESTful API
 
Moving applications to the cloud
Moving applications to the cloudMoving applications to the cloud
Moving applications to the cloud
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
 
Going Node.js at Netflix
Going Node.js at NetflixGoing Node.js at Netflix
Going Node.js at Netflix
 
Server-Side JavaScript
Server-Side JavaScriptServer-Side JavaScript
Server-Side JavaScript
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
 
WebSocket For Web Rubyists
WebSocket For Web RubyistsWebSocket For Web Rubyists
WebSocket For Web Rubyists
 
Node.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash CourseNode.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash Course
 
Build App with Nodejs - YWC Workshop
Build App with Nodejs - YWC WorkshopBuild App with Nodejs - YWC Workshop
Build App with Nodejs - YWC Workshop
 
A New Vue for Web Development
A New Vue for Web DevelopmentA New Vue for Web Development
A New Vue for Web Development
 
Web assembly: a brief overview
Web assembly: a brief overviewWeb assembly: a brief overview
Web assembly: a brief overview
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 
Web Front End Performance
Web Front End PerformanceWeb Front End Performance
Web Front End Performance
 
Intro to Sails.js
Intro to Sails.jsIntro to Sails.js
Intro to Sails.js
 
Javascript now and in the future
Javascript now and in the futureJavascript now and in the future
Javascript now and in the future
 
Frontend architecture design for large(r) team final
Frontend architecture design for large(r) team   finalFrontend architecture design for large(r) team   final
Frontend architecture design for large(r) team final
 
Coding Ui
Coding UiCoding Ui
Coding Ui
 

Semelhante a The Realtime Web: Stateful and Programmable

Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricks
Simon Sturmer
 

Semelhante a The Realtime Web: Stateful and Programmable (20)

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologies
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
 
The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5
 
Windows 8 for Web Developers
Windows 8 for Web DevelopersWindows 8 for Web Developers
Windows 8 for Web Developers
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
 
Walther Ajax4
Walther Ajax4Walther Ajax4
Walther Ajax4
 
Walther Aspnet4
Walther Aspnet4Walther Aspnet4
Walther Aspnet4
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
 
Coding the UI
Coding the UICoding the UI
Coding the UI
 
The Changing Face Of The Web
The Changing Face Of The WebThe Changing Face Of The Web
The Changing Face Of The Web
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricks
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3JavaONE 2012 Using Java with HTML5 and CSS3
JavaONE 2012 Using Java with HTML5 and CSS3
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
 

Mais de Christopher Gomez (7)

React Faceoff at Philly.NET
React Faceoff at Philly.NETReact Faceoff at Philly.NET
React Faceoff at Philly.NET
 
Who Needs Visual Studio?
Who Needs Visual Studio?Who Needs Visual Studio?
Who Needs Visual Studio?
 
Azure Web Apps - Introduction
Azure Web Apps - IntroductionAzure Web Apps - Introduction
Azure Web Apps - Introduction
 
Mastering git
Mastering gitMastering git
Mastering git
 
Who needs Visual Studio? - Philly.NET Code Camp 2016
Who needs Visual Studio? - Philly.NET Code Camp 2016Who needs Visual Studio? - Philly.NET Code Camp 2016
Who needs Visual Studio? - Philly.NET Code Camp 2016
 
Practical Git - Philly.NET Code Camp
Practical Git - Philly.NET Code CampPractical Git - Philly.NET Code Camp
Practical Git - Philly.NET Code Camp
 
Practical Git - NYC Code Camp
Practical Git - NYC Code CampPractical Git - NYC Code Camp
Practical Git - NYC Code Camp
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

The Realtime Web: Stateful and Programmable

  • 1. The New Web Stateful, Realtime, Programmable Chris Gomez chris@chrisgomez.com www.chrisgomez.com Twitter: @SpaceShot
  • 2. Eventboard  Use Eventboard to evaluate presentations today.  Available for Windows 8, and Mobile… iOs, Android, Windows Phone
  • 3. Definitions  “AJAX” – xmlhttprequest, calling back to server without page refresh  “HTML5” -  “Modern Browsers” – Latest Firefox or Chrome, IE 9 or 10 (lean towards 10).
  • 4. XML Ruby On Rails Sinatra ODBC Requests Developing for the Web Database Web Server Classic ASP Access Static HTML CGI/ISAPI ASP.NET (WebForms) SQL Server NoSQLMongoDB RavenDB HTTP AJAX ASP.NET Web APICassandra CouchDB NodeJS Jade JSONP CookiesLinq to SQL SQL Server Express SQL Server Compact ASP.NET MVC EF Code First
  • 5. Requests The Stateless Web (or “Who are you? What’s going on here?”) Database Web Server Hey, it’s John Baird Who? Ugh, you forgot? Try a cookie? Hold a sec… Let’s see… Jim Bear… John Barker… John… Baird! Here’s Session State! Great, thanks! Here’s how the web page looks now! Finally…
  • 6. When does this approach break down?  Loading of complex and fast changing state  Realtime updates to the browser  Working around the “page cycle”
  • 7. What’s a “Stateful” Web Server? Requests Web Server This is Chris, I moved token #1 to 100,100 John moved token #2 to 400,100
  • 8. Board game scenario  All players can join at any time and view the game state as it currently is  All players can join a chat and talk in real time  All players can move game tokens around at any time  Other players see the tokens in motion • The environment is extensible via a common scripting language.
  • 9. File > New Project  ASP.NET MVC 4 Web Application  Empty Project (nothing done for you)  No Unit Tests / Razor  Just using MVC as a means to quickly deliver a web page
  • 10. Steve Sanderson’s “App” Layouts  http://blog.stevensanderson.com/2011/10/05/full- height-app-layouts-a-css-trick-to-make-it-easier/  Don’t think this is the only way or the only place or the only guy looking at this
  • 11. HTML5 Canvas  “Immediate Mode” rendering  <canvas> tag  Only accessible via JavaScript Use a library or toolkit!
  • 12. EaselJS  Part of CreateJS Suite (www.createjs.com)
  • 13. EaselJS API Stage – Manages a canvas for you Ticker – Represents the “Game loop” or “render loop” Bitmap – Represents a bitmap on a canvas SpriteSheet – Assists in keyframe (flipbook) style animation Touch – assists with Touch support in Chrome.Firefox, IE10
  • 14. SignalR  Started as open source project (within Microsoft ASP.NET team)  In PreRelease as a full member of ASP.NET.  Moving into Microsoft.AspNet.SignalR  Supporting web clients and ASP.NET servers  Also supports .NET Clients and WinRT clients.  You can “self-host” Version 1.0!!
  • 15. Building Real-time Web Apps at build http://channel9.msdn.com/Events/Build/2012/3-034/player
  • 16. I maintain & update game state as it happens I deliver HTML/JS to bootstrap Web Server --MVC on IIS— Requests Game Board Archectiture Console App SignalR “GameHub”
  • 17. JavaScript Engines  NOT the same as letting user script run in the browser  This is running on the server  Use a Javascript implementation to drive adoption of your API or platform  There are Javascript developers already out there!  No one writes CustomSuperDuperScriptXPlus!
  • 18. Hosting Javascript Console App JavaScript Engine Context Exposes a CLR object like “map” Exposes public methods: GetTokenList()

Notas do Editor

  1. More or less, it’s been two decades of the web. At first, we just made http calls from browsers and rendered markup. Things have changed quite a bit, in terms of the frameworks we use.
  2. Consider EaselJS, part of CreateJS (www.CreateJS.com) or KineticJS (http://kineticjs.com/) for HTML5 canvas libraries. You also can consider ImpactJS if you are interested in games, as it is focused squarely on game development.
  3. Create a new stage, add “children” which can be Bitmaps, SpriteSheets, Shapes, or other drawings. Tell the Ticker how fast you want your render loop to go (17 means update every 17ms which comes out to 60 frames per second)
  4. Find the latest documentation here: http://createjs.com/Docs/EaselJS/classes/Touch.html
  5. SignalR is now 1.0! You now longer have to set to “Include Prerelease” to get the NuGet Packages. SignalR used to have a home on the web at http://SignalR.Net, but that wasn’t working recently and there is an official ASP.NET home at: http://www.asp.net/signalr.
  6. Learn from the source! This build talk is the most direct information on SignalR’s intent, goals, and future.
  7. Some JavaScript Engines for .NET