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

What's hot

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)
Future Insights
 
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
Dmitry Sheiko
 
Nodejs - Building a RESTful API
Nodejs - Building a RESTful APINodejs - Building a RESTful API
Nodejs - Building a RESTful APISang Cù
 
Moving applications to the cloud
Moving applications to the cloudMoving applications to the cloud
Moving applications to the cloud
Sergejus Barinovas
 
WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?WebAssembly - kolejny buzzword, czy (r)ewolucja?
WebAssembly - kolejny buzzword, czy (r)ewolucja?
Brainhub
 
Going Node.js at Netflix
Going Node.js at NetflixGoing Node.js at Netflix
Going Node.js at Netflix
micahr
 
Server-Side JavaScript
Server-Side JavaScriptServer-Side JavaScript
Server-Side JavaScript
Ian Selby
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
Spike Brehm
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptSpike Brehm
 
WebSocket For Web Rubyists
WebSocket For Web RubyistsWebSocket For Web Rubyists
WebSocket For Web Rubyists
Mu-Fan Teng
 
Node.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash CourseNode.js & Twitter Bootstrap Crash Course
Node.js & Twitter Bootstrap Crash Course
Aaron Silverman
 
Build App with Nodejs - YWC Workshop
Build App with Nodejs - YWC WorkshopBuild App with Nodejs - YWC Workshop
Build App with Nodejs - YWC Workshop
Sarunyhot Suwannachoti
 
A New Vue for Web Development
A New Vue for Web DevelopmentA New Vue for Web Development
A New Vue for Web Development
Chad Campbell
 
Web assembly: a brief overview
Web assembly: a brief overviewWeb assembly: a brief overview
Web assembly: a brief overview
Pavlo Iatsiuk
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
Basarat Syed
 
Web Front End Performance
Web Front End PerformanceWeb Front End Performance
Web Front End Performance
Chris Love
 
Intro to Sails.js
Intro to Sails.jsIntro to Sails.js
Intro to Sails.js
DevOpsDays Austin 2014
 
Javascript now and in the future
Javascript now and in the futureJavascript now and in the future
Javascript now and in the future
Denis Stoyanov
 
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
Chadchapol Vittavutkarnvej
 

What's hot (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
 

Similar to The Realtime Web: Stateful and Programmable

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
Matt Raible
 
Web development concepts using microsoft technologies
Web development concepts using microsoft technologiesWeb development concepts using microsoft technologies
Web development concepts using microsoft technologies
Hosam Kamel
 
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
Matt Raible
 
The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5The Modern Web, Part 2: HTML5
The Modern Web, Part 2: HTML5
David Pallmann
 
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
Matt Raible
 
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
Matt Raible
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
Robert MacLean
 
Node.js vs Play Framework
Node.js vs Play FrameworkNode.js vs Play Framework
Node.js vs Play Framework
Yevgeniy Brikman
 
Coding the UI
Coding the UICoding the UI
Coding the UI
Mark Meeker
 
The Changing Face Of The Web
The Changing Face Of The WebThe Changing Face Of The Web
The Changing Face Of The Web
David Chou
 
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
Randy Connolly
 
Teaching old java script new tricks
Teaching old java script new tricksTeaching old java script new tricks
Teaching old java script new tricksSimon Sturmer
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
Ashlimarie
 
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
Naga Harish M
 
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
Helder da Rocha
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
Nathan Smith
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
Bluegrass Digital
 

Similar to 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
 

More from Christopher Gomez

React Faceoff at Philly.NET
React Faceoff at Philly.NETReact Faceoff at Philly.NET
React Faceoff at Philly.NET
Christopher Gomez
 
Who Needs Visual Studio?
Who Needs Visual Studio?Who Needs Visual Studio?
Who Needs Visual Studio?
Christopher Gomez
 
Azure Web Apps - Introduction
Azure Web Apps - IntroductionAzure Web Apps - Introduction
Azure Web Apps - Introduction
Christopher Gomez
 
Mastering git
Mastering gitMastering git
Mastering git
Christopher Gomez
 
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
Christopher Gomez
 
Practical Git - Philly.NET Code Camp
Practical Git - Philly.NET Code CampPractical Git - Philly.NET Code Camp
Practical Git - Philly.NET Code Camp
Christopher Gomez
 
Practical Git - NYC Code Camp
Practical Git - NYC Code CampPractical Git - NYC Code Camp
Practical Git - NYC Code Camp
Christopher Gomez
 

More from 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
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 

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

  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