Reactive Apps – Brief History of the Web – The Web Platform



Reactive Apps – Brief History of the Web – The Web Platform

0 0


reactive-apps-presentation


On Github ahatfield / reactive-apps-presentation

Reactive Apps

Brief History of the Web

  • Mid 1990s
  • Static Content
  • CGI Late 90s
  • Templating – meshing logic with markup, PHP, ASP, etc.
  • MSFT creates AJAX & DHTML
  • W3C ratifies DOMEarly 2000s
  • MVC, JSF, Struts, ASP.NET
  • Flash/Flex
  • LAMP Mid 2000s
  • Rails - scaffolding, DRY
  • Extension of Rails concepts into other languages, Grails, Django, Cake, etc.
  • "Web 2.0" & RIA
  • Ajax becomes dominant
  • SilverlightLate 2000s
  • First working draft of HTML5 (2008)
  • Proliferation of Mobile Devices – back to native code, no Flash on iOS
  • Javascript rediscovered, JS engine performance race
  • REST APIs and browser consumption in lieu of server-side content generation
  • Functional & polyglot languages regain popularity

Late 2000s – Present

  • JS Metalanguages (CoffeeScript, Typescript, DART)
  • Websockets & Async communication
  • Rethinking HTTP – SPDY
  • REST APIs and browser consumption in lieu of server-side content generation
  • Functional & polyglot languages regain popularity
  • HTML5 features proliferate without spec
  • SPA, Statefulness moves to client
  • MEAN replaces LAMP
  • Isomorphic (polyglot vs. monoglot)
  • Node.JS & vast ecosystem
  • Reactive

Trends in API's

  • REST + JSON for synchronous APIs
  • WebSockets + JSON or STOMP for asynchronous APIs
  • Language-specific API Client SDKs

The Death of SOAP APIs…

"As someone who bears some past responsibility for well used SOAP services (Google's APIs for search and AdWords) let me say now I’d never choose to use SOAP and WSDL again. I was wrong." --Nelson Minar

From Amazon’s AWS User Guide…

We have deprecated the SOAP API for Amazon EC2. We will continue to support SOAP requests for API versions up to and including version 2014-02-01, until the end of December 2014. If you use a SOAP request against a later API version, or after December 2014, you will receive the following response: Client.UnsupportedProtocol: SOAP is no longer supported.

Winner...

Representational State Transfer (REST)

  • Architectural style for web services
  • Minimize the semantic gap between an API and the HTTP protocol
  • … versus SOAP web services…

JavaScript Object Notation (JSON)

  • Simple, text-based data interchange format
  • Objects and Arrays
[{
        "orderId": "12345",
        "type": "limit",
        "duration": "GTC",
        "instructions": "buy",
        "qty": 50,
        "symbol": "AMTD"
    },
    {
        "orderId": "12346",
        "type": "limit",
        "duration": "day",
        "instructions": "buy",
        "qty": 100,
        "symbol": "GOOG"
    }]
                

WebSockets

  • Efficient mechanism for pushing messages from servers to clients
  • Client upgrades the HTTP connection to a WebSocket
  • Considerations around usage

REST History at TDA

  • Edge API
  • Institutional API
  • Smattering of private services
  • Common Observations and Concerns

Recent Efforts to Improve REST APIs at TDA

  • Established REST technology standards (tech stack)
  • Established additional standards, best practices and guidelines
  • Created a REST service archetype and reference/example service project

Future Model for APIs

The Web Platform

Building thick-client or hybrid web applications targeting multi platforms, leveraging 4 key technologies HTML5, CSS3, JS & modern web browsers.
HTML5, JS, & CSS3...
Modern Browsers...

JavaScript

JS has seen growth in several areas around standards and it's quickly being adopted by both open-source and the enterprise it's also become a power house on the server with Node.JS

ECMAScript

ECMAScript is the scripting language standardized by Ecma International in the ECMA-262 specification and ISO/IEC 16262. The language is widely used for client-side scripting on the web, in the form of several well-known implementations such as JavaScript, JScript and ActionScript.
JavaScript projects hosted on Github
These are the basic features a platform or OS should provide
JavaScript & HTML5 features producing the web platform

Client-side Frameworks

MVC and other JS frameworks

Client-side

The "Your App" is where the JavaScript MVC lives and the Server layer is optional and the API Layer represents the REST API
Node.js is a software platform that is used to build scalable network applications. Node.js utilizes JavaScript as its scripting language, and achieves high throughput via non-blocking I/O and a single-threaded event loop.

Isomorphic

Leveragin Node.jS to run the same code on the server that is ran in the server...

HTML5

HTML5 is a core technology markup language of the Internet used for structuring and presenting content for the World Wide Web.

CSS3

CSS3 is the latest evolution of the Cascading Style Sheets language and aims at extending CSS2.1.
SPA + REST + Web Sockets === Winning combo...