Presentation on various definitions for JSON including JSON-RPC, JSPON, JSON Schema, JSONP and tools for working these definitions including Persevere client and server..
CouchApps are web applications built using CouchDB, JavaScript, and HTML5. CouchDB is a document-oriented database that stores JSON documents, has a RESTful HTTP API, and is queried using map/reduce views. This talk will answer your basic questions about CouchDB, but will focus on building CouchApps and related tools.
This is a presentation on CouchDB that I gave at the New York PHP User Group. I talked about the basics of CouchDB, its JSON documents, its RESTful API, writing and querying MapReduce views, using CouchDB from within PHP, and scaling.
Presentation on various definitions for JSON including JSON-RPC, JSPON, JSON Schema, JSONP and tools for working these definitions including Persevere client and server..
CouchApps are web applications built using CouchDB, JavaScript, and HTML5. CouchDB is a document-oriented database that stores JSON documents, has a RESTful HTTP API, and is queried using map/reduce views. This talk will answer your basic questions about CouchDB, but will focus on building CouchApps and related tools.
This is a presentation on CouchDB that I gave at the New York PHP User Group. I talked about the basics of CouchDB, its JSON documents, its RESTful API, writing and querying MapReduce views, using CouchDB from within PHP, and scaling.
An introduction to modern web technologies HTML5, including Offline, Storage, and Canvas Embedded JavaScript RESTful WebServices using MVC 3, jQuery, and JSON Going mobile with PhoneGap and HTML and CSS
Differential Sync and JSON Patch @ SpringOne2GX 2014Brian Cavalier
Craig Walls and I presented a new approach to client-server communication at SpringOne2GX 2014.
Abstract:
The world of client-server has changed. The traditional application of REST is no longer the best fit. We're depolying applications into a world where users expect responsive UIs, on all their devices, even while disconnected. We're deploying into a world where connection latency, mobile radio usage and battery life have become primary concerns.
Differential Synchronization (DS) is an algorithm that syncs data across N parties, even in the face of dropped connections, offline devices, etc. It makes more efficient use of connections by batching and sending only changes, in both directions, from client to server and from server to client. We’ll look at how it can be used with JSON Patch to synchronize application data between clients and servers over HTTP Patch, WebSocket, and STOMP, and how it can be integrated into the Spring ecosystem.
Stop the noise! - Introduction to the JSON:API specification in DrupalBjörn Brala
If you’ve ever argued about the way your JSON responses should be formatted, JSON:API can be your anti-bikeshedding tool. JSON:API is a great way to expose a consistent API in your application.
In this session, we will talk about how JSON:API got to where it is today and how it can help you make Drupal the core of all your online transactions. We will check out the specifications and look at the main benefits of JSON:API and see how Drupal implemented the spec.
Expect to learn the structure and features of the JSON:API specifications and why it should be your smart default. You should be able to get started right away with some examples we will provide in this session.
Introducing RaveJS: Spring Boot concepts for JavaScript applicationsJohn Hann
Modern JavaScript frameworks have become quite sophisticated. Unfortunately, they have also become quite complicated. The demos and sample projects for these frameworks look deceptively simple. However, to build and deploy real applications, developers must scaffold, configure, and maintain a tremendous amount of intricate machinery. Until recently, the Java world wasn't very different. Spring Boot finally made it easy to create stand-alone, production-grade Spring Applications that can you can "just run". Can we do the same for JavaScript? Yes, we can! Introducing RaveJS. Rave eliminates configuration, machinery, and complexity. Stop configuring and tweaking machinery such as file watchers, minifiers, and transpilers just to get to a runnable app. Instead, go from zero to "hello world" in 30 seconds. In the next 30 seconds, easily add capabilities and frameworks to your application simply by installing *Rave Extensions* and *Rave Starter* packages from npm and Bower, the leading JavaScript package managers. Finally, install additional *Rave Extension* packages to apply your favorite build, deploy, and testing patterns.
My talk for the Dutch PHP Conference, explaining the point of oauth, the mechanics of oauth2 and the various flows, and a spot of oauth1 for completeness
Webservices is a type of technology that is widely used now a days. this ppt tells you about its architecture and its usage. for more info please visit : http://s4al.com/category/study-java/
An introduction to modern web technologies HTML5, including Offline, Storage, and Canvas Embedded JavaScript RESTful WebServices using MVC 3, jQuery, and JSON Going mobile with PhoneGap and HTML and CSS
Differential Sync and JSON Patch @ SpringOne2GX 2014Brian Cavalier
Craig Walls and I presented a new approach to client-server communication at SpringOne2GX 2014.
Abstract:
The world of client-server has changed. The traditional application of REST is no longer the best fit. We're depolying applications into a world where users expect responsive UIs, on all their devices, even while disconnected. We're deploying into a world where connection latency, mobile radio usage and battery life have become primary concerns.
Differential Synchronization (DS) is an algorithm that syncs data across N parties, even in the face of dropped connections, offline devices, etc. It makes more efficient use of connections by batching and sending only changes, in both directions, from client to server and from server to client. We’ll look at how it can be used with JSON Patch to synchronize application data between clients and servers over HTTP Patch, WebSocket, and STOMP, and how it can be integrated into the Spring ecosystem.
Stop the noise! - Introduction to the JSON:API specification in DrupalBjörn Brala
If you’ve ever argued about the way your JSON responses should be formatted, JSON:API can be your anti-bikeshedding tool. JSON:API is a great way to expose a consistent API in your application.
In this session, we will talk about how JSON:API got to where it is today and how it can help you make Drupal the core of all your online transactions. We will check out the specifications and look at the main benefits of JSON:API and see how Drupal implemented the spec.
Expect to learn the structure and features of the JSON:API specifications and why it should be your smart default. You should be able to get started right away with some examples we will provide in this session.
Introducing RaveJS: Spring Boot concepts for JavaScript applicationsJohn Hann
Modern JavaScript frameworks have become quite sophisticated. Unfortunately, they have also become quite complicated. The demos and sample projects for these frameworks look deceptively simple. However, to build and deploy real applications, developers must scaffold, configure, and maintain a tremendous amount of intricate machinery. Until recently, the Java world wasn't very different. Spring Boot finally made it easy to create stand-alone, production-grade Spring Applications that can you can "just run". Can we do the same for JavaScript? Yes, we can! Introducing RaveJS. Rave eliminates configuration, machinery, and complexity. Stop configuring and tweaking machinery such as file watchers, minifiers, and transpilers just to get to a runnable app. Instead, go from zero to "hello world" in 30 seconds. In the next 30 seconds, easily add capabilities and frameworks to your application simply by installing *Rave Extensions* and *Rave Starter* packages from npm and Bower, the leading JavaScript package managers. Finally, install additional *Rave Extension* packages to apply your favorite build, deploy, and testing patterns.
My talk for the Dutch PHP Conference, explaining the point of oauth, the mechanics of oauth2 and the various flows, and a spot of oauth1 for completeness
Webservices is a type of technology that is widely used now a days. this ppt tells you about its architecture and its usage. for more info please visit : http://s4al.com/category/study-java/
SOAP Web Services have a well established role in the enterprise, but aside from the many benefits of the WS-* standards, SOAP and XML also carry additional baggage for developers. Consequently, REST Web Services are gaining tremendous popularity within the developer community. This session will begin by comparing and contrasting the basic concepts of both SOAP and REST Web Services. Building on that foundation, Sam Brannen will show attendees how to implement SOAP-based applications using Spring-WS 2.0. He will then demonstrate how to build a similar REST-ful application using Spring MVC 3.0. The session will conclude with an in-depth look at both server-side and client-side development as well as efficient integration testing of Web Services using the Spring Framework.
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaGuido Schmutz
A Kafka cluster stores streams of records (messages) in categories called topics. It is the architectural backbone for integrating streaming data with a Data Lake, Microservices and Stream Processing. Today’s enterprises have their core systems often implemented on top of relational databases, such as the Oracle RDBMS. Implementing a new solution supporting the digital strategy using Kafka and the ecosystem can not always be done completely separate from the traditional legacy solutions. Often streaming data has to be enriched with state data which is held in an RDBMS of a legacy application. It’s important to cache this data in the stream processing solution, so that It can be efficiently joined to the data stream. But how do we make sure that the cache is kept up-to-date, if the source data changes? We can either poll for changes from Kafka using Kafka Connect or let the RDBMS push the data changes to Kafka. But what about writing data back to the legacy application, i.e. an anomaly is detected inside the stream processing solution which should trigger an action inside the legacy application. Using Kafka Connect we can write to a database table or view, which could trigger the action. But this not always the best option. If you have an Oracle RDBMS, there are many other ways to integrate the database with Kafka, such as Advanced Queueing (message broker in the database), CDC through Golden Gate or Debezium, Oracle REST Database Service (ORDS) and more. In this session, we present various blueprints for integrating an Oracle RDBMS with Apache Kafka in both directions and discuss how these blueprints can be implemented using the products mentioned before.
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...confluent
A Kafka cluster stores streams of records (messages) in categories called topics. It is the architectural backbone for integrating streaming data with a Data Lake, Microservices and Stream Processing. Today's enterprises have their core systems often implemented on top of relational databases, such as the Oracle RDBMS. Implementing a new solution supporting the digital strategy using Kafka and the ecosystem can not always be done completely separate from the traditional legacy solutions. Often streaming data has to be enriched with state data which is held in an RDBMS of a legacy application. It's important to cache this data in the stream processing solution, so that It can be efficiently joined to the data stream. But how do we make sure that the cache is kept up-to-date, if the source data changes? We can either poll for changes from Kafka using Kafka Connect or let the RDBMS push the data changes to Kafka. But what about writing data back to the legacy application, i.e. an anomaly is detected inside the stream processing solution which should trigger an action inside the legacy application. Using Kafka Connect we can write to a database table or view, which could trigger the action. But this not always the best option. If you have an Oracle RDBMS, there are many other ways to integrate the database with Kafka, such as Advanced Queueing (message broker in the database), CDC through Golden Gate or Debezium, Oracle REST Database Service (ORDS) and more. In this session, we present various blueprints for integrating an Oracle RDBMS with Apache Kafka in both directions and discuss how these blueprints can be implemented using the products mentioned before.
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaGuido Schmutz
Apache Kafka is a popular distributed streaming data platform. A Kafka cluster stores streams of records (messages) in categories called topics. It is the architectural backbone for integrating streaming data with a Data Lake, Microservices and Stream Processing. Data sources flowing into Kafka are often native data streams such as social media streams, telemetry data, financial transactions and many others. But these data stream only contain part of the information. A lot of data necessary in stream processing is stored in traditional systems backed by relational databases. To implement new and modern, real-time solutions, an up-to-date view of that information is needed. So how do we make sure that information can flow between the RDBMS and Kafka, so that changes are available in Kafka as soon as possible in near-real-time? This session will present different approaches for integrating relational databases with Kafka, such as Kafka Connect, Oracle GoldenGate and bridging Kafka with Oracle Advanced Queuing (AQ).
5. What is a Web Service?
Application integration based on open
standards (HTTP, XML)
Published Interface
Application functionality packaged as a
single unit and exposed to the network
19. XML Example
<?xml version="1.0"?>
<note
xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
35. Principles
• Give every “thing” an ID
• Link things together
• Use standard methods
• Communicate stateless
• Resources with multiple representations
37. Link Things Together
<order self='http://example.com/customers/1234' >
<amount>23</amount>
<product ref='http://example.com/products/4554' />
<customer ref='http://example.com/customers/1234' />
</order>
38. Standard Methods
GET PUT POST DELETE
Collection URI List the URIs Replace the Create a new Delete the
http://ex.com/ and perhaps entire collection entry entire collection
customer other details
Element URI Retrieve a Update or if it Element as Delete the
http://ex.com/ representation doesn't exist, collection, entire element
customer/123 create it. create a new
entry in it, or
partial update
GET = Safe, only retrieval, caching
PUT, DELETE = Idempotent
40. Resources
• Can be anything - things, not actions
• Resources live on server
• Representations are transfered to clients
• Multiple representations of resources for
different needs
41. Content Type
• Multiple representations of resources for
different needs
• Mime-types (Accept header)
– text/xml
– application/json
– application/vnd.mycompany.customer+xml
– text/x-vcard
55. Restbucks
GET a Cup Of Coffee
Make selection
Pay
Wait for a while
Collect drink
56. Restbucks - Normal Flow
Customer POST http://restbucks.com/order Restbucks
201 + order
57. Restbucks - Normal Flow
Customer POST http://restbucks.com/order Restbucks
201 + order
PUT http://restbucks.com/payment/1234
201 + receipt
58. Restbucks - Normal Flow
Customer POST http://restbucks.com/order Restbucks
201 + order
PUT http://restbucks.com/payment/1234
201 + receipt
GET http://restbucks.com/order/1234
200 + order
59. Restbucks - Normal Flow
Customer POST http://restbucks.com/order Restbucks
201 + order
PUT http://restbucks.com/payment/1234
201 + receipt
GET http://restbucks.com/order/1234
200 + order
DELETE http://restbucks.com/receipt/1234
200 + completed order
60. Restbucks - Cancel
Customer POST http://restbucks.com/order Restbucks
201 + order
DELETE http://restbucks.com/order/1234
200 + order
61. Restbucks - Update
Customer POST http://restbucks.com/order Restbucks
201 + order
POST http://restbucks.com/order/1234
200 + order
69. Restbucks - Conflict
Customer POST http://restbucks.com/order Restbucks
201 + order
PUT http://restbucks.com/payment/1234
201 + receipt
POST http://restbucks.com/order/1234
409 Conflict
71. rel attribute
• Sematics of the referred resource
• Client must know meaning of rel, not uri
• Part of media type specification
<link uri=″http://restbucks.com/payment/1234″ rel=″payment″/>
72. rel attribute
• Sematics of the referred resource
• Client must know meaning of rel, not uri
• Part of media type specification
payment:
The linked resource allows the consumer to begin paying
for the order. Initiating payment involves PUTting an
appropriate resource representation to the specified
URI, as defined in the Restbucks media type.
<link uri=″http://restbucks.com/payment/1234″ rel=″payment″/>
79. Evolving Interfaces
Why?
• Impossible to predict the future
• All cannot jump simultaneously
Advice:
• You need a versioning strategy
• Know your consumers
• Be pragmatic
80. Types of Changes
• 2.1.3
• major.minor.point
• major = not compatible (new xml ns)
• minor = compatible
• point = no change to contract
81. Compatibility scenarios
• No compatibility
• Backwards Compatible
– old v1.0 consumer can use new v1.1 provider
• Forwards Compatible
– new v1.1 consumer can use old v1.0 provider
82. Not Backwards Compatible
Removing an operation
Renaming an operation
Changing the parameters of an operation
Changing the structure of a data type
95. Versioning Example
V 1.1
<account>
<name>Inigo Montoya</name>
<email-address>mailto:prepare-to-die@youkilledmyfather.
</account>
V 1.0 consumers can ignore email-address
96. Versioning Example
V 2.0
<account>
<name>Inigo Montoya</name>
<email-addresses>
<email-address priority='1'>mailto:prepare-to-die@youkil
<email-address priority='2'>mailto:vengeance@youkilledm
<email-address>
</account>
Will break v1.1 consumers
97. Use Different URLs
V 1.1 client use
http://foo.example/api/v1/accounts/3
V 2.0 client use
http://foo.example/api/v2/accounts/3
http://foo.example/api/accounts/3?v=2
98. Use Different URLs
. ..
V 1.1 client use ut
, b
http://foo.example/api/v1/accounts/3
le
V 2.0 client use ss
ib
P o
http://foo.example/api/v2/accounts/3
http://foo.example/api/accounts/3?v=2
Clients must support both versions if they store URLs
99. Vendor MIME type
• application/vnd.mycompany.myapp+xml
• Accept header of request
• Content-Type header of response
100. Content type negotiation
V 1.1 client ask for
Accept: application/vnd.mycompany.myapp+xml
V 2.0 client ask for
Accept: application/vnd.mycompany.myapp-v2+xml
101. Several Providers
Provider v1
Consumer
Provider v2
Accept: application/vnd.myapp-v2+xml, application/
vnd.myapp-v1+xml;q=0.8
Provider v1 answers with
Content-Type: application/vnd.myapp-v1+xml
106. Alice Gateway Cache Backend
GET /foo
Host: foo.com
107. Alice Gateway Cache Backend
GET /foo GET /foo
Host: foo.com Host: foo.com
108. Alice Gateway Cache Backend
GET /foo GET /foo
Host: foo.com Host: foo.com
200 OK
Cache‐Control: public, max‐age=60
ETag: abcdef012345
Hello World
109. Alice Gateway Cache Backend
GET /foo GET /foo
Host: foo.com Host: foo.com
200 OK 200 OK
Cache‐Control: public, max‐age=60 Cache‐Control: public, max‐age=60
ETag: abcdef012345 ETag: abcdef012345
Hello World Hello World
120. Contract first vs last
More up-front work
Need to learn all XML stuff
Decoupling
Better control
121. Validation and Errors
• Schema validation
• SOAP Fault
• Validation errors part of response
structure
122. HTTP Status Codes
200 - OK
201 - Created
301 - Moved
304 - Not modified
400 - Bad request
401 - Unauthorized
404 - Not found
405 - Method not allowed
409 - Conflict
500 - Internal Error
503 - Service Unavailable