SlideShare a Scribd company logo
1 of 25
The Real-Time
Middleware Experts
Mapping the RESTful Programming Model
to the DDS Data-Centric Model
Rick Warren, Principal Engineer rick.warren@rti.com
Conclusion
 REST is architecture of the web, works great for the web
 RESTful view of DDS object model is very powerful
– Network effect makes hyperlink-able DDS data more valuable
– Single data model can support clients with variety of needs
– RESTful DDS compatible with strict per-user access control
 (Many ways to create such a view; we’ll consider a few)
 Sorry, no demo in this talk—see
http://www.youtube.com/user/RealTimeInnovations
© 2009 Real-Time Innovations, Inc. 2
What is REST?
 REpresentational State Transfer
– Coined by Roy Fielding, co-inventor of HTTP, URIs, Apache
web server, fire, and the wheel
 A system architecture
– Designed for large distributed systems like the web
– Emphasizes statelessness, interface simplicity and uniformity
 Misuse: a technique of sending messages with HTTP
– Frequently contrasted with SOAP
 I will both use and misuse this term in this talk.
© 2009 Real-Time Innovations, Inc. 3
What is REST/HTTP?
© 2009 Real-Time Innovations, Inc. 4
Server
URI  Resource
URI  Resource
URI  Resource
…Response
Message
Resource
Representation
Client
Request Message
URI
Action
Actions as HTTP methods:
 POST (“Create”)
 GET (“Read”)
 PUT (“Update”)
 ELETE
What is REST/HTTP? Example (Web Browser)
© 2009 Real-Time Innovations, Inc. 5
Server
URI  Resource
URI  Resource
URI  Resource
…Response
Message
<html>
…
</html>
Client
Request Message
www.google.com/
GET
What is REST/HTTP? Example (DDS)
© 2009 Real-Time Innovations, Inc. 6
Server
URI  Resource
URI  Resource
URI  Resource
…Response
Message
<MyDataType>
…
</MyDataType>
Client
Request Message
my/dds/topic
GET
Specified by
DDS-XTypes
Why Is DDS-REST Integration Promising?
 Vision of the web:
– All information everywhere could be accessible by anyone
– …if only they knew where it is and how to get it.
– BTW: “where it is” = URI; “how get it” = HTTP
 Why should information inside DDS be different?
– Approach #1: Convince everyone to replace HTTP with DDS
– Approach #2: Allow poor misguided HTTP users to get DDS
data anyway
– Web-Enabled DDS standard initiative at OMG will help us
capitalize on this vision
 “Give me a URI and a protocol to dereference it and I
shall download the world.”
– Archimedes, 250 B.C.
© 2009 Real-Time Innovations, Inc. 7
DDS-REST Integration Teaser
 myReader.read()
 myWriter.write()
 Any web page can be
a DDS application
 GET
http://…/myTopic
 POST
http://…/myTopic
© 2009 Real-Time Innovations, Inc. 8
Implementing Web Services: SOAP vs. REST
SOAP/WSDL
 Technology
 Define domain-specific
nouns (services) and verbs
(operations)
– Meaning is explicit
– Can lead to wheel
reinvention
 Only service itself is
linkable
 Standard message
envelope
– Layer metadata onto any
service
• e.g. for governance
– Complicates processing
REST
 Architecture/design pattern
 Universal syntax for nouns
(URIs) and verbs (e.g.
HTTP methods)
– Polymorphism allows broad
reuse
– Ad hoc def’ns vary widely
 Whole resource tree is
linkable: network effect
 Each service defines own
formats, soup to nuts
– Get exactly what you need
in user-friendly format (e.g.
JSON)
– Difficult to apply metadata
across services
© 2009 Real-Time Innovations, Inc. 9
Procedural REST: a “Hybrid” Approach
 Some REST services embed custom verbs in URI
 Example: Amazon Simple Queue Service
http://queue.amazonaws.com/namespace/myQu
eueName
?Action=ReceiveMessage&...
 Pro: Obvious mapping to/from SOAP for easy skills xfer
– Base URI is the service endpoint
– Operations and args are parameters
 Con: Encourages thinking “invoke this operation”
instead of “access this resource”
 Why is this bad? Encourages GET-only interfaces
– Style: like a language with only one word; don’t discard rest
of HTTP
– Substance: GET must be safe, idempotent
– Best practice: resources nouns; verbs come from HTTP—
don’t reinvent things HTTP already provides
© 2009 Real-Time Innovations, Inc. 10
RESTful DDS: It’s All About the Resources
 Resources (w/ URIs)
– Data
• Application data
• Discovery data
• Natural hierarchy is
<domain>/<topic>
[/<instance>]
– Metadata
• Entities (participants,
readers, writers,
topics…)
• Data types
• QoS
• Status
 Non-resources
– Conditions and
WaitSets:
concurrency is
server’s business
– Listeners: status is a
resource; access like
any other
 Other concerns
– Access control
– Session management
© 2009 Real-Time Innovations, Inc. 11
RESTful DDS Entities: Open Questions
 Q: DDS object model or simplified model?
If DDS, are all entities useful to web clients?
 Q: Publish/subscribe to single topic in multiple ways?
(e.g. multiple readers w/ different QoS)
 Q: Require explicit client entity management?
(e.g. POST to /datareader before GET from /topic)
 Trade-off:
– Simplicity for the user, flexibility for the implementation
vs.
Power for the user, constrained implementation
– Can we have it both ways?
© 2009 Real-Time Innovations, Inc. 12
RESTful DDS Resource Proposal: Data View
 /dds/<domain ID>
– /topic/<topic name>
• /data
– ?sample_state=<value>&filter_expression=<expr>&…
– /<preconfigured instance name>
• /qos
• /status
– /inconsistent_topic
• /type
• /datareader
– /qos
– /status
 /requested_deadline_missed
 /requested_incompatible_qos
 /…
• /datawriter
– /…
© 2009 Real-Time Innovations, Inc. 13
RESTful DDS Resource Proposal: Entity View
 /dds/<domain ID>
– /participant/<entity name>
• /qos
• /topic/<entity name>
– /…
• /subscriber/<entity name>
– /qos
– /datareader/<entity name>
 /data
 /qos
 /status
• /publisher/<entity name>
– /…
© 2009 Real-Time Innovations, Inc. 14
RESTful DDS Resource Proposal: Examples
Data View
 POST
http://…/dds/0/topic
/MyTopic/data
<MyType>
Hello
</MyType>
– Response: 200 OK
 GET
http://…/dds/0/topic
/MyTopic/data
– Response:
<MyType>
Hello
</MyType>
Entity View
 PUT
http://…/dds/0/participant
/MyParticipant …
 PUT
http://…/dds/0/participant
/MyParticipant/topic/MyTop
ic …
 PUT
http://…/dds/0/participant
/MyParticipant/publisher/M
yPub …
 PUT
http://…/dds/0/participant
/MyParticipant/publisher/M
yPub/datawriter/MyWriter
<datawriter>
<topic>MyTopic</topic>
<qos>…</qos>
…
</datawriter>
 …
© 2009 Real-Time Innovations, Inc. 15
RESTful DDS Resource Proposal: Examples
 Create entire tree of entities:
– Request:
PUT http://www.example.com/dds/0/participant/
MyNewParticipant
<participant name="MyNewParticipant">
<qos>…</qos>
<subscribers>
<subscriber name="MyNewSubscriber">
<datareader>…</datareader>
</subscriber>
</subscribers>
…
</participant>
– Response: 200 OK
© 2009 Real-Time Innovations, Inc. 16
Access Control
 Requirement: Control access by each principal
– Publish, subscribe on certain topics
• …with certain contents
• …with certain QoS
 Implication: Principals’ pub/sub entities must
be separate
– To avoid data “leakage”
– To avoid contention/concurrency coupling
– To manage entity lifecycles: DDS is not stateless
© 2009 Real-Time Innovations, Inc. 17
Access Control  Session Management
 Approach: Associate request w/ principal’s session
– Client requests new session, providing identity and credential
• Service responds with access token on success (“session ID”)
– Client includes session ID in subsequent requests
• Service authorizes request; proceeds or fails
– Client requests session end, or service cancels session
1. Q#1: How to get session identifier?
2. Q#2: How to send session ID back again? Options:
a) Query parameter
b) Resource URI
c) Request body
d) Cookie
© 2009 Real-Time Innovations, Inc. 18
Getting a Session ID (“Logging In”)
 Possible approaches:
– /dds/log_in
• No: Doesn’t imply how to use it (GET? POST?)
• Remember: Resources are nouns. Verbs are CRUD.
– /dds/session_id (GET)
• OK, so now it’s a noun.
• We want to “get” a new session ID, right?
• …But still No: need to provide credential, but GET can’t have body
• …and logging in is not “safe” operation, nor idempotent
– /dds/session (POST)
• Now we’re talking: Want to create new session in a collection—
that’s what POST does.
• Request body contains credential(s)
• Implies administrative GET /dds/session: list all current sessions
© 2009 Real-Time Innovations, Inc. 19
Handing Back Session ID: #1, Query Param
 Example:
GET /dds/0/topic/MyTopic/data?session=123
 Good
– Simple, explicit
– Works when GETting resources (very common)
 Bad
– May not work well when POSTing resource
(e.g. HTML forms don’t allow POST with query)
– URIs not shareable
• Bob: “Get my data from here: http://bob.com/dds/…?session=Bob.”
• Fred: “Ooh, look at this…” ::takes actions with Bob’s credentials::
© 2009 Real-Time Innovations, Inc. 20
Handing Back Session ID: #2, Resource URI
 Example:
GET /dds/MySession/0/topic/MyTopic/data
 Good
– Simple, explicit
– Works equally well with all HTTP methods
 Bad
– URIs still not shareable
• Even harder to “cleanse” URI than with query parameter
© 2009 Real-Time Innovations, Inc. 21
Handing Back Session ID: #3, Request Body
 Example:
POST /dds/0/topic/MyTopic/data
(body: session=123)
 Good
– URLs shareable without editing
– Works well with POST, PUT, DELETE
 Bad
– Doesn’t work when GETting resources (very common)
© 2009 Real-Time Innovations, Inc. 22
Handing Back Session ID: #4, Cookie
 Example:
GET /dds/0/topic/MyTopic/data
Cookie: session=123
 Good
– URLs shareable without editing
– Works equally well with all HTTP methods
– Time-out built in
– Proven approach
 Bad
– Cookie stored with client’s user agent (e.g. web browser)
• Harder to share across agents
– …or maybe Good: forces re-authentication
• Shared across users that share agent
– Separate user accounts of multi-user platforms work around this
 This is the recommendation
© 2009 Real-Time Innovations, Inc. 23
Conclusion
 REST works best when taking full advantage of HTTP
– Think in resources
– Use GET, POST, PUT, DELETE as intended
– Respect safety, idempotency expectations
 DDS and REST are a powerful combination
– Network effect makes hyperlink-able DDS data more valuable
• Single DDS data set available via DDS network—
or from any browser
– DDS resource model supports clients with various needs
• Simplified basic data access
• Complete control over DDS entities and their configurations
– RESTful DDS can provide strict per-user access control
© 2009 Real-Time Innovations, Inc. 24
Thank You
© 2009 Real-Time Innovations, Inc. 25

More Related Content

What's hot

Mux loves Clickhouse. By Adam Brown, Mux founder
Mux loves Clickhouse. By Adam Brown, Mux founderMux loves Clickhouse. By Adam Brown, Mux founder
Mux loves Clickhouse. By Adam Brown, Mux founderAltinity Ltd
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Chris Richardson
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first courseVlad Posea
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NETsalonityagi
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-designArnaud Bouchez
 
1-01: Introduction To Web Development
1-01: Introduction To  Web  Development1-01: Introduction To  Web  Development
1-01: Introduction To Web Developmentapnwebdev
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkRed Hat Developers
 
Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Vicente Orjales
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 jbugkorea
 
PPT on web development & SEO
PPT on web development & SEOPPT on web development & SEO
PPT on web development & SEOPrakrati Bansal
 
Google Chrome Extensions - DevFest09
Google Chrome Extensions - DevFest09Google Chrome Extensions - DevFest09
Google Chrome Extensions - DevFest09mihaiionescu
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing Inho Kang
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web ApplicationSachin Walvekar
 
Introduction to back-end
Introduction to back-endIntroduction to back-end
Introduction to back-endMosaab Ehab
 
Microservice - Up to 500k CCU
Microservice - Up to 500k CCUMicroservice - Up to 500k CCU
Microservice - Up to 500k CCUViet Tran
 
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)Drupal Portugal
 

What's hot (20)

Mux loves Clickhouse. By Adam Brown, Mux founder
Mux loves Clickhouse. By Adam Brown, Mux founderMux loves Clickhouse. By Adam Brown, Mux founder
Mux loves Clickhouse. By Adam Brown, Mux founder
 
Flutter
FlutterFlutter
Flutter
 
Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)Developing event-driven microservices with event sourcing and CQRS (phillyete)
Developing event-driven microservices with event sourcing and CQRS (phillyete)
 
Introduction to Web Programming - first course
Introduction to Web Programming - first courseIntroduction to Web Programming - first course
Introduction to Web Programming - first course
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NET
 
C c#
C c#C c#
C c#
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-design
 
1-01: Introduction To Web Development
1-01: Introduction To  Web  Development1-01: Introduction To  Web  Development
1-01: Introduction To Web Development
 
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech TalkA Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
A Microservices approach with Cassandra and Quarkus | DevNation Tech Talk
 
Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.Google Dremel. Concept and Implementations.
Google Dremel. Concept and Implementations.
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
 
PPT on web development & SEO
PPT on web development & SEOPPT on web development & SEO
PPT on web development & SEO
 
Overview of Low-code
Overview of Low-code Overview of Low-code
Overview of Low-code
 
Google Chrome Extensions - DevFest09
Google Chrome Extensions - DevFest09Google Chrome Extensions - DevFest09
Google Chrome Extensions - DevFest09
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Making Of PHP Based Web Application
Making Of PHP Based Web ApplicationMaking Of PHP Based Web Application
Making Of PHP Based Web Application
 
Introduction to back-end
Introduction to back-endIntroduction to back-end
Introduction to back-end
 
Microservice - Up to 500k CCU
Microservice - Up to 500k CCUMicroservice - Up to 500k CCU
Microservice - Up to 500k CCU
 
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)
TURN YOUR DRUPAL INTO A DIGITAL EXPERIENCE PLATFORM (DXP)
 

Similar to Mapping the RESTful Programming Model to the DDS Data-Centric Model

Restful web-services
Restful web-servicesRestful web-services
Restful web-servicesrporwal
 
Web Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS ConferenceWeb Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS ConferenceGerardo Pardo-Castellote
 
DDS tutorial with connector
DDS tutorial with connectorDDS tutorial with connector
DDS tutorial with connectorJavier Povedano
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...StreamNative
 
Restful webservice
Restful webserviceRestful webservice
Restful webserviceDong Ngoc
 
JavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCJavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCSteve Speicher
 
REST and REST-fulness
REST and REST-fulnessREST and REST-fulness
REST and REST-fulnessDavid Waite
 
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...Dave Delay
 
Presentation (PowerPoint File)
Presentation (PowerPoint File)Presentation (PowerPoint File)
Presentation (PowerPoint File)webhostingguy
 
Presentation (PowerPoint File)
Presentation (PowerPoint File)Presentation (PowerPoint File)
Presentation (PowerPoint File)webhostingguy
 
Mtn view sql server nov 2014
Mtn view sql server nov 2014Mtn view sql server nov 2014
Mtn view sql server nov 2014EspressoLogic
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocratlinoj
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeADLINK Technology IoT
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
HTTP/2 and a Faster Web
HTTP/2 and a Faster WebHTTP/2 and a Faster Web
HTTP/2 and a Faster WebC4Media
 
Pinterest like site using REST and Bottle
Pinterest like site using REST and Bottle Pinterest like site using REST and Bottle
Pinterest like site using REST and Bottle Gaurav Bhardwaj
 

Similar to Mapping the RESTful Programming Model to the DDS Data-Centric Model (20)

Restful web-services
Restful web-servicesRestful web-services
Restful web-services
 
Web Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS ConferenceWeb Enabled DDS - London Connext DDS Conference
Web Enabled DDS - London Connext DDS Conference
 
DDS tutorial with connector
DDS tutorial with connectorDDS tutorial with connector
DDS tutorial with connector
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
 
Modified REST Presentation
Modified REST PresentationModified REST Presentation
Modified REST Presentation
 
MediaMosa and webservices
MediaMosa and webservicesMediaMosa and webservices
MediaMosa and webservices
 
DDS Web Enabled
DDS Web EnabledDDS Web Enabled
DDS Web Enabled
 
Restful webservice
Restful webserviceRestful webservice
Restful webservice
 
JavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCJavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLC
 
REST and REST-fulness
REST and REST-fulnessREST and REST-fulness
REST and REST-fulness
 
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
IBM Connect 2014 - AD205: Creating State-of-the-Art Web Applications with Dom...
 
Presentation (PowerPoint File)
Presentation (PowerPoint File)Presentation (PowerPoint File)
Presentation (PowerPoint File)
 
Presentation (PowerPoint File)
Presentation (PowerPoint File)Presentation (PowerPoint File)
Presentation (PowerPoint File)
 
Mtn view sql server nov 2014
Mtn view sql server nov 2014Mtn view sql server nov 2014
Mtn view sql server nov 2014
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
HTTP/2 and a Faster Web
HTTP/2 and a Faster WebHTTP/2 and a Faster Web
HTTP/2 and a Faster Web
 
Pinterest like site using REST and Bottle
Pinterest like site using REST and Bottle Pinterest like site using REST and Bottle
Pinterest like site using REST and Bottle
 

More from Rick Warren

Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaRick Warren
 
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionLetters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionRick Warren
 
Patterns of Data Distribution
Patterns of Data DistributionPatterns of Data Distribution
Patterns of Data DistributionRick Warren
 
Data-centric Invocable Services
Data-centric Invocable ServicesData-centric Invocable Services
Data-centric Invocable ServicesRick Warren
 
Engineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsEngineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsRick Warren
 
Scaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesScaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesRick Warren
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a NutshellRick Warren
 
Java 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionJava 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionRick Warren
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Rick Warren
 
C++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionC++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionRick Warren
 
Web-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionWeb-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionRick Warren
 
Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Rick Warren
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Rick Warren
 
Large-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceLarge-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceRick Warren
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureRick Warren
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSRick Warren
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSRick Warren
 
Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Rick Warren
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDSRick Warren
 

More from Rick Warren (20)

Real-World Git
Real-World GitReal-World Git
Real-World Git
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
 
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to ProductionLetters from the Trenches: Lessons Learned Taking MongoDB to Production
Letters from the Trenches: Lessons Learned Taking MongoDB to Production
 
Patterns of Data Distribution
Patterns of Data DistributionPatterns of Data Distribution
Patterns of Data Distribution
 
Data-centric Invocable Services
Data-centric Invocable ServicesData-centric Invocable Services
Data-centric Invocable Services
 
Engineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable SystemsEngineering Interoperable and Reliable Systems
Engineering Interoperable and Reliable Systems
 
Scaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and DevicesScaling DDS to Millions of Computers and Devices
Scaling DDS to Millions of Computers and Devices
 
DDS in a Nutshell
DDS in a NutshellDDS in a Nutshell
DDS in a Nutshell
 
Java 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final SubmissionJava 5 Language PSM for DDS: Final Submission
Java 5 Language PSM for DDS: Final Submission
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)
 
C++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised SubmissionC++ PSM for DDS: Revised Submission
C++ PSM for DDS: Revised Submission
 
Web-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised SubmissionWeb-Enabled DDS: Revised Submission
Web-Enabled DDS: Revised Submission
 
Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)Java 5 PSM for DDS: Initial Submission (out of date)
Java 5 PSM for DDS: Initial Submission (out of date)
 
Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1Extensible and Dynamic Topic Types for DDS, Beta 1
Extensible and Dynamic Topic Types for DDS, Beta 1
 
Large-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and FinanceLarge-Scale System Integration with DDS for SCADA, C2, and Finance
Large-Scale System Integration with DDS for SCADA, C2, and Finance
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System Architecture
 
Extensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDSExtensible and Dynamic Topic Types for DDS
Extensible and Dynamic Topic Types for DDS
 
Easing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDSEasing Integration of Large-Scale Real-Time Systems with DDS
Easing Integration of Large-Scale Real-Time Systems with DDS
 
Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)Java 5 API for DDS RFP (out of date)
Java 5 API for DDS RFP (out of date)
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDS
 

Recently uploaded

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Recently uploaded (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

Mapping the RESTful Programming Model to the DDS Data-Centric Model

  • 1. The Real-Time Middleware Experts Mapping the RESTful Programming Model to the DDS Data-Centric Model Rick Warren, Principal Engineer rick.warren@rti.com
  • 2. Conclusion  REST is architecture of the web, works great for the web  RESTful view of DDS object model is very powerful – Network effect makes hyperlink-able DDS data more valuable – Single data model can support clients with variety of needs – RESTful DDS compatible with strict per-user access control  (Many ways to create such a view; we’ll consider a few)  Sorry, no demo in this talk—see http://www.youtube.com/user/RealTimeInnovations © 2009 Real-Time Innovations, Inc. 2
  • 3. What is REST?  REpresentational State Transfer – Coined by Roy Fielding, co-inventor of HTTP, URIs, Apache web server, fire, and the wheel  A system architecture – Designed for large distributed systems like the web – Emphasizes statelessness, interface simplicity and uniformity  Misuse: a technique of sending messages with HTTP – Frequently contrasted with SOAP  I will both use and misuse this term in this talk. © 2009 Real-Time Innovations, Inc. 3
  • 4. What is REST/HTTP? © 2009 Real-Time Innovations, Inc. 4 Server URI  Resource URI  Resource URI  Resource …Response Message Resource Representation Client Request Message URI Action Actions as HTTP methods:  POST (“Create”)  GET (“Read”)  PUT (“Update”)  ELETE
  • 5. What is REST/HTTP? Example (Web Browser) © 2009 Real-Time Innovations, Inc. 5 Server URI  Resource URI  Resource URI  Resource …Response Message <html> … </html> Client Request Message www.google.com/ GET
  • 6. What is REST/HTTP? Example (DDS) © 2009 Real-Time Innovations, Inc. 6 Server URI  Resource URI  Resource URI  Resource …Response Message <MyDataType> … </MyDataType> Client Request Message my/dds/topic GET Specified by DDS-XTypes
  • 7. Why Is DDS-REST Integration Promising?  Vision of the web: – All information everywhere could be accessible by anyone – …if only they knew where it is and how to get it. – BTW: “where it is” = URI; “how get it” = HTTP  Why should information inside DDS be different? – Approach #1: Convince everyone to replace HTTP with DDS – Approach #2: Allow poor misguided HTTP users to get DDS data anyway – Web-Enabled DDS standard initiative at OMG will help us capitalize on this vision  “Give me a URI and a protocol to dereference it and I shall download the world.” – Archimedes, 250 B.C. © 2009 Real-Time Innovations, Inc. 7
  • 8. DDS-REST Integration Teaser  myReader.read()  myWriter.write()  Any web page can be a DDS application  GET http://…/myTopic  POST http://…/myTopic © 2009 Real-Time Innovations, Inc. 8
  • 9. Implementing Web Services: SOAP vs. REST SOAP/WSDL  Technology  Define domain-specific nouns (services) and verbs (operations) – Meaning is explicit – Can lead to wheel reinvention  Only service itself is linkable  Standard message envelope – Layer metadata onto any service • e.g. for governance – Complicates processing REST  Architecture/design pattern  Universal syntax for nouns (URIs) and verbs (e.g. HTTP methods) – Polymorphism allows broad reuse – Ad hoc def’ns vary widely  Whole resource tree is linkable: network effect  Each service defines own formats, soup to nuts – Get exactly what you need in user-friendly format (e.g. JSON) – Difficult to apply metadata across services © 2009 Real-Time Innovations, Inc. 9
  • 10. Procedural REST: a “Hybrid” Approach  Some REST services embed custom verbs in URI  Example: Amazon Simple Queue Service http://queue.amazonaws.com/namespace/myQu eueName ?Action=ReceiveMessage&...  Pro: Obvious mapping to/from SOAP for easy skills xfer – Base URI is the service endpoint – Operations and args are parameters  Con: Encourages thinking “invoke this operation” instead of “access this resource”  Why is this bad? Encourages GET-only interfaces – Style: like a language with only one word; don’t discard rest of HTTP – Substance: GET must be safe, idempotent – Best practice: resources nouns; verbs come from HTTP— don’t reinvent things HTTP already provides © 2009 Real-Time Innovations, Inc. 10
  • 11. RESTful DDS: It’s All About the Resources  Resources (w/ URIs) – Data • Application data • Discovery data • Natural hierarchy is <domain>/<topic> [/<instance>] – Metadata • Entities (participants, readers, writers, topics…) • Data types • QoS • Status  Non-resources – Conditions and WaitSets: concurrency is server’s business – Listeners: status is a resource; access like any other  Other concerns – Access control – Session management © 2009 Real-Time Innovations, Inc. 11
  • 12. RESTful DDS Entities: Open Questions  Q: DDS object model or simplified model? If DDS, are all entities useful to web clients?  Q: Publish/subscribe to single topic in multiple ways? (e.g. multiple readers w/ different QoS)  Q: Require explicit client entity management? (e.g. POST to /datareader before GET from /topic)  Trade-off: – Simplicity for the user, flexibility for the implementation vs. Power for the user, constrained implementation – Can we have it both ways? © 2009 Real-Time Innovations, Inc. 12
  • 13. RESTful DDS Resource Proposal: Data View  /dds/<domain ID> – /topic/<topic name> • /data – ?sample_state=<value>&filter_expression=<expr>&… – /<preconfigured instance name> • /qos • /status – /inconsistent_topic • /type • /datareader – /qos – /status  /requested_deadline_missed  /requested_incompatible_qos  /… • /datawriter – /… © 2009 Real-Time Innovations, Inc. 13
  • 14. RESTful DDS Resource Proposal: Entity View  /dds/<domain ID> – /participant/<entity name> • /qos • /topic/<entity name> – /… • /subscriber/<entity name> – /qos – /datareader/<entity name>  /data  /qos  /status • /publisher/<entity name> – /… © 2009 Real-Time Innovations, Inc. 14
  • 15. RESTful DDS Resource Proposal: Examples Data View  POST http://…/dds/0/topic /MyTopic/data <MyType> Hello </MyType> – Response: 200 OK  GET http://…/dds/0/topic /MyTopic/data – Response: <MyType> Hello </MyType> Entity View  PUT http://…/dds/0/participant /MyParticipant …  PUT http://…/dds/0/participant /MyParticipant/topic/MyTop ic …  PUT http://…/dds/0/participant /MyParticipant/publisher/M yPub …  PUT http://…/dds/0/participant /MyParticipant/publisher/M yPub/datawriter/MyWriter <datawriter> <topic>MyTopic</topic> <qos>…</qos> … </datawriter>  … © 2009 Real-Time Innovations, Inc. 15
  • 16. RESTful DDS Resource Proposal: Examples  Create entire tree of entities: – Request: PUT http://www.example.com/dds/0/participant/ MyNewParticipant <participant name="MyNewParticipant"> <qos>…</qos> <subscribers> <subscriber name="MyNewSubscriber"> <datareader>…</datareader> </subscriber> </subscribers> … </participant> – Response: 200 OK © 2009 Real-Time Innovations, Inc. 16
  • 17. Access Control  Requirement: Control access by each principal – Publish, subscribe on certain topics • …with certain contents • …with certain QoS  Implication: Principals’ pub/sub entities must be separate – To avoid data “leakage” – To avoid contention/concurrency coupling – To manage entity lifecycles: DDS is not stateless © 2009 Real-Time Innovations, Inc. 17
  • 18. Access Control  Session Management  Approach: Associate request w/ principal’s session – Client requests new session, providing identity and credential • Service responds with access token on success (“session ID”) – Client includes session ID in subsequent requests • Service authorizes request; proceeds or fails – Client requests session end, or service cancels session 1. Q#1: How to get session identifier? 2. Q#2: How to send session ID back again? Options: a) Query parameter b) Resource URI c) Request body d) Cookie © 2009 Real-Time Innovations, Inc. 18
  • 19. Getting a Session ID (“Logging In”)  Possible approaches: – /dds/log_in • No: Doesn’t imply how to use it (GET? POST?) • Remember: Resources are nouns. Verbs are CRUD. – /dds/session_id (GET) • OK, so now it’s a noun. • We want to “get” a new session ID, right? • …But still No: need to provide credential, but GET can’t have body • …and logging in is not “safe” operation, nor idempotent – /dds/session (POST) • Now we’re talking: Want to create new session in a collection— that’s what POST does. • Request body contains credential(s) • Implies administrative GET /dds/session: list all current sessions © 2009 Real-Time Innovations, Inc. 19
  • 20. Handing Back Session ID: #1, Query Param  Example: GET /dds/0/topic/MyTopic/data?session=123  Good – Simple, explicit – Works when GETting resources (very common)  Bad – May not work well when POSTing resource (e.g. HTML forms don’t allow POST with query) – URIs not shareable • Bob: “Get my data from here: http://bob.com/dds/…?session=Bob.” • Fred: “Ooh, look at this…” ::takes actions with Bob’s credentials:: © 2009 Real-Time Innovations, Inc. 20
  • 21. Handing Back Session ID: #2, Resource URI  Example: GET /dds/MySession/0/topic/MyTopic/data  Good – Simple, explicit – Works equally well with all HTTP methods  Bad – URIs still not shareable • Even harder to “cleanse” URI than with query parameter © 2009 Real-Time Innovations, Inc. 21
  • 22. Handing Back Session ID: #3, Request Body  Example: POST /dds/0/topic/MyTopic/data (body: session=123)  Good – URLs shareable without editing – Works well with POST, PUT, DELETE  Bad – Doesn’t work when GETting resources (very common) © 2009 Real-Time Innovations, Inc. 22
  • 23. Handing Back Session ID: #4, Cookie  Example: GET /dds/0/topic/MyTopic/data Cookie: session=123  Good – URLs shareable without editing – Works equally well with all HTTP methods – Time-out built in – Proven approach  Bad – Cookie stored with client’s user agent (e.g. web browser) • Harder to share across agents – …or maybe Good: forces re-authentication • Shared across users that share agent – Separate user accounts of multi-user platforms work around this  This is the recommendation © 2009 Real-Time Innovations, Inc. 23
  • 24. Conclusion  REST works best when taking full advantage of HTTP – Think in resources – Use GET, POST, PUT, DELETE as intended – Respect safety, idempotency expectations  DDS and REST are a powerful combination – Network effect makes hyperlink-able DDS data more valuable • Single DDS data set available via DDS network— or from any browser – DDS resource model supports clients with various needs • Simplified basic data access • Complete control over DDS entities and their configurations – RESTful DDS can provide strict per-user access control © 2009 Real-Time Innovations, Inc. 24
  • 25. Thank You © 2009 Real-Time Innovations, Inc. 25

Editor's Notes

  1. This is how your web browser works. The difference is that a browser just GETs (or in a form, maybe POSTs); other applications can use more of HTTP. HTTP methods mirror common “CRUD” interaction pattern. (Some subtleties around POST vs. PUT; won’t go into them now.)
  2. “Procedural REST” is not a recognized industry term; we just coined it. Like when someone learning a foreign language says something that’s grammatically correct, but somehow not the way a native speaker would say it.
  3. REST architecture already defines verbs and syntax of nouns. Remaining piece is to decide what the resources are. Note: Not everything in DDS is relevant for the web.
  4. No need to create entities explicitly. The data is what’s important; address it directly. Let the server worry about the entities.
  5. …But maybe you want to manage all of your entities explicitly. That’s also possible. Could implement data view, entities view, or both.