SlideShare a Scribd company logo
Interoperable JavaScript-Based Client/Server Web Applications Kris Zyp
 
Overview Service oriented client/server web application Tools of interoperability REST Defines interoperable web architecture JSON Referencing/JSON Hyperlinking JSON Schema JSONQuery Comet - Bayeux & REST Channels Consistent programming and data model on client and server Dojo & Persevere - see it in action!
SOA-Based Client/Server Model Distribution of Processing User response latency Programming model Vector of attack State management on server vs client Offline capabilities Interoperability
Service Oriented Architecture on the Web Web Service Provider CS Web Client Web Client Desktop Client Methods Methods Methods
REST Basics It is an architectural style not a format or API The web has leveraged REST Web applications can choose to leverage the benefits of REST or not Implications for how we develop the internal architecture http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
REST Basics The REST Style Constraints Client-Server Stateless Cacheable Uniform Interface Layered Code-On-Demand http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
Interoperability Basics HTTP REST GET - query and get by id PUT - update an object POST - create an object DELETE - delete an object
Uniform Interface One interface for all applications Manipulation of resources, standard methods: PUT, POST, DELETE From a single URL data can be discovered via hyperlinks Data can be accessed without out-of-band API documentation
Standard Conventions Objects/records accessible by /table/id /Product/12 GET, PUT, and DELETE this resource Sub object URLs determined by object identity properties GET /Product/ [{“id”:”11”, “name”:”Dérailleur”},  {“id”:”12”, “name”:”Handle Bar”}]
HTTP/REST + JSON = Database interaction for the web REST Architecture recommends UI - data separation On the wire: On-demand code Data (resource representations)
Tools/Frameworks Client Side Dojo Jester Persevere Futon Server Side CouchDB Persevere SimpleDB ...
The post-ORM realm
Referencing Hyperlinking + JSON Cyclic Multiple references Cross-message references Cross-site references http://www.sitepen.com/blog/2008/06/17/json-referencing-in-dojo/
JSON Referencing Example { “ name”:”Kris Zyp”, “id”:”kriszyp”, “ children”:[ {“id”:”jennikazyp”,“name”:”Jennika Zyp”} ], “ spouse”:{ “ name”:”Nicole Zyp”, “ spouse”:{“$ref”:”kriszyp”}, “ children”:[ {“$ref”:”jennikazyp”} ] } } }
JSON Referencing Example (Fragments and Remote) { “ name”:”Kris Zyp”, “ children”:[ {“name”:”Jennika Zyp”} ], “ spouse”:{“name”:”Nicole Zyp”, “ spouse”:{“$ref”:”#”}, “ children”:{“$ref”:”#children”}}, “ friends”:[   {“$ref”:” http://anothersite.com/jesse ”} ] }
Dojo Data
ServiceStore Adapts web services to dojo.data API Plug services directly into widgets Supports lazy loading
JsonRestStore Full Read/Write API Create,  Read/Query,  Update Delete Standards Based (HTTP compliant)
Read/Write REST Services REST Services can plugin for full read/write ORM-style functionality: GET - query and get by id PUT - update an object POST - create an object DELETE - delete an object
JsonRestStore Lazy loading JSON Referencing Transactional Offline Support
Persevere Built for Client-side MVC, UI - Data separation JSONQuery/JSONPath JSON Referencing Comet Live Data Notifications JSON Schema with evolutionary constraints JSON-RPC Built-in Security Standards based REST interface http://sitepen.com/labs/persevere.php
JSON Schema schema: { "description":"A person",  "type":"object",  "properties":  { "name": {"type":"string"},  "age" : {"type":"integer","maximum":125} } } instance: { “ name”: ”Kris”, “ age”: 30 }
JSON Schema Schema: { "description":"A person", "type":"object", "properties":{ "name": {"type":"string"},  "age": { "type":["integer",”string”], “ friends”: { “ type”:”array”, “ items”:{“type”:”object”} } } } } instance: { “ name”:”Kris”, “ age”:”old”, “ friends”:[{“name”:”Nikki”}] }
JSON Schema Schema: { “ id”:”marriedperson”, "description":"A married person",  "extends": {“$ref”:”marriedperson”},  "properties": {"spouse": {"$ref":"marriedperson"}} } instance: { “ name”:”Kris”, “ age”:”old”, “ friends”:[{“name”:”Bill”}], “ spouse”:{$”ref”:”nikki”} }
Schemas DB defined schema - Relational DBs Schema free – Document DBs Evolutionary schema - Persevere
JSON Schema based evolutionary schema Start without a schema Add constraints as application evolves
JSON Schema driven UI Start with schema http://javascript.neyric.com/inputex/examples/json-schema2.html http://javascript.neyric.com/inputex/examples/base-schema.js
JSON Schema Support Validate JSON/object-style data Enforce data constraints on the client side in JsonRestStore Document interfaces and provide API contracts Can be used in SMDs Generate schema-driven UI with generic clients
Server side JavaScript + web storage http://sitepen.com/labs/persevere.php "schema":{ “ name”:”Friend”, “ properties”:{ “ firstName”:{“type”:”string”}, “age”:{“type”:”integer”}, } "staticCreateMethod":function(arg1){ var friend = new Friend(); friend.age = 0; }, "prototype":{ “ myMethod”:function(){ return this.firstName + ‘ ‘ + this.lastName; } } "extends":{"$ref":"../Person"} }
JSON Schema + JavaScript Adds typing/classes to JavaScript Unobtrusive Flexible Dynamic Portable Can be integrated with data storage
JSON-RPC RPC in JSON Widely adopted Example: { “id”:”1”, “method”:”addAge”, “params”:[“3”] }
ServerJS Interoperable JS Modules Defines module loader via “require” function Various modules in the works File I/O HTTP request handling interface Promises
Querying Web-safe portability important SQL extremely hard to make secure and too complicated in the browser JSONPath JavaScript-style syntax Language agnostic Easy to secure http://goessner.net/articles/JsonPath/
JSONPath http://goessner.net/articles/JsonPath/ XPath like query language for JSON Filters - [?expr] Properties/paths (like JS) - .prop Recursive descent - ..prop Slice operator – [3:10:2] Union operator - [3,4,5]
JSONPath querying in requests JSONPath + REST URLs = Web querying /Table/ - All the objects in a table /Table/[?@.price < 10] – all items with a price under $10 /Table/..name – A list of the name property values /Table/.length – A count of the items in the table
JSONQuery http://www.sitepen.com/blog/2008/07/16/jsonquery-data-querying-beyond-jsonpath/ Lenient Syntax - ?price<10 Sorting - [/price, \rating] Mapping - [=firstName+' '+lastName] Wildcarding [?description='*fun*'] Recursive object filter - ..[?name='Bar'] Example URL: /Table/[?price<10] [={name:name, rating: rating}] [\rating]
Push/Comet Open Protocols for Comet Bayeux XMPP REST Channels
Bayeux Service Negotiation Publish/Subscribe Protocol
Live Data Notifications with REST Channels http://cometdaily.com/2008/05/13/http-channels-2/
REST Channels Push Protocol to augment REST architectural style Based on HTTP standard semantics
HTTP Channels (REST Channels over HTTP) HTTP/1.1 200 OK X-Event: PUT Content-Location: /foo/bar New content of /foo/bar
REST Channels in JSON Accompanied by Demo { “ event”: “put” “ source”: “/foo/bar” “ content”: “New content of /foo/bar” }
Offline + REST REST + Thin Server = Easy Offline Going offline requires a “capable” client Dojo’s support for Offline SOA Applications Accompanied by Demo
Security in SOA Security clearly distinct from UI code Assume users are directly accessing services Improved isolation of security
Security with web accessible data storage Typical databases behind the application Web DBs are directly accessible User authorization becomes integrated with data Allows separation of application and security concerns
Transactions
REST/Ajax JSON Databases Standards based interoperable web database interaction More direct, cleaner model for creating web applications Leverage the web's REST model Caching, proxying, etc.
Persevere JSONQuery/JSONPath JSON Referencing Comet Live Data Notifications JSON Schema with evolutionary constraints JSON-RPC Built-in Security Standards based REST interface http://sitepen.com/labs/persevere.php
Characteristics of good client/server application Clean client/server interface Interchangeability Increased presentation on the client Business logic on the server http://www.sitepen.com/blog/2008/07/18/clientserver-model-on-the-web/
Dojo’s SOA Service auto configuration Integration into Dojo Data model Full REST interaction support Comet and Offline capabilities All based on standards, easy to switch to something else
REST/ Ajax databases Develop for the future
The Open Web is more than just licensing GPL LGPL BSD
Web Application Development Technical Advice Support Services Training Simple.  Fast.  Extraordinary. For clients including: Providing: http://sitepen.com/
Ad

Recommended

Cwinters Intro To Rest And JerREST and Jersey Introductionsey
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
elliando dias
 
AJAX - An introduction
AJAX - An introduction
Eleonora Ciceri
 
Json
Json
Anand Kumar Rajana
 
HTML5 - An introduction
HTML5 - An introduction
Eleonora Ciceri
 
Intoduction to php web services and json
Intoduction to php web services and json
baabtra.com - No. 1 supplier of quality freshers
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
Stormpath
 
REST Presentation
REST Presentation
Alexandros Marinos
 
Restful web services by Sreeni Inturi
Restful web services by Sreeni Inturi
Sreeni I
 
JSON and JSON Schema in Oxygen
JSON and JSON Schema in Oxygen
Octavian Nadolu
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOAS
Guy K. Kloss
 
JSON and REST
JSON and REST
Robert MacLean
 
Json
Json
krishnapriya Tadepalli
 
Json
Json
Shyamala Prayaga
 
Restful webservice
Restful webservice
Dong Ngoc
 
Rest presentation
Rest presentation
srividhyau
 
Rest web services
Rest web services
Paulo Gandra de Sousa
 
JavaScript Object Notation (JSON)
JavaScript Object Notation (JSON)
BOSS Webtech
 
RESTEasy
RESTEasy
Khushbu Joshi
 
Resource Oriented Architectures
Resource Oriented Architectures
Gabriele Lana
 
Json
Json
baabtra.com - No. 1 supplier of quality freshers
 
REST Web API with MongoDB
REST Web API with MongoDB
MongoDB
 
REST & RESTful Web Service
REST & RESTful Web Service
Hoan Vu Tran
 
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
Geert Pante
 
JSON-LD update DC 2017
JSON-LD update DC 2017
Gregg Kellogg
 
NoSQL Now 2013 Presentation
NoSQL Now 2013 Presentation
Arjen Schoneveld
 
Mongo - an intermediate introduction
Mongo - an intermediate introduction
nklmish
 
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Cesare Pautasso
 
JSON: The Basics
JSON: The Basics
Jeff Fox
 
Creating Data Driven HTML5 Applications
Creating Data Driven HTML5 Applications
Gil Fink
 
Web crawler - Scrapy
Web crawler - Scrapy
yafish
 

More Related Content

What's hot (20)

JSON and JSON Schema in Oxygen
JSON and JSON Schema in Oxygen
Octavian Nadolu
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOAS
Guy K. Kloss
 
JSON and REST
JSON and REST
Robert MacLean
 
Json
Json
krishnapriya Tadepalli
 
Json
Json
Shyamala Prayaga
 
Restful webservice
Restful webservice
Dong Ngoc
 
Rest presentation
Rest presentation
srividhyau
 
Rest web services
Rest web services
Paulo Gandra de Sousa
 
JavaScript Object Notation (JSON)
JavaScript Object Notation (JSON)
BOSS Webtech
 
RESTEasy
RESTEasy
Khushbu Joshi
 
Resource Oriented Architectures
Resource Oriented Architectures
Gabriele Lana
 
Json
Json
baabtra.com - No. 1 supplier of quality freshers
 
REST Web API with MongoDB
REST Web API with MongoDB
MongoDB
 
REST & RESTful Web Service
REST & RESTful Web Service
Hoan Vu Tran
 
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
Geert Pante
 
JSON-LD update DC 2017
JSON-LD update DC 2017
Gregg Kellogg
 
NoSQL Now 2013 Presentation
NoSQL Now 2013 Presentation
Arjen Schoneveld
 
Mongo - an intermediate introduction
Mongo - an intermediate introduction
nklmish
 
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Cesare Pautasso
 
JSON: The Basics
JSON: The Basics
Jeff Fox
 
JSON and JSON Schema in Oxygen
JSON and JSON Schema in Oxygen
Octavian Nadolu
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOAS
Guy K. Kloss
 
Restful webservice
Restful webservice
Dong Ngoc
 
Rest presentation
Rest presentation
srividhyau
 
JavaScript Object Notation (JSON)
JavaScript Object Notation (JSON)
BOSS Webtech
 
Resource Oriented Architectures
Resource Oriented Architectures
Gabriele Lana
 
REST Web API with MongoDB
REST Web API with MongoDB
MongoDB
 
REST & RESTful Web Service
REST & RESTful Web Service
Hoan Vu Tran
 
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
Geert Pante
 
JSON-LD update DC 2017
JSON-LD update DC 2017
Gregg Kellogg
 
NoSQL Now 2013 Presentation
NoSQL Now 2013 Presentation
Arjen Schoneveld
 
Mongo - an intermediate introduction
Mongo - an intermediate introduction
nklmish
 
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Some REST Design Patterns (and Anti-Patterns) - SOA Symposium 2009
Cesare Pautasso
 
JSON: The Basics
JSON: The Basics
Jeff Fox
 

Viewers also liked (18)

Creating Data Driven HTML5 Applications
Creating Data Driven HTML5 Applications
Gil Fink
 
Web crawler - Scrapy
Web crawler - Scrapy
yafish
 
快快樂樂學 Scrapy
快快樂樂學 Scrapy
recast203
 
Creating a Data Driven UI Framework
Creating a Data Driven UI Framework
Ankur Bansal
 
Scrapy
Scrapy
Francisco Sousa
 
2015년 UX 최신 트렌드 및 전망
2015년 UX 최신 트렌드 및 전망
Billy Choi
 
XPath for web scraping
XPath for web scraping
Scrapinghub
 
電腦不只會幫你選土豆,還會幫你選新聞
電腦不只會幫你選土豆,還會幫你選新聞
Andy Dai
 
均一Gae甘苦談
均一Gae甘苦談
蘇 倚恩
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
changehee lee
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
Web backends development using Python
Web backends development using Python
Ayun Park
 
如何用 grs 擷取台灣上市股票股價資訊 PyCon APAC 2014
如何用 grs 擷取台灣上市股票股價資訊 PyCon APAC 2014
Toomore
 
Web Servers (ppt)
Web Servers (ppt)
webhostingguy
 
Learn REST API with Python
Learn REST API with Python
Larry Cai
 
Visualising Data with Code
Visualising Data with Code
Ri Liu
 
Web Scraping in Python with Scrapy
Web Scraping in Python with Scrapy
orangain
 
Developing RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDB
Nicola Iarocci
 
Creating Data Driven HTML5 Applications
Creating Data Driven HTML5 Applications
Gil Fink
 
Web crawler - Scrapy
Web crawler - Scrapy
yafish
 
快快樂樂學 Scrapy
快快樂樂學 Scrapy
recast203
 
Creating a Data Driven UI Framework
Creating a Data Driven UI Framework
Ankur Bansal
 
2015년 UX 최신 트렌드 및 전망
2015년 UX 최신 트렌드 및 전망
Billy Choi
 
XPath for web scraping
XPath for web scraping
Scrapinghub
 
電腦不只會幫你選土豆,還會幫你選新聞
電腦不只會幫你選土豆,還會幫你選新聞
Andy Dai
 
均一Gae甘苦談
均一Gae甘苦談
蘇 倚恩
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
changehee lee
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
Web backends development using Python
Web backends development using Python
Ayun Park
 
如何用 grs 擷取台灣上市股票股價資訊 PyCon APAC 2014
如何用 grs 擷取台灣上市股票股價資訊 PyCon APAC 2014
Toomore
 
Learn REST API with Python
Learn REST API with Python
Larry Cai
 
Visualising Data with Code
Visualising Data with Code
Ri Liu
 
Web Scraping in Python with Scrapy
Web Scraping in Python with Scrapy
orangain
 
Developing RESTful Web APIs with Python, Flask and MongoDB
Developing RESTful Web APIs with Python, Flask and MongoDB
Nicola Iarocci
 
Ad

Similar to Java Script Based Client Server Webapps 2 (20)

Advanced Json
Advanced Json
guestfd7d7c
 
Json-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the web
kriszyp
 
RESTful JSON web databases
RESTful JSON web databases
kriszyp
 
08 ajax
08 ajax
Ynon Perek
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
b_kathir
 
Ws rest
Ws rest
patriknw
 
LF_APIStrat17_Embracing JSON Schema
LF_APIStrat17_Embracing JSON Schema
LF_APIStrat
 
Con fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhakti
Bhakti Mehta
 
CS8651 IP Unit 2 pdf regulation -2017 anna university
CS8651 IP Unit 2 pdf regulation -2017 anna university
amrashbhanuabdul
 
Introduction to JSON & AJAX
Introduction to JSON & AJAX
Collaboration Technologies
 
Data models in Angular 1 & 2
Data models in Angular 1 & 2
Adam Klein
 
Document Databases & RavenDB
Document Databases & RavenDB
Brian Ritchie
 
David Gómez G. - Hypermedia APIs for headless platforms and Data Integration ...
David Gómez G. - Hypermedia APIs for headless platforms and Data Integration ...
Codemotion
 
Cdm mil-18 - hypermedia ap is for headless platforms and data integration
Cdm mil-18 - hypermedia ap is for headless platforms and data integration
David Gómez García
 
Pythonlearn-13-WebServices.pptx
Pythonlearn-13-WebServices.pptx
nishant874609
 
Android and REST
Android and REST
Roman Woźniak
 
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Geoffrey Fox
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Jackson F. de A. Mafra
 
Switch to Backend 2023
Switch to Backend 2023
Google Developer Students Club NIT Silchar
 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
Igor Moochnick
 
Json-based Service Oriented Architecture for the web
Json-based Service Oriented Architecture for the web
kriszyp
 
RESTful JSON web databases
RESTful JSON web databases
kriszyp
 
Developing RESTful WebServices using Jersey
Developing RESTful WebServices using Jersey
b_kathir
 
LF_APIStrat17_Embracing JSON Schema
LF_APIStrat17_Embracing JSON Schema
LF_APIStrat
 
Con fess 2013-sse-websockets-json-bhakti
Con fess 2013-sse-websockets-json-bhakti
Bhakti Mehta
 
CS8651 IP Unit 2 pdf regulation -2017 anna university
CS8651 IP Unit 2 pdf regulation -2017 anna university
amrashbhanuabdul
 
Data models in Angular 1 & 2
Data models in Angular 1 & 2
Adam Klein
 
Document Databases & RavenDB
Document Databases & RavenDB
Brian Ritchie
 
David Gómez G. - Hypermedia APIs for headless platforms and Data Integration ...
David Gómez G. - Hypermedia APIs for headless platforms and Data Integration ...
Codemotion
 
Cdm mil-18 - hypermedia ap is for headless platforms and data integration
Cdm mil-18 - hypermedia ap is for headless platforms and data integration
David Gómez García
 
Pythonlearn-13-WebServices.pptx
Pythonlearn-13-WebServices.pptx
nishant874609
 
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Geoffrey Fox
 
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Jackson F. de A. Mafra
 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
Igor Moochnick
 
Ad

Recently uploaded (20)

High Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdf
Safe Software
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
High Availability On-Premises FME Flow.pdf
High Availability On-Premises FME Flow.pdf
Safe Software
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Floods in Valencia: Two FME-Powered Stories of Data Resilience
Safe Software
 
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
AudGram Review: Build Visually Appealing, AI-Enhanced Audiograms to Engage Yo...
SOFTTECHHUB
 
Supporting the NextGen 911 Digital Transformation with FME
Supporting the NextGen 911 Digital Transformation with FME
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance Seminar State of Passkeys.pptx
FIDO Alliance
 
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
FME for Good: Integrating Multiple Data Sources with APIs to Support Local Ch...
Safe Software
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc Webinar - 2025 Global Privacy Survey
TrustArc
 
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 

Java Script Based Client Server Webapps 2

  • 2.  
  • 3. Overview Service oriented client/server web application Tools of interoperability REST Defines interoperable web architecture JSON Referencing/JSON Hyperlinking JSON Schema JSONQuery Comet - Bayeux & REST Channels Consistent programming and data model on client and server Dojo & Persevere - see it in action!
  • 4. SOA-Based Client/Server Model Distribution of Processing User response latency Programming model Vector of attack State management on server vs client Offline capabilities Interoperability
  • 5. Service Oriented Architecture on the Web Web Service Provider CS Web Client Web Client Desktop Client Methods Methods Methods
  • 6. REST Basics It is an architectural style not a format or API The web has leveraged REST Web applications can choose to leverage the benefits of REST or not Implications for how we develop the internal architecture http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
  • 7. REST Basics The REST Style Constraints Client-Server Stateless Cacheable Uniform Interface Layered Code-On-Demand http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
  • 8. Interoperability Basics HTTP REST GET - query and get by id PUT - update an object POST - create an object DELETE - delete an object
  • 9. Uniform Interface One interface for all applications Manipulation of resources, standard methods: PUT, POST, DELETE From a single URL data can be discovered via hyperlinks Data can be accessed without out-of-band API documentation
  • 10. Standard Conventions Objects/records accessible by /table/id /Product/12 GET, PUT, and DELETE this resource Sub object URLs determined by object identity properties GET /Product/ [{“id”:”11”, “name”:”Dérailleur”}, {“id”:”12”, “name”:”Handle Bar”}]
  • 11. HTTP/REST + JSON = Database interaction for the web REST Architecture recommends UI - data separation On the wire: On-demand code Data (resource representations)
  • 12. Tools/Frameworks Client Side Dojo Jester Persevere Futon Server Side CouchDB Persevere SimpleDB ...
  • 14. Referencing Hyperlinking + JSON Cyclic Multiple references Cross-message references Cross-site references http://www.sitepen.com/blog/2008/06/17/json-referencing-in-dojo/
  • 15. JSON Referencing Example { “ name”:”Kris Zyp”, “id”:”kriszyp”, “ children”:[ {“id”:”jennikazyp”,“name”:”Jennika Zyp”} ], “ spouse”:{ “ name”:”Nicole Zyp”, “ spouse”:{“$ref”:”kriszyp”}, “ children”:[ {“$ref”:”jennikazyp”} ] } } }
  • 16. JSON Referencing Example (Fragments and Remote) { “ name”:”Kris Zyp”, “ children”:[ {“name”:”Jennika Zyp”} ], “ spouse”:{“name”:”Nicole Zyp”, “ spouse”:{“$ref”:”#”}, “ children”:{“$ref”:”#children”}}, “ friends”:[ {“$ref”:” http://anothersite.com/jesse ”} ] }
  • 18. ServiceStore Adapts web services to dojo.data API Plug services directly into widgets Supports lazy loading
  • 19. JsonRestStore Full Read/Write API Create, Read/Query, Update Delete Standards Based (HTTP compliant)
  • 20. Read/Write REST Services REST Services can plugin for full read/write ORM-style functionality: GET - query and get by id PUT - update an object POST - create an object DELETE - delete an object
  • 21. JsonRestStore Lazy loading JSON Referencing Transactional Offline Support
  • 22. Persevere Built for Client-side MVC, UI - Data separation JSONQuery/JSONPath JSON Referencing Comet Live Data Notifications JSON Schema with evolutionary constraints JSON-RPC Built-in Security Standards based REST interface http://sitepen.com/labs/persevere.php
  • 23. JSON Schema schema: { &quot;description&quot;:&quot;A person&quot;, &quot;type&quot;:&quot;object&quot;, &quot;properties&quot;: { &quot;name&quot;: {&quot;type&quot;:&quot;string&quot;}, &quot;age&quot; : {&quot;type&quot;:&quot;integer&quot;,&quot;maximum&quot;:125} } } instance: { “ name”: ”Kris”, “ age”: 30 }
  • 24. JSON Schema Schema: { &quot;description&quot;:&quot;A person&quot;, &quot;type&quot;:&quot;object&quot;, &quot;properties&quot;:{ &quot;name&quot;: {&quot;type&quot;:&quot;string&quot;}, &quot;age&quot;: { &quot;type&quot;:[&quot;integer&quot;,”string”], “ friends”: { “ type”:”array”, “ items”:{“type”:”object”} } } } } instance: { “ name”:”Kris”, “ age”:”old”, “ friends”:[{“name”:”Nikki”}] }
  • 25. JSON Schema Schema: { “ id”:”marriedperson”, &quot;description&quot;:&quot;A married person&quot;, &quot;extends&quot;: {“$ref”:”marriedperson”}, &quot;properties&quot;: {&quot;spouse&quot;: {&quot;$ref&quot;:&quot;marriedperson&quot;}} } instance: { “ name”:”Kris”, “ age”:”old”, “ friends”:[{“name”:”Bill”}], “ spouse”:{$”ref”:”nikki”} }
  • 26. Schemas DB defined schema - Relational DBs Schema free – Document DBs Evolutionary schema - Persevere
  • 27. JSON Schema based evolutionary schema Start without a schema Add constraints as application evolves
  • 28. JSON Schema driven UI Start with schema http://javascript.neyric.com/inputex/examples/json-schema2.html http://javascript.neyric.com/inputex/examples/base-schema.js
  • 29. JSON Schema Support Validate JSON/object-style data Enforce data constraints on the client side in JsonRestStore Document interfaces and provide API contracts Can be used in SMDs Generate schema-driven UI with generic clients
  • 30. Server side JavaScript + web storage http://sitepen.com/labs/persevere.php &quot;schema&quot;:{ “ name”:”Friend”, “ properties”:{ “ firstName”:{“type”:”string”}, “age”:{“type”:”integer”}, } &quot;staticCreateMethod&quot;:function(arg1){ var friend = new Friend(); friend.age = 0; }, &quot;prototype&quot;:{ “ myMethod”:function(){ return this.firstName + ‘ ‘ + this.lastName; } } &quot;extends&quot;:{&quot;$ref&quot;:&quot;../Person&quot;} }
  • 31. JSON Schema + JavaScript Adds typing/classes to JavaScript Unobtrusive Flexible Dynamic Portable Can be integrated with data storage
  • 32. JSON-RPC RPC in JSON Widely adopted Example: { “id”:”1”, “method”:”addAge”, “params”:[“3”] }
  • 33. ServerJS Interoperable JS Modules Defines module loader via “require” function Various modules in the works File I/O HTTP request handling interface Promises
  • 34. Querying Web-safe portability important SQL extremely hard to make secure and too complicated in the browser JSONPath JavaScript-style syntax Language agnostic Easy to secure http://goessner.net/articles/JsonPath/
  • 35. JSONPath http://goessner.net/articles/JsonPath/ XPath like query language for JSON Filters - [?expr] Properties/paths (like JS) - .prop Recursive descent - ..prop Slice operator – [3:10:2] Union operator - [3,4,5]
  • 36. JSONPath querying in requests JSONPath + REST URLs = Web querying /Table/ - All the objects in a table /Table/[[email protected] < 10] – all items with a price under $10 /Table/..name – A list of the name property values /Table/.length – A count of the items in the table
  • 37. JSONQuery http://www.sitepen.com/blog/2008/07/16/jsonquery-data-querying-beyond-jsonpath/ Lenient Syntax - ?price<10 Sorting - [/price, \rating] Mapping - [=firstName+' '+lastName] Wildcarding [?description='*fun*'] Recursive object filter - ..[?name='Bar'] Example URL: /Table/[?price<10] [={name:name, rating: rating}] [\rating]
  • 38. Push/Comet Open Protocols for Comet Bayeux XMPP REST Channels
  • 39. Bayeux Service Negotiation Publish/Subscribe Protocol
  • 40. Live Data Notifications with REST Channels http://cometdaily.com/2008/05/13/http-channels-2/
  • 41. REST Channels Push Protocol to augment REST architectural style Based on HTTP standard semantics
  • 42. HTTP Channels (REST Channels over HTTP) HTTP/1.1 200 OK X-Event: PUT Content-Location: /foo/bar New content of /foo/bar
  • 43. REST Channels in JSON Accompanied by Demo { “ event”: “put” “ source”: “/foo/bar” “ content”: “New content of /foo/bar” }
  • 44. Offline + REST REST + Thin Server = Easy Offline Going offline requires a “capable” client Dojo’s support for Offline SOA Applications Accompanied by Demo
  • 45. Security in SOA Security clearly distinct from UI code Assume users are directly accessing services Improved isolation of security
  • 46. Security with web accessible data storage Typical databases behind the application Web DBs are directly accessible User authorization becomes integrated with data Allows separation of application and security concerns
  • 48. REST/Ajax JSON Databases Standards based interoperable web database interaction More direct, cleaner model for creating web applications Leverage the web's REST model Caching, proxying, etc.
  • 49. Persevere JSONQuery/JSONPath JSON Referencing Comet Live Data Notifications JSON Schema with evolutionary constraints JSON-RPC Built-in Security Standards based REST interface http://sitepen.com/labs/persevere.php
  • 50. Characteristics of good client/server application Clean client/server interface Interchangeability Increased presentation on the client Business logic on the server http://www.sitepen.com/blog/2008/07/18/clientserver-model-on-the-web/
  • 51. Dojo’s SOA Service auto configuration Integration into Dojo Data model Full REST interaction support Comet and Offline capabilities All based on standards, easy to switch to something else
  • 52. REST/ Ajax databases Develop for the future
  • 53. The Open Web is more than just licensing GPL LGPL BSD
  • 54. Web Application Development Technical Advice Support Services Training Simple. Fast. Extraordinary. For clients including: Providing: http://sitepen.com/

Editor's Notes

  • #3: SOA on the web, architecture and benefits
  • #12: Working in the post-ORM realmData could be in native object storageData could in relational, but ORM’ed to objectsData storage technology agnosticNon-relational storage Schemas may or may not be appliedLook at this in Persistent Computing on the web presentationDo DemoInstall PersevereCreate TableCreate an objectModify an objectDo a query
  • #24: Analogous to gradual typingBegin prototyping with no schemaSchema-free DB is extremely beneficial for prototyping in early stage agile developmentGradually adding constraints as the application evolvesAnalogous to how we do evolve in user requirements with agile devLanguage and storage agnostic data definitionsUIs can use schemas to auto-generate forms and widgetsUI can auto-update based on schema changesAnother form of rapid prototyping (reverse direction, starting with schemas)Flexible prototyping approachAll can be done with Persevere
  • #25: Persevere includes class definition for each tableTable objects are class instancesPrototype methodsFunction storage capableWorks in conjunction with SchemasJSON-RPC interaction with object methodsAccompanied by DemoSet up PersevereStoreCreate itemModify itemConnect to a widgetShow demo from consoleShow demo from console
  • #31: Any Bayeux client should be able to connect to any Bayeux server and communicatePubSub protocolService/Transport Advertising and NegotiationDefault format for transportsSemantics include:PublishSubscribeDeliverREST Channels provide data modification notifications using HTTP/REST semanticsMinimal extension of HTTP standardsCompatible upgrade to RESTHTTP/MIME or JSON formatEnables live views of data with virtually no extra codingAccompanied by DemoREST Channels provide data modification notifications using HTTP/REST semanticsMinimal extension of HTTP standardsCompatible upgrade to RESTHTTP/MIME or JSON formatEnables live views of data with virtually no extra coding
  • #32: Accompanied by DemoService oriented architecture with thin server architecture makes building offline applications much easierdojox.rpc.OfflineRest - Dojo module that can automatically add offline support for apps that do server interaction through JsonRestStoreData changes are stored/cached locally until network connectivity is available.Accompanied by Demo
  • #37: Easy to use, clearly defined web APIOne could create a new UI for the application without barrierPresentation code is executed on the client, business/application logic occurs on the backendPresentation state on the clientLess load on the server, more scalableREST Channels provide data modification notifications using HTTP/REST semanticsMinimal extension of HTTP standardsCompatible upgrade to RESTHTTP/MIME or JSON formatEnables live views of data with virtually no extra coding