SlideShare a Scribd company logo
DDS 
RPC over DDS 
Gerardo Pardo-Castellote, Ph.D. 
Chief Technology Officer, RTI 
Sumant Tambe, Ph.D. 
Senior Software Reseach Engineer, RTI 
October 2014
© 2014 Real-Time Innovations, Inc. 
Outline 
• Goals 
• Background 
• Status 
• Details 
• More info
Goals 
• Provide standard and interoperable way means to 
support “RPC” communication patterns in DDS 
• Support the Patters: 
– Request/Reply 
– Service Invocation 
– Remote Procedure Call 
– Remote Method Invocation 
• Support invocation of IDL-specified interfaces over DDS 
– Provide a simpler way to migrate CORBA applications to 
DDS 
– Support familiar “remote interface” programming style 
equivalent to Java RMI and Apache Thrift 
© 2014 Real-Time Innovations, Inc.
Advantages of RPC over DDS 
• Client and Servers are decoupled 
– No startup dependencies 
• QoS enforcement to support service SLAs 
– Ownership–Redundant pool of servers 
– Lifespan–request is only valid for the next N sec 
– Durability-request/replies will be eventually received and processed 
– Cancellation– after a good quality response has arrived 
© 2014 Real-Time Innovations, Inc. 
• Data-Centricity 
– Explicit trace-ability 
– Interaction state can be Monitored, Logged, Audited, Stored, 
Manipulated 
• Watch by subscribing to requests and/or responses (wire-tap) 
• One middleware – leverage DDS infrastructure 
– Suited for real-time systems 
– Multiplatform, Multilanguage, Interoperable
But I can already do it... 
True: 
• I can write my own RCP using request/reply Topics 
• RTI Connext already supports a “Request/Reply” 
equivalent to RPC 
• Some other vendors do similar things 
But… 
• The mapping from service to Topics and Types is ad-hoc. 
• These approaches are not portable/Interoperable 
• Getting everything right is cumbersome at best 
© 2014 Real-Time Innovations, Inc.
How can I do it myself? 
• Map Interfaces to types & Topics… 
– One Topic per interface, one per operation? 
– What are the types. How to map exceptions, output 
parameters, … 
– What happens if the interfaces change, e.g. operation 
is added or moved? 
• Implement necessary 
plumbing: 
• Setup request topic and type 
• Setup reply topic and type 
• Filter unwanted requests 
• Filter unwanted replies 
© 2014 Real-Time Innovations, Inc.
But RPC is not a good/robust 
idea/design pattern…. 
• RPC versus Desired State Pattern 
– Insight: Often a request-reply can be modeled as 
stateful data-centric interactions 
Goal 
State 
© 2014 Real-Time Innovations, Inc. 
write 
Current 
State 
Affect 
Service 
Client 
Service 
Provider 
Desired 
State 
read 
write 
read 
read
RPC vs Desired State 
• Desired state is good & more robust if the “request” 
actually represents: 
– a request to change of system state 
– Take a long time to fulfill 
– Needs to be observable by others 
© 2014 Real-Time Innovations, Inc. 
• However: 
– Many requests that do not represent changes to state: 
Database Query, Read a File… 
– People familiar for “Service” or “Request/Reply” pattern 
may find Directed State cumbersome –specially if extra 
robustness is unwarranted 
RPC over DDS provides best of both worlds!
Example: RobotControl 
© 2014 Real-Time Innovations, Inc. 
module robot { 
@DDSService 
interface RobotControl 
{ 
void command(Command command); 
float setSpeed(float speed) raises (TooFast); 
float getSpeed(); 
void getStatus(out Status status); 
}; 
}
RobotControl Client 
© 2014 Real-Time Innovations, Inc. 
import org.omg.dds.rpc.*; 
public class TestRobot { 
static void createRobotClient() { 
RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); 
ClientParams clientParams = runtime.createClientParams(); // optional 
RobotControlSupport.Client robotClient = 
RobotControlSupport.createClient( 
clientParams.withServiceName(”TestRobot”) 
.withInstanceName(“iRobot”)); // more configs available 
robotClient.waitForService(); // optional 
robotClient.getSpeed(); 
} 
}
RobotControl Service (Java) 
package robot; 
import robot.RobotControl; 
public class MyRobot implements RobotControl 
{ 
public void command(Command command) { } 
public float setSpeed(float speed) { return 1; } 
public float getSpeed() { return 2; } 
public void getStatus(/* out */ Status status) { } 
© 2014 Real-Time Innovations, Inc. 
} 
import org.omg.dds.rpc.*; 
public class TestRobot { 
public static void createRobotServer() 
{ 
RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); 
MyRobot myRobot = new MyRobot(); 
Server server = runtime.createServer(); // Configurable using ServerParams 
RobotControlSupport.Service service = 
RobotControlSupport.createService(myRobot, server); // Configurable using ServiceParams 
server.run(); // blocking 
} 
}
RobotControl Requester 
© 2014 Real-Time Innovations, Inc. 
public class TestRobot { 
static void createRobotRequester() { 
RPCRuntime runtime = 
RPCRuntime.getInstance(TestRobot.class.getClassLoader()); 
RequesterParams reqParams = runtime.createRequesterParams(); 
// change params here if you like 
Requester<RobotControlSupport.RequestType, 
RobotControlSupport.ReplyType> 
requester = runtime.createRequester( 
RobotControlSupport.RequestType.class, 
RobotControlSupport.ReplyType.class, 
reqParams); 
RobotControlSupport.RequestType request = 
new RobotControlSupport.RequestType(); 
// populate request 
requester.sendRequest(request); 
} 
}
RobotControl Replier 
public class TestRobot { 
static void createRobotReplier() { 
RPCRuntime runtime = 
RPCRuntime.getInstance(TestRobot.class.getClassLoader()); 
ReplierParams repParams = runtime.createReplierParams(); 
// change params here if you like 
Replier<RobotControlSupport.RequestType, 
RobotControlSupport.ReplyType> 
replier = runtime.createReplier( 
RobotControlSupport.RequestType.class, 
RobotControlSupport.ReplyType.class, 
repParams); 
Sample<RobotControlSupport.RequestType> 
request = replier.receiveRequest(); 
© 2014 Real-Time Innovations, Inc. 
} 
}
RobotControlSupport 
public abstract class RobotControlSupport { 
public final static class RequestType { 
// omg.dds.rpc.RequestHeader header; 
// robot.RobotControl_Call data; 
© 2014 Real-Time Innovations, Inc. 
} 
public final static class ReplyType { 
// omg.dds.rpc.ReplyHeader header; 
// robot.RobotControl_Return data 
} 
public interface Client 
extends RobotControl, 
RobotControlAsync, 
ClientEndpoint 
{ 
} 
public interface Service extends ServiceEndpoint 
{ 
} 
public static final RobotControlSupport.Client createClient(); 
public static final RobotControlSupport.Service createService(RobotControl impl); 
// more client and service factory methods here 
}
What needs to be specified 
• Mapping to DDS Topics & Filters 
– Each operation maps to a pair of topics? 
• Simplicity, Flexibility vs Scalability 
– Each interface to a pair of Topics? 
• What are the types? Inheritance? 
– Is publish-subscribe allowed? e.g. auditing, monitoring… 
• Mapping to DDS Data-types 
– How to model operations? Parameters (in, our) return, exceptions, … 
– Fragility upon interfaces / operations changes? 
– Describable using X-TYPES? 
• DDS API and DDS-RTPS impact 
– Are extensions required? 
– Deployment on top of existing DDS 
• Language Bindings (C, C++, Java, C#, …) 
© 2014 Real-Time Innovations, Inc.
Architecture 
Client Application Service 
Data 
Writer 
Message-id1 
© 2014 Real-Time Innovations, Inc. 
Service 
Implementation 
Lang. 
Bind. 
GUID2 
Client-side 
Invoker 
Data 
Reader 
Data 
Reader 
Data 
Writer 
GUID1 SN1 Foo 
GUID2 SN2 GUID1 SN1 Bar 
Message-id2 
Correlation-id1 
Content-based Filter for filtering 
unwanted replies 
Language Binding 
Bar Svc.method(in Foo); 
Foo 
Bar 
GUID1 
Invoke 
Return 
Call Topic 
Return Topic 
Foo 
Bar
Basic and Enhanced Service Mappings 
• Basic 
– Highest portability 
– Enables RPC on top of existing (v1.3 or earlier) DDS Implementations 
© 2014 Real-Time Innovations, Inc. 
• Enhanced 
– Elegant, Clean 
– Leverages DDS-XTypes for type matching, 
– Adds support for Robust service discovery, Implicit request/reply correlation 
Mapping Aspect Basic Service Mapping Profile Enhanced Service Mapping 
Profile 
Correlation Information 
(request-id) 
Explicitly added to the data-type Implicit. They appear on the Sample 
meta-data. 
Topic Mapping One request topic and one reply topic 
per interface. 2*N for a hierarchy of N 
interfaces. 
One request and one reply topic per 
interface. Independent of interface 
hierarchy. 
Type Mapping Synthesized types compatible with 
legacy (pre DDS-XTypes) 
implementations. 
Use facilities of DDS-XTypes for type 
descriptions, annotations, and type-compatibility 
checks. 
Discovery No special extensions. Robust service discovery (no sample loss 
due to transient states)
Language Bindings 
• Two types of language bindings 
– High-level binding that provide function-call semantics 
– Low-level binding that are akin to send/receive (but still higher level than raw DDS 
© 2014 Real-Time Innovations, Inc. 
read/take/write) 
• Strong separation between the data model and language binding 
Client 
Application 
Function-call 
language 
binding 
DDS API 
Service 
Specification 
(IDL) 
Client 
Application 
Request-Reply 
language 
binding 
DDS API 
Service 
Implementation 
Function call 
language 
binding 
DDS API 
Service 
Implementation 
Request-Reply 
language 
binding 
DDS API 
Service-specific Interoperable/Evolvable Data model (DDS/RTPS)
QoS Mapping 
• Default strict reliable (request and reply) 
– RELIABLE reliability 
– KEEP_ALL history 
– VOLATILE durability 
• Can be changed by the user on a per-service level 
© 2014 Real-Time Innovations, Inc.
struct RobotControl_setSpeed_In { 
long s; 
}; 
struct RobotControl_getSpeed_In { 
boolean return_; 
}; 
© 2014 Real-Time Innovations, Inc. 
@DDSService 
interface RobotControl 
{ 
float setSpeed(float speed) raises (TooFast); 
float getSpeed(); 
void start(); 
void stop(); 
}; 
@choice @autoid 
struct RobotControl_Request { 
RobotControl_setSpeed_In setSpeed; 
RobotControl_getSpeed_In getSpeed; 
RobotControl_start_In start; 
RobotControl_stop_In stop; 
}; 
@empty 
struct start_In { octet dummy_;}; 
@empty 
struct stop_In { octet dummy_;};
struct RobotControl_setSpeed_Out { 
float return_; 
// Also inout and out params 
}; 
… 
© 2014 Real-Time Innovations, Inc. 
@DDSService 
interface RobotControl 
{ 
float setSpeed(float speed) raises (TooFast); 
float getSpeed(); 
void start(); 
void stop(); 
}; 
@choice @autoid 
struct RobotControl_setSpeed_Result { 
RobotControl_setSpeed_Out out; 
SystemExceptionCode sysx_; 
TooFast toofast_ex; 
}; 
… 
@choice @autoid 
struct RobotControl_Reply { 
RobotControl_setSpeed_Result setSpeed; 
RobotControl_getSpeed_Result getSpeed; 
RobotControl_start_Result start; 
RobotControl_stop_Result stop; 
};
Status 
• Ongoing standard at OMG 
• RFP was issued in June 2012 
• Initially 2 competing submissions: 
1. Joint RTI + eProsima (later joined by TwinOaks) 
2. PrismTech 
• Very different approaches – not converging 
– Evaluation team representing 5 companies formed to provide 
feedback 
• Recommendation was to simplify RTI/eProsima submission 
• PrismTech dropped their submission and joined RTI/eProsimas’/TwinOaks 
• Expected to be voted and adopted in Dec 2014 
• Completed Function-Call and Request/Reply language binding 
– Java (https://github.com/rticommunity/dds-rpc-java) 
– C++* (https://github.com/rticommunity/dds-rpc-cxx) 
– eProsima has POC implementation of “basic” profile working with several DDS 
© 2014 Real-Time Innovations, Inc. 
implementations
Questions? 
© 2014 Real-Time Innovations, Inc.
Find out more… 
www.rti.com 
community.rti.com 
demo.rti.com 
www.youtube.com/realtimeinnovations 
blogs.rti.com 
www.twitter.com/RealTimeInnov 
www.facebook.com/RTIsoftware 
www.slideshare.net/GerardoPardo 
www.slideshare.net/RealTimeInnovations 
© 2014 Real-Time Innovations, Inc. 
dds.omg.org 
www.omg.org 
© 2014 RTI

More Related Content

What's hot

Securing the Hadoop Ecosystem
Securing the Hadoop EcosystemSecuring the Hadoop Ecosystem
Securing the Hadoop Ecosystem
DataWorks Summit
 
Hadoop security @ Philly Hadoop Meetup May 2015
Hadoop security @ Philly Hadoop Meetup May 2015Hadoop security @ Philly Hadoop Meetup May 2015
Hadoop security @ Philly Hadoop Meetup May 2015
Shravan (Sean) Pabba
 
Hadoop Security Features That make your risk officer happy
Hadoop Security Features That make your risk officer happyHadoop Security Features That make your risk officer happy
Hadoop Security Features That make your risk officer happy
DataWorks Summit
 
Demo of RTI DDS toolkit for LabVIEW
Demo of RTI DDS toolkit for LabVIEWDemo of RTI DDS toolkit for LabVIEW
Demo of RTI DDS toolkit for LabVIEW
Real-Time Innovations (RTI)
 
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
Cloudera, Inc.
 
Hadoop Security Features that make your risk officer happy
Hadoop Security Features that make your risk officer happyHadoop Security Features that make your risk officer happy
Hadoop Security Features that make your risk officer happy
Anurag Shrivastava
 
Hadoop Security: Overview
Hadoop Security: OverviewHadoop Security: Overview
Hadoop Security: Overview
Cloudera, Inc.
 
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
Cloudera, Inc.
 
Big datadc skyfall_preso_v2
Big datadc skyfall_preso_v2Big datadc skyfall_preso_v2
Big datadc skyfall_preso_v2
abramsm
 
Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)
Jorgen Thelin
 
Deploying Enterprise-grade Security for Hadoop
Deploying Enterprise-grade Security for HadoopDeploying Enterprise-grade Security for Hadoop
Deploying Enterprise-grade Security for Hadoop
Cloudera, Inc.
 
Big Data Security with Hadoop
Big Data Security with HadoopBig Data Security with Hadoop
Big Data Security with Hadoop
Cloudera, Inc.
 
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
Cloudera, Inc.
 
Big data security
Big data securityBig data security
Big data security
Joey Echeverria
 
Article data-centric security key to cloud and digital business
Article   data-centric security key to cloud and digital businessArticle   data-centric security key to cloud and digital business
Article data-centric security key to cloud and digital business
Ulf Mattsson
 
OpenSplice Security Module
OpenSplice Security ModuleOpenSplice Security Module
OpenSplice Security Module
Angelo Corsaro
 
What's new in PDF 2.0 regarding digital signatures
What's new in PDF 2.0 regarding digital signaturesWhat's new in PDF 2.0 regarding digital signatures
What's new in PDF 2.0 regarding digital signatures
Bruno Lowagie
 
DataPower Security Hardening
DataPower Security HardeningDataPower Security Hardening
DataPower Security Hardening
Shiu-Fun Poon
 
TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.
Real-Time Innovations (RTI)
 
CEE Logging Standard: Today and Tomorrow
CEE Logging Standard: Today and TomorrowCEE Logging Standard: Today and Tomorrow
CEE Logging Standard: Today and Tomorrow
Anton Chuvakin
 

What's hot (20)

Securing the Hadoop Ecosystem
Securing the Hadoop EcosystemSecuring the Hadoop Ecosystem
Securing the Hadoop Ecosystem
 
Hadoop security @ Philly Hadoop Meetup May 2015
Hadoop security @ Philly Hadoop Meetup May 2015Hadoop security @ Philly Hadoop Meetup May 2015
Hadoop security @ Philly Hadoop Meetup May 2015
 
Hadoop Security Features That make your risk officer happy
Hadoop Security Features That make your risk officer happyHadoop Security Features That make your risk officer happy
Hadoop Security Features That make your risk officer happy
 
Demo of RTI DDS toolkit for LabVIEW
Demo of RTI DDS toolkit for LabVIEWDemo of RTI DDS toolkit for LabVIEW
Demo of RTI DDS toolkit for LabVIEW
 
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
Comprehensive Hadoop Security for the Enterprise | Part I | Compliance Ready ...
 
Hadoop Security Features that make your risk officer happy
Hadoop Security Features that make your risk officer happyHadoop Security Features that make your risk officer happy
Hadoop Security Features that make your risk officer happy
 
Hadoop Security: Overview
Hadoop Security: OverviewHadoop Security: Overview
Hadoop Security: Overview
 
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
Comprehensive Security for the Enterprise II: Guarding the Perimeter and Cont...
 
Big datadc skyfall_preso_v2
Big datadc skyfall_preso_v2Big datadc skyfall_preso_v2
Big datadc skyfall_preso_v2
 
Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)Web Services and Devices Profile for Web Services (DPWS)
Web Services and Devices Profile for Web Services (DPWS)
 
Deploying Enterprise-grade Security for Hadoop
Deploying Enterprise-grade Security for HadoopDeploying Enterprise-grade Security for Hadoop
Deploying Enterprise-grade Security for Hadoop
 
Big Data Security with Hadoop
Big Data Security with HadoopBig Data Security with Hadoop
Big Data Security with Hadoop
 
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
Comprehensive Security for the Enterprise III: Protecting Data at Rest and In...
 
Big data security
Big data securityBig data security
Big data security
 
Article data-centric security key to cloud and digital business
Article   data-centric security key to cloud and digital businessArticle   data-centric security key to cloud and digital business
Article data-centric security key to cloud and digital business
 
OpenSplice Security Module
OpenSplice Security ModuleOpenSplice Security Module
OpenSplice Security Module
 
What's new in PDF 2.0 regarding digital signatures
What's new in PDF 2.0 regarding digital signaturesWhat's new in PDF 2.0 regarding digital signatures
What's new in PDF 2.0 regarding digital signatures
 
DataPower Security Hardening
DataPower Security HardeningDataPower Security Hardening
DataPower Security Hardening
 
TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.TechTalk: Connext DDS 5.2.
TechTalk: Connext DDS 5.2.
 
CEE Logging Standard: Today and Tomorrow
CEE Logging Standard: Today and TomorrowCEE Logging Standard: Today and Tomorrow
CEE Logging Standard: Today and Tomorrow
 

Similar to Remote Procedure Call over DDS - London Connext DDS Conference

RPC Over DDS
RPC Over DDSRPC Over DDS
Overview of Rest Service and ASP.NET WEB API
Overview of Rest Service and ASP.NET WEB APIOverview of Rest Service and ASP.NET WEB API
Overview of Rest Service and ASP.NET WEB API
Pankaj Bajaj
 
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Brian Petrini
 
Data Quality Technical Architecture
Data Quality Technical ArchitectureData Quality Technical Architecture
Data Quality Technical Architecture
Harshendu Desai
 
Service Oriented Architecture
Service Oriented Architecture Service Oriented Architecture
Service Oriented Architecture
Prabhat gangwar
 
OFC2016 SDN Framework and APIs
OFC2016 SDN Framework and APIsOFC2016 SDN Framework and APIs
OFC2016 SDN Framework and APIs
Deborah Porchivina
 
Semantic Web Servers
Semantic Web ServersSemantic Web Servers
Semantic Web Servers
webhostingguy
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Modern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas JellemaModern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas Jellema
Lucas Jellema
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
PLUMgrid
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
Sumant Tambe
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
Real-Time Innovations (RTI)
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
Woodruff Solutions LLC
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introduction
Randy Abernethy
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
Madhaiyan Muthu
 
Communication Protocols And Web Services
Communication Protocols And Web ServicesCommunication Protocols And Web Services
Communication Protocols And Web Services
Omer Katz
 
Two Approaches You Must Consider when Architecting Radar Systems
Two Approaches You Must Consider when Architecting Radar SystemsTwo Approaches You Must Consider when Architecting Radar Systems
Two Approaches You Must Consider when Architecting Radar Systems
Real-Time Innovations (RTI)
 
Software Defined Service Networking (SDSN) - by Dr. Indika Kumara
Software Defined Service Networking (SDSN) - by Dr. Indika KumaraSoftware Defined Service Networking (SDSN) - by Dr. Indika Kumara
Software Defined Service Networking (SDSN) - by Dr. Indika Kumara
Thejan Wijesinghe
 
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Woodruff Solutions LLC
 
5041
50415041

Similar to Remote Procedure Call over DDS - London Connext DDS Conference (20)

RPC Over DDS
RPC Over DDSRPC Over DDS
RPC Over DDS
 
Overview of Rest Service and ASP.NET WEB API
Overview of Rest Service and ASP.NET WEB APIOverview of Rest Service and ASP.NET WEB API
Overview of Rest Service and ASP.NET WEB API
 
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
Impact 2008 1994A - Exposing services people want to consume: a model-driven ...
 
Data Quality Technical Architecture
Data Quality Technical ArchitectureData Quality Technical Architecture
Data Quality Technical Architecture
 
Service Oriented Architecture
Service Oriented Architecture Service Oriented Architecture
Service Oriented Architecture
 
OFC2016 SDN Framework and APIs
OFC2016 SDN Framework and APIsOFC2016 SDN Framework and APIs
OFC2016 SDN Framework and APIs
 
Semantic Web Servers
Semantic Web ServersSemantic Web Servers
Semantic Web Servers
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Switch to Backend 2023
 
Modern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas JellemaModern Database Development Oow2008 Lucas Jellema
Modern Database Development Oow2008 Lucas Jellema
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
Communication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/SubscribeCommunication Patterns Using Data-Centric Publish/Subscribe
Communication Patterns Using Data-Centric Publish/Subscribe
 
Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8Connecting to Data from Windows Phone 8
Connecting to Data from Windows Phone 8
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introduction
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
Communication Protocols And Web Services
Communication Protocols And Web ServicesCommunication Protocols And Web Services
Communication Protocols And Web Services
 
Two Approaches You Must Consider when Architecting Radar Systems
Two Approaches You Must Consider when Architecting Radar SystemsTwo Approaches You Must Consider when Architecting Radar Systems
Two Approaches You Must Consider when Architecting Radar Systems
 
Software Defined Service Networking (SDSN) - by Dr. Indika Kumara
Software Defined Service Networking (SDSN) - by Dr. Indika KumaraSoftware Defined Service Networking (SDSN) - by Dr. Indika Kumara
Software Defined Service Networking (SDSN) - by Dr. Indika Kumara
 
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
Connecting to Data from Windows Phone 8 VSLive! Redmond 2013
 
5041
50415041
5041
 

More from Gerardo Pardo-Castellote

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
Gerardo Pardo-Castellote
 
DDS, the US Navy, and the Need for Distributed Software
DDS, the US Navy,  and the Need for Distributed SoftwareDDS, the US Navy,  and the Need for Distributed Software
DDS, the US Navy, and the Need for Distributed Software
Gerardo Pardo-Castellote
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
Gerardo Pardo-Castellote
 
DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
Gerardo Pardo-Castellote
 
A Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial AutomationA Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial Automation
Gerardo Pardo-Castellote
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018
Gerardo Pardo-Castellote
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Gerardo Pardo-Castellote
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
Gerardo Pardo-Castellote
 
OPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 BetaOPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 Beta
Gerardo Pardo-Castellote
 
DDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 BetaDDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 Beta
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017
Gerardo Pardo-Castellote
 
DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017
Gerardo Pardo-Castellote
 
Extensible Types for DDS (DDS-XTYPES) version 1.2
Extensible Types for DDS (DDS-XTYPES) version 1.2Extensible Types for DDS (DDS-XTYPES) version 1.2
Extensible Types for DDS (DDS-XTYPES) version 1.2
Gerardo Pardo-Castellote
 
DDS-Security version 1.1
DDS-Security version 1.1DDS-Security version 1.1
DDS-Security version 1.1
Gerardo Pardo-Castellote
 
Interface Definition Language (IDL) version 4.2
Interface Definition Language (IDL) version 4.2 Interface Definition Language (IDL) version 4.2
Interface Definition Language (IDL) version 4.2
Gerardo Pardo-Castellote
 
DDS Security Specification version 1.0
DDS Security Specification version 1.0DDS Security Specification version 1.0
DDS Security Specification version 1.0
Gerardo Pardo-Castellote
 
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained EnvironmentsDDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
Gerardo Pardo-Castellote
 
DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)
Gerardo Pardo-Castellote
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
Gerardo Pardo-Castellote
 

More from Gerardo Pardo-Castellote (20)

DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systemsDDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS-Security 1.2 - What's New? Stronger security for long-running systems
 
DDS, the US Navy, and the Need for Distributed Software
DDS, the US Navy,  and the Need for Distributed SoftwareDDS, the US Navy,  and the Need for Distributed Software
DDS, the US Navy, and the Need for Distributed Software
 
Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.Introduction to DDS: Context, Information Model, Security, and Applications.
Introduction to DDS: Context, Information Model, Security, and Applications.
 
DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)DDS-TSN OMG Request for Proposals (RFP)
DDS-TSN OMG Request for Proposals (RFP)
 
A Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial AutomationA Converged Approach to Standards for Industrial Automation
A Converged Approach to Standards for Industrial Automation
 
Overview of the DDS-XRCE specification
Overview of the DDS-XRCE specificationOverview of the DDS-XRCE specification
Overview of the DDS-XRCE specification
 
DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018DDS-Security Interoperability Demo - March 2018
DDS-Security Interoperability Demo - March 2018
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
OPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 BetaOPC UA/DDS Gateway version 1.0 Beta
OPC UA/DDS Gateway version 1.0 Beta
 
DDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 BetaDDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 Beta
 
DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - December 2017
 
DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017DDS-Security Interoperability Demo - September 2017
DDS-Security Interoperability Demo - September 2017
 
Extensible Types for DDS (DDS-XTYPES) version 1.2
Extensible Types for DDS (DDS-XTYPES) version 1.2Extensible Types for DDS (DDS-XTYPES) version 1.2
Extensible Types for DDS (DDS-XTYPES) version 1.2
 
DDS-Security version 1.1
DDS-Security version 1.1DDS-Security version 1.1
DDS-Security version 1.1
 
Interface Definition Language (IDL) version 4.2
Interface Definition Language (IDL) version 4.2 Interface Definition Language (IDL) version 4.2
Interface Definition Language (IDL) version 4.2
 
DDS Security Specification version 1.0
DDS Security Specification version 1.0DDS Security Specification version 1.0
DDS Security Specification version 1.0
 
DDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained EnvironmentsDDS for eXtremely Resource Constrained Environments
DDS for eXtremely Resource Constrained Environments
 
DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)DDS-XRCE - Revised Submission Presentation (September 2017)
DDS-XRCE - Revised Submission Presentation (September 2017)
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
 

Recently uploaded

Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
Claudio Di Ciccio
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
Techgropse Pvt.Ltd.
 

Recently uploaded (20)

Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
 

Remote Procedure Call over DDS - London Connext DDS Conference

  • 1. DDS RPC over DDS Gerardo Pardo-Castellote, Ph.D. Chief Technology Officer, RTI Sumant Tambe, Ph.D. Senior Software Reseach Engineer, RTI October 2014
  • 2. © 2014 Real-Time Innovations, Inc. Outline • Goals • Background • Status • Details • More info
  • 3. Goals • Provide standard and interoperable way means to support “RPC” communication patterns in DDS • Support the Patters: – Request/Reply – Service Invocation – Remote Procedure Call – Remote Method Invocation • Support invocation of IDL-specified interfaces over DDS – Provide a simpler way to migrate CORBA applications to DDS – Support familiar “remote interface” programming style equivalent to Java RMI and Apache Thrift © 2014 Real-Time Innovations, Inc.
  • 4. Advantages of RPC over DDS • Client and Servers are decoupled – No startup dependencies • QoS enforcement to support service SLAs – Ownership–Redundant pool of servers – Lifespan–request is only valid for the next N sec – Durability-request/replies will be eventually received and processed – Cancellation– after a good quality response has arrived © 2014 Real-Time Innovations, Inc. • Data-Centricity – Explicit trace-ability – Interaction state can be Monitored, Logged, Audited, Stored, Manipulated • Watch by subscribing to requests and/or responses (wire-tap) • One middleware – leverage DDS infrastructure – Suited for real-time systems – Multiplatform, Multilanguage, Interoperable
  • 5. But I can already do it... True: • I can write my own RCP using request/reply Topics • RTI Connext already supports a “Request/Reply” equivalent to RPC • Some other vendors do similar things But… • The mapping from service to Topics and Types is ad-hoc. • These approaches are not portable/Interoperable • Getting everything right is cumbersome at best © 2014 Real-Time Innovations, Inc.
  • 6. How can I do it myself? • Map Interfaces to types & Topics… – One Topic per interface, one per operation? – What are the types. How to map exceptions, output parameters, … – What happens if the interfaces change, e.g. operation is added or moved? • Implement necessary plumbing: • Setup request topic and type • Setup reply topic and type • Filter unwanted requests • Filter unwanted replies © 2014 Real-Time Innovations, Inc.
  • 7. But RPC is not a good/robust idea/design pattern…. • RPC versus Desired State Pattern – Insight: Often a request-reply can be modeled as stateful data-centric interactions Goal State © 2014 Real-Time Innovations, Inc. write Current State Affect Service Client Service Provider Desired State read write read read
  • 8. RPC vs Desired State • Desired state is good & more robust if the “request” actually represents: – a request to change of system state – Take a long time to fulfill – Needs to be observable by others © 2014 Real-Time Innovations, Inc. • However: – Many requests that do not represent changes to state: Database Query, Read a File… – People familiar for “Service” or “Request/Reply” pattern may find Directed State cumbersome –specially if extra robustness is unwarranted RPC over DDS provides best of both worlds!
  • 9. Example: RobotControl © 2014 Real-Time Innovations, Inc. module robot { @DDSService interface RobotControl { void command(Command command); float setSpeed(float speed) raises (TooFast); float getSpeed(); void getStatus(out Status status); }; }
  • 10. RobotControl Client © 2014 Real-Time Innovations, Inc. import org.omg.dds.rpc.*; public class TestRobot { static void createRobotClient() { RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); ClientParams clientParams = runtime.createClientParams(); // optional RobotControlSupport.Client robotClient = RobotControlSupport.createClient( clientParams.withServiceName(”TestRobot”) .withInstanceName(“iRobot”)); // more configs available robotClient.waitForService(); // optional robotClient.getSpeed(); } }
  • 11. RobotControl Service (Java) package robot; import robot.RobotControl; public class MyRobot implements RobotControl { public void command(Command command) { } public float setSpeed(float speed) { return 1; } public float getSpeed() { return 2; } public void getStatus(/* out */ Status status) { } © 2014 Real-Time Innovations, Inc. } import org.omg.dds.rpc.*; public class TestRobot { public static void createRobotServer() { RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); MyRobot myRobot = new MyRobot(); Server server = runtime.createServer(); // Configurable using ServerParams RobotControlSupport.Service service = RobotControlSupport.createService(myRobot, server); // Configurable using ServiceParams server.run(); // blocking } }
  • 12. RobotControl Requester © 2014 Real-Time Innovations, Inc. public class TestRobot { static void createRobotRequester() { RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); RequesterParams reqParams = runtime.createRequesterParams(); // change params here if you like Requester<RobotControlSupport.RequestType, RobotControlSupport.ReplyType> requester = runtime.createRequester( RobotControlSupport.RequestType.class, RobotControlSupport.ReplyType.class, reqParams); RobotControlSupport.RequestType request = new RobotControlSupport.RequestType(); // populate request requester.sendRequest(request); } }
  • 13. RobotControl Replier public class TestRobot { static void createRobotReplier() { RPCRuntime runtime = RPCRuntime.getInstance(TestRobot.class.getClassLoader()); ReplierParams repParams = runtime.createReplierParams(); // change params here if you like Replier<RobotControlSupport.RequestType, RobotControlSupport.ReplyType> replier = runtime.createReplier( RobotControlSupport.RequestType.class, RobotControlSupport.ReplyType.class, repParams); Sample<RobotControlSupport.RequestType> request = replier.receiveRequest(); © 2014 Real-Time Innovations, Inc. } }
  • 14. RobotControlSupport public abstract class RobotControlSupport { public final static class RequestType { // omg.dds.rpc.RequestHeader header; // robot.RobotControl_Call data; © 2014 Real-Time Innovations, Inc. } public final static class ReplyType { // omg.dds.rpc.ReplyHeader header; // robot.RobotControl_Return data } public interface Client extends RobotControl, RobotControlAsync, ClientEndpoint { } public interface Service extends ServiceEndpoint { } public static final RobotControlSupport.Client createClient(); public static final RobotControlSupport.Service createService(RobotControl impl); // more client and service factory methods here }
  • 15. What needs to be specified • Mapping to DDS Topics & Filters – Each operation maps to a pair of topics? • Simplicity, Flexibility vs Scalability – Each interface to a pair of Topics? • What are the types? Inheritance? – Is publish-subscribe allowed? e.g. auditing, monitoring… • Mapping to DDS Data-types – How to model operations? Parameters (in, our) return, exceptions, … – Fragility upon interfaces / operations changes? – Describable using X-TYPES? • DDS API and DDS-RTPS impact – Are extensions required? – Deployment on top of existing DDS • Language Bindings (C, C++, Java, C#, …) © 2014 Real-Time Innovations, Inc.
  • 16. Architecture Client Application Service Data Writer Message-id1 © 2014 Real-Time Innovations, Inc. Service Implementation Lang. Bind. GUID2 Client-side Invoker Data Reader Data Reader Data Writer GUID1 SN1 Foo GUID2 SN2 GUID1 SN1 Bar Message-id2 Correlation-id1 Content-based Filter for filtering unwanted replies Language Binding Bar Svc.method(in Foo); Foo Bar GUID1 Invoke Return Call Topic Return Topic Foo Bar
  • 17. Basic and Enhanced Service Mappings • Basic – Highest portability – Enables RPC on top of existing (v1.3 or earlier) DDS Implementations © 2014 Real-Time Innovations, Inc. • Enhanced – Elegant, Clean – Leverages DDS-XTypes for type matching, – Adds support for Robust service discovery, Implicit request/reply correlation Mapping Aspect Basic Service Mapping Profile Enhanced Service Mapping Profile Correlation Information (request-id) Explicitly added to the data-type Implicit. They appear on the Sample meta-data. Topic Mapping One request topic and one reply topic per interface. 2*N for a hierarchy of N interfaces. One request and one reply topic per interface. Independent of interface hierarchy. Type Mapping Synthesized types compatible with legacy (pre DDS-XTypes) implementations. Use facilities of DDS-XTypes for type descriptions, annotations, and type-compatibility checks. Discovery No special extensions. Robust service discovery (no sample loss due to transient states)
  • 18. Language Bindings • Two types of language bindings – High-level binding that provide function-call semantics – Low-level binding that are akin to send/receive (but still higher level than raw DDS © 2014 Real-Time Innovations, Inc. read/take/write) • Strong separation between the data model and language binding Client Application Function-call language binding DDS API Service Specification (IDL) Client Application Request-Reply language binding DDS API Service Implementation Function call language binding DDS API Service Implementation Request-Reply language binding DDS API Service-specific Interoperable/Evolvable Data model (DDS/RTPS)
  • 19. QoS Mapping • Default strict reliable (request and reply) – RELIABLE reliability – KEEP_ALL history – VOLATILE durability • Can be changed by the user on a per-service level © 2014 Real-Time Innovations, Inc.
  • 20. struct RobotControl_setSpeed_In { long s; }; struct RobotControl_getSpeed_In { boolean return_; }; © 2014 Real-Time Innovations, Inc. @DDSService interface RobotControl { float setSpeed(float speed) raises (TooFast); float getSpeed(); void start(); void stop(); }; @choice @autoid struct RobotControl_Request { RobotControl_setSpeed_In setSpeed; RobotControl_getSpeed_In getSpeed; RobotControl_start_In start; RobotControl_stop_In stop; }; @empty struct start_In { octet dummy_;}; @empty struct stop_In { octet dummy_;};
  • 21. struct RobotControl_setSpeed_Out { float return_; // Also inout and out params }; … © 2014 Real-Time Innovations, Inc. @DDSService interface RobotControl { float setSpeed(float speed) raises (TooFast); float getSpeed(); void start(); void stop(); }; @choice @autoid struct RobotControl_setSpeed_Result { RobotControl_setSpeed_Out out; SystemExceptionCode sysx_; TooFast toofast_ex; }; … @choice @autoid struct RobotControl_Reply { RobotControl_setSpeed_Result setSpeed; RobotControl_getSpeed_Result getSpeed; RobotControl_start_Result start; RobotControl_stop_Result stop; };
  • 22. Status • Ongoing standard at OMG • RFP was issued in June 2012 • Initially 2 competing submissions: 1. Joint RTI + eProsima (later joined by TwinOaks) 2. PrismTech • Very different approaches – not converging – Evaluation team representing 5 companies formed to provide feedback • Recommendation was to simplify RTI/eProsima submission • PrismTech dropped their submission and joined RTI/eProsimas’/TwinOaks • Expected to be voted and adopted in Dec 2014 • Completed Function-Call and Request/Reply language binding – Java (https://github.com/rticommunity/dds-rpc-java) – C++* (https://github.com/rticommunity/dds-rpc-cxx) – eProsima has POC implementation of “basic” profile working with several DDS © 2014 Real-Time Innovations, Inc. implementations
  • 23. Questions? © 2014 Real-Time Innovations, Inc.
  • 24. Find out more… www.rti.com community.rti.com demo.rti.com www.youtube.com/realtimeinnovations blogs.rti.com www.twitter.com/RealTimeInnov www.facebook.com/RTIsoftware www.slideshare.net/GerardoPardo www.slideshare.net/RealTimeInnovations © 2014 Real-Time Innovations, Inc. dds.omg.org www.omg.org © 2014 RTI