SlideShare a Scribd company logo
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()

More Related Content

PDF
Kickstarter Your Node.JS Application
PDF
20111129 modernizr
PDF
Node PDX: Intro to Sails.js
PPTX
WebAssembly overview. KievJS meetup
KEY
Thats Not Flash?
PDF
WebAssembly Overview
KEY
Sugarcoating your frontend one ViewModel at a time
Kickstarter Your Node.JS Application
20111129 modernizr
Node PDX: Intro to Sails.js
WebAssembly overview. KievJS meetup
Thats Not Flash?
WebAssembly Overview
Sugarcoating your frontend one ViewModel at a time

What's hot (20)

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

Similar to The Realtime Web: Stateful and Programmable (20)

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

More from Christopher Gomez (7)

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

Recently uploaded (20)

PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Encapsulation theory and applications.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation_ Review paper, used for researhc scholars
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Chapter 3 Spatial Domain Image Processing.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MIND Revenue Release Quarter 2 2025 Press Release
Programs and apps: productivity, graphics, security and other tools
Per capita expenditure prediction using model stacking based on satellite ima...
sap open course for s4hana steps from ECC to s4
Encapsulation theory and applications.pdf
Review of recent advances in non-invasive hemoglobin estimation
Diabetes mellitus diagnosis method based random forest with bat algorithm
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows

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()

Editor's Notes

  • #5: 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.
  • #13: 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.
  • #14: 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)
  • #15: Find the latest documentation here: http://createjs.com/Docs/EaselJS/classes/Touch.html
  • #16: 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.
  • #17: Learn from the source! This build talk is the most direct information on SignalR’s intent, goals, and future.
  • #19: Some JavaScript Engines for .NET