SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Extensible and Dynamic Topic Types for DDSMARS – Long Beach, CA – Dec., 2009 Presenter: Rick Warren, RTI Submitting POCs: ,[object Object]
Gerardo Pardo, RTI:	gerardo.pardo@rti.com
Robert Poth, PrismTech:	robert.poth@prismtech.com
Rick Warren, RTI:	rick.warren@rti.comSupporting POCs: ,[object Object],document number: 2009-12-01
DDS Types: Assessment and Challenges Good Bad Unmatched type safety => fewer defects Unique type awareness => faster integration Unique type awareness => higher performance No standard API to define / access types at runtime Hard to change types without rebuilding, redeploying Hard to upgrade systems one subsystem at a time © 2009 RTI - All rights Reserved 2 Vendor-Specific Solutions OMG-Standard Solutions
Where We Are RFP issued: Jun. 2008 Initial submission: Nov 2008 Revised submission extended: Feb. 2009 Revised submission extended: Aug. 2009 Revised submission deadline: Nov. 2009 © 2009 RTI - All rights Reserved 3
Requirements: Type System Extensible, Compatible 6.5.1:	(a) Type System as UML meta-model.	(b) Type substitutability rules. 6.5.2: Type extensibility, mutability rules 6.5.3: Type compatibility in presence of change 6.5.17: Allow type to evolve without breaking interoperability 6.5.5: Support keys. How does extensibility apply? More Expressive 6.5.4: Map data type 6.5.6, 6.5.19: Sparse data: object contains only subset of fields defined by its type © 2009 RTI - All rights Reserved 4
Requirements: Working with Types Static Definition 6.5.10: Built-in types: map, octet sequence, string sequence 6.5.11: Programming-language-independent type serialization format(s) 6.5.9: Represent types in IDL and XML Dynamic Definition 6.5.20:	(a) Define types dynamically.	(b) Create topics based on them. 6.5.12: Type discovery 6.5.13: Type introspection 6.5.21: All pub-sub operations using dynamically defined types © 2009 RTI - All rights Reserved 5
Requirements: Working with Data Dynamic Access 6.5.18: Dynamic data access 6.6.1: Optional: Dynamic data access based on XML or JSON Network Encapsulation 6.5.14: Encapsulation specification, negotiation 6.5.15: Is encapsulation request-offer? 6.6.2: Optional: Custom encapsulation API © 2009 RTI - All rights Reserved 6
Requirements: Compatibility Type Representation Level 6.5.7: Support subset of IDL used by DDS 1.2 Programming Level 6.5.8: APIs for C, C++, Java Network Level 6.5.16:	(a) Support CDR.	(b) Support parameterized CDR.	(c) Interoperate with RTPS/DDSI 2. © 2009 RTI - All rights Reserved 7
Design Principles Don’t break anybody. Many people depend on DDS Don’t modify existing APIs Don’t modify existing compliance points Many people depend on RTPS/DDSI 2 Don’t modify existing protocols or formats Don’t modify existing compliance points Keep it fast. New capabilities must permit efficient implementations. Don’t use them? Don’t pay for them. Keep it orthogonal. Type compatibility doesn’t depend on: Types’ definition language(s) Data encapsulation(s) Programming language(s) QoS configuration © 2009 RTI - All rights Reserved 8
Overview © 2009 RTI - All rights Reserved 9 Type System Type Representation Language Binding Data Representation
Overview Type System: abstract definition of what types can exist ,[object Object]
Including substitutability, compatibility rules
Mostly familiar from IDLType Representations: languages for describing types ,[object Object]
XML and XSD
TypeCodeData Representations: languages for describing data CDR XML © 2009 RTI - All rights Reserved 10
Overview Language Binding: programming APIs “Plain Language”: extension of existing IDL-to-language bindings Dynamic: reflective API for types and objects, defined in UML (conceptual model) and IDL (API) Use by DDS: application of type/data representations to middleware Data encapsulation, QoS compatibility Type compatibility as applied to endpoint matching Built-in types © 2009 RTI - All rights Reserved 11
Overview © 2009 RTI - All rights Reserved 12 Type System Type Representation Language Binding Data Representation Type System: DDS data objects have a type Language Binding: Objects are manipulated using a Language Binding to some programming language Data Representation: Objects can be serialized for file storage and network transmission Language Binding: Types are manipulated using a Language Binding to some programming language Type Representation: Types can be serialized for file storage and network transmission
Overview: Example © 2009 RTI - All rights Reserved 13 Type Representation IDL: Foo.idl struct Foo {  string name;  long ssn; }; Language Binding IDL to Language Mapping: Foo.h Foo.c FooTypeSupport.c struct Foo {   char *name;   int ssn; }; Foo f = {"hello", 2}; Data Representation IDL to CDR: 00000006 68656C6C 6F000000 00000002
Type System Extensible, Compatible 6.5.1:	(a) Type System as UML meta-model.	(b) Type substitutability rules. 6.5.2: Type extensibility, mutability rules 6.5.3: Type compatibility in presence of change 6.5.17: Allow type to evolve without breaking interoperability 6.5.5: Support keys. How does extensibility apply? More Expressive 6.5.4: Map data type 6.5.6, 6.5.19: Sparse data: object contains only subset of fields defined by its type © 2009 RTI - All rights Reserved 14
The Example Radar system uses “Original Land Data” (OLD): structOriginalLandData {     long x;     long y; }; © 2009 RTI - All rights Reserved 15
Type System Overview © 2009 RTI - All rights Reserved 16
Type System Overview *	Type System in not defined in terms of IDL.I’m explaining in terms of IDL for clarity. Entirely familiar from IDL: Primitives Strings, narrow and wide Arrays and sequences Aliases (typedefs) Unions Modules As in IDL, but extended: Structures—including single inheritance(for substitutability: 6.5.1) Enumerations—specify bit width and constant values New relative to IDL: Maps—like std::mapor java.util.Map;required by RFP (6.5.4), fundamental OO collection Annotations—for extensibility (6.5.2, 6.5.3) © 2009 RTI - All rights Reserved 17 structOriginalLandData {     long x;     long y; };
Type System Extensibility: Structures © 2009 RTI - All rights Reserved 18
Type System Extensibility: Structures Collection of members, of same or different types.Each member has: Aname, unique w/in type AID, unique w/in type Allows compact, extensiblerepresentation Brings RTPS discovery types intotype system mainstream Improves introspection performance Consistent with other technologies,like SNMP, FIX, TIBCO Rendezvous © 2009 RTI - All rights Reserved 19 structOriginalLandData {     long x; // ID=0     long y; // ID=1 };
Type System Extensibility: Structures Collection of members, of same or different types.Each member has: A unique name (string) A unique ID (unsigned integer) Additional metadata: Key? Optional vs. required—Does value always exist? (6.5.6, 6.5.19) Important semantics: Think null vs. non-null value Universal concept: C, C++, Java, .Net, SQL, XSD, 
 Important for interop: If I have a field in my type that you don’t, what do I do with data from you? Important for representational efficiency: Skip a field with well-defined semantics Note: Keys always required; otherwise, identity breaks down © 2009 RTI - All rights Reserved 20
Q: Do Member ID’s Make Integration Harder? No: Same scope as member names (per type) No: Huge range (100s millions): easy to partition No: Proven approach in large systems e.g. SNMP e.g. FIX e.g. Google Protocol Buffers e.g.Tibco Rendezvous © 2009 RTI - All rights Reserved 21
Type System Extensibility: Structures Single inheritance Most common use case for type substitution (6.5.1) Additional metadata Extensible? Type may change in the future; be ready (6.5.2, 6.5.3, 6.5.17) © 2009 RTI - All rights Reserved 22
Type Compatibility (6.5.3, 6.5.17) Directed relationship: is-assignable-from Type1 is-assignable-from Type2 meansif I need a Type1, I can use a Type2 in its place Intuition: If Bar is a subclass of Foo, I can use Bar wherever I need Foo Performance constraint: Don’t require reader to interpret data in writer-specific way Implication: is-assignable-from must be very strict: Serialized object of Type2 must be interpretable with access only to Type1 Keys must agree too True: sequence<long,10>is-assignable-from sequence<long,5> False: long[10]is-assignable-from long[5] © 2009 RTI - All rights Reserved 23
Type Compatibility: Example // NEW1 struct NextEnhancedWorldview1 {     long x;     long y; TrackKindEnum kind; }; // NEW2 struct NextEnhancedWorldview2 {     long y; // out of order!     long x; // out of order! }; // OLD structOriginalLandData {     long x;     long y; }; © 2009 RTI - All rights Reserved 24 is-assignable-from ! is-assignable-from To Be Continued

Type System Extensibility: Metadata Question: How can vendors attach additional metadata to type system elements? Question: How can users do the same? Answer: Annotations © 2009 RTI - All rights Reserved 25 DB Table “Track” Project “Radar” structOriginalLandData {     long x;     long y; }; DB Column “horz” Version 1.2 DB Column “vert”
Type System Extensibility: Metadata Annotation = structured metadataattached to type or type member Annotation type defines annotation members, their names, and their types Annotation usage provides values for annotation type’s members Established programming practice In Java:	@MyAnnotationintx; In C#:	[MyAnnotation] intx; © 2009 RTI - All rights Reserved 26 DB Tablename: string DB Tablename = “Track”
Type Representations ,[object Object]
XML, XSD
TypeCode© 2009 RTI - All rights Reserved 27 Static Definition ,[object Object]
6.5.9: Represent types in IDL and XML
6.5.7: Support IDL subset used by DDS 1.2Dynamic Definition ,[object Object],[object Object]
Use structures.Use value types if inheritance desired.
New keyword (only one)map,[object Object]
We’ll get to these © 2009 RTI - All rights Reserved 28
Metadata in IDL: Non-Standard Metadata Java-like annotation syntax: already familiar Annotation type: @Annotation local interface MyAnnotation {     long value1();     double value2(); }; Annotation usage: structMyStruct {     @MyAnnotation(value1 = 42, value2 = 42.0)     long my_field; }; © 2009 RTI - All rights Reserved 29
Metadata in IDL: Standard Metadata Historical approach: add keywords(abstract, truncatable, public, 
) Clutters up language Compatibility nightmare Not scalable: each new revision needs to add more Alternative: re-use annotation syntax All metadata looks the same:standard, vendor-specific, user-defined Update compilers just once*; don’t break syntaxwith every new spec	(*
or not at all: see next slide) Built-in annotations: Declare annotation type: @Annotation Modify members: @Key, @ID Modify types: @Extensible © 2009 RTI - All rights Reserved 30
Metadata in IDL: Compatible Syntax Scenario: Using same IDL file with two IDL compilers; only one supports this spec Solution: Comment-like syntax Primary syntax:	@ID(1) long x; BW-compatible syntax:	long x; //@ID(2) Advantage: annotation syntactically connected to annotated element Looks like comment: ignored by non-conformant compilers As compact as primary syntax Allows meaning of declaration to be understood at once Simplifies config. mgmt.: metadata can’t get out of sync © 2009 RTI - All rights Reserved 31
Type Compatibility: Example (Revisited) // NEW1 @Extensible struct NextEnhancedWorldview1 {     long x;     long y; TrackKindEnum kind; }; // NEW2 @Extensible struct NextEnhancedWorldview2 {     @ID(1) long y; @ID(2) long z; @ID(0) long x; }; // OLD @Extensible structOriginalLandData {     long x;     long y; }; © 2009 RTI - All rights Reserved 32 is-assignable-from is-assignable-from
Q: Why Aren’t All Structures “Extensible”? They are, but only in certain ways. Always legal to add fields to the end “Extensible” types are more extensible There’s a price: space, processing Can the data present vary from sample to sample?Need sufficient metadata to detect what’s (not) there. Technical case for not paying:Not all types, systems will change in deployment Business case for not paying: CDR doesn’t support extensibility by itself No way to detect member addition, omission, reordering Can’t abandon or break entire installed base Can “extensible” be the default? No: IDL  CDR is well defined; would break everyone Vendors could provide IDL compiler configuration option © 2009 RTI - All rights Reserved 33
XML Type Representations #1: XSD #2: XML Based on existing IDL-to-WSDL mapping Validates XML Data Representation Allows type sharing between DDS and web services But
 Very verbose Hard to read, hard to write, hard to parse Straightforward mapping of Type System into XML Easy to read, easy to write, easy to parse Suitable for embedding into other XML documents (e.g. QoS profile files) © 2009 RTI - All rights Reserved 34
XML Type Representations #1: XSD #2: XML <xsd:complexType name="OLD"> 	<xsd:sequence> 	<xsd:element name="x"minOccurs="1" maxOccurs="1" type="xsd:int"/> 	<xsd:element name="y"minOccurs="1" maxOccurs="1" type="xsd:int"/> 	</xsd:sequence> </xsd:complexType> <struct name="OLD"> 	<member name="x"  type="int32"/> 	<member name="y"  type="int32"/> </struct> © 2009 RTI - All rights Reserved 35
TypeCode Type Representation Requirement (6.5.12): Propagate types during discovery to enable dynamic behavior Question: Which Type Representation is appropriate? Should be compact, binary, 
 Answer: TypeCode Type Representation We know how to represent data efficiently for DDS: describe it as a data type Name “TypeCode” has heritage in CORBA, .Net © 2009 RTI - All rights Reserved 36
Data Representations ,[object Object]
XML© 2009 RTI - All rights Reserved 37
CDR Data Representation Requirements: Continue supporting existing (compact) CDR used by user-defined types (6.5.16) Continue supporting existing (extensible, parameterized) CDR used by discovery types (6.5.16) Provide extensibility to user-defined types (6.5.2, 6.5.3, 6.5.17)—all Data Representations should have equivalent expressiveness Solution: Existing extensible, parameterized CDR available to all Same rules for every type, built-in or user-defined 100% compatible with existing types and serialization Parameterized CDR: structs & unions marked “extensible” Each member == parameter Member ID == parameter ID Compact CDR: everything else © 2009 RTI - All rights Reserved 38
CDR: Costs & Benefits Cost: 4 bytes per member Benefits: Proven: Tag-Length-Value (TLV) in DHCP, ASN.1, 
 Consistent: Brings discovery types into mainstream Type evolution:	Determine which fields are (not) present;	Skip fields you don’t understand Time savings:	Encode/decode fast;	Send fields in any order Space savings:	Cost of omitted optional field	= 0 bytes;	Cost of default required field	= 0 bytes © 2009 RTI - All rights Reserved 39
Q: Could a Different Representation Save Space? Short Answer: Yes Long Answer: CDR optimizes for speed. Wire representation matches machine representation: Endianness Alignment Another representation could optimize for size. Could use variable-length encoding Example: Google Protocol Buffers Example: Apache Thrift (incubator; originally FaceBook) Unaligned access, bitwise operations will make it slow Could use compression—e.g. zip the whole UDP payload Active area of research Summary: Once fully understood, a space-optimized representation could be added to this proposed spec Could not replace CDR for speed, compatibility reasons © 2009 RTI - All rights Reserved 40
XML Data Representation Optional Requirement (6.6.1):Dynamic data access based on XML or JSON Given: XSD Type Representation Data object == XML document Validated by XSD Representation of its type SAX, DOM-based access follow naturally New RTPS encapsulation ID lets you use XML on the network © 2009 RTI - All rights Reserved 41 structOriginalLandData {     long x;     long y; }; <OriginalLandData>     <x>5</x>     <y>42</y>; </OriginalLandData>
Language Bindings ,[object Object]
Dynamic Language Binding© 2009 RTI - All rights Reserved 42
Plain Language Binding Defined by existing IDL-to-language mappings: Start with IDL Representation of a type Apply mapping to desired programming language Mappings expanded to cover new concepts e.g. maps, annotations, optional members For C, C++, Java as required by RFP (6.5.8) © 2009 RTI - All rights Reserved 43 // IDL structOrigLandData {     long x;     long y; }; // Java public class OrigLandData {     public intx;     public inty; }
Dynamic Language Binding Requirements: 6.5.20:	(a) Define types dynamically.	(b) Create topics based on them. 6.5.13: Type introspection 6.5.18: Dynamic data access 6.5.21: All pub-sub operations using dynamically defined types © 2009 RTI - All rights Reserved 44
Dynamic Language Binding Classes DynamicTypeFactory: Creates new types (6.5.20) DynamicType: Introspect type definitions (6.5.13) Informed by CORBA TypeCode API DynamicData: Introspect objects (6.5.18) Informed by CORBA DynAny, JMS MapMessage,TIBCO Rendezvous self-describing messages DynamicTypeSupport: Registers types with DDS (6.5.20) DynamicDataWriter: Writes objects of any (single) type, each represented by a DynamicData object (6.5.21) DynamicDataReader: Reads objects of any (single) type, each represented by a DynamicData object (6.5.21) © 2009 RTI - All rights Reserved 45

Weitere Àhnliche Inhalte

Ähnlich wie Extensible and Dynamic Topic Types for DDS

Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSJaime Martin Losa
 
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
 
thrift-20070401
thrift-20070401thrift-20070401
thrift-20070401Hiroshi Ono
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdfAlexKarasulu1
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
Ravi kumar
Ravi kumarRavi kumar
Ravi kumarravi kumar
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo Corsaro
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Jaime Martin Losa
 
Security and Usability: Designing Security Tooling That Roboticists Can Use
Security and Usability: Designing Security Tooling That Roboticists Can UseSecurity and Usability: Designing Security Tooling That Roboticists Can Use
Security and Usability: Designing Security Tooling That Roboticists Can UseRuffin White
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingJaime Martin Losa
 
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)FIWARE
 
Lecture-2012-2-Application Layer-Introduction.ppt
Lecture-2012-2-Application Layer-Introduction.pptLecture-2012-2-Application Layer-Introduction.ppt
Lecture-2012-2-Application Layer-Introduction.pptRashmin Tanna
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1ADLINK Technology IoT
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo Corsaro
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPSeProsima
 
Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Videoguy
 

Ähnlich wie Extensible and Dynamic Topic Types for DDS (20)

Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPS
 
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
 
thrift-20070401
thrift-20070401thrift-20070401
thrift-20070401
 
Simrat Resume
Simrat ResumeSimrat Resume
Simrat Resume
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf2010.hari_kannan.phd_thesis.slides.pdf
2010.hari_kannan.phd_thesis.slides.pdf
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
Ravi kumar
Ravi kumarRavi kumar
Ravi kumar
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
 
Security and Usability: Designing Security Tooling That Roboticists Can Use
Security and Usability: Designing Security Tooling That Roboticists Can UseSecurity and Usability: Designing Security Tooling That Roboticists Can Use
Security and Usability: Designing Security Tooling That Roboticists Can Use
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
 
Lecture-2012-2-Application Layer-Introduction.ppt
Lecture-2012-2-Application Layer-Introduction.pptLecture-2012-2-Application Layer-Introduction.ppt
Lecture-2012-2-Application Layer-Introduction.ppt
 
RajeshK
RajeshKRajeshK
RajeshK
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
 
Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...Three Challenges in Reliable Data Transport over Heterogeneous ...
Three Challenges in Reliable Data Transport over Heterogeneous ...
 

Mehr von Rick Warren

Real-World Git
Real-World GitReal-World Git
Real-World GitRick 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
 
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
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelRick 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
 
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
 
Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Rick Warren
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRick Warren
 
From the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSFrom the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSRick Warren
 

Mehr von 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
 
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
 
Mapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric ModelMapping the RESTful Programming Model to the DDS Data-Centric Model
Mapping the RESTful Programming Model to the DDS Data-Centric Model
 
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
 
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
 
Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)Proposed Java 5 API for DDS (out of date)
Proposed Java 5 API for DDS (out of date)
 
Robotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) SpecificationRobotic Technology Component (RTC) Specification
Robotic Technology Component (RTC) Specification
 
From the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMSFrom the Tactical Edge to the Enterprise: Integrating DDS and JMS
From the Tactical Edge to the Enterprise: Integrating DDS and JMS
 

KĂŒrzlich hochgeladen

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

KĂŒrzlich hochgeladen (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Extensible and Dynamic Topic Types for DDS

  • 1.
  • 4.
  • 5. DDS Types: Assessment and Challenges Good Bad Unmatched type safety => fewer defects Unique type awareness => faster integration Unique type awareness => higher performance No standard API to define / access types at runtime Hard to change types without rebuilding, redeploying Hard to upgrade systems one subsystem at a time © 2009 RTI - All rights Reserved 2 Vendor-Specific Solutions OMG-Standard Solutions
  • 6. Where We Are RFP issued: Jun. 2008 Initial submission: Nov 2008 Revised submission extended: Feb. 2009 Revised submission extended: Aug. 2009 Revised submission deadline: Nov. 2009 © 2009 RTI - All rights Reserved 3
  • 7. Requirements: Type System Extensible, Compatible 6.5.1: (a) Type System as UML meta-model. (b) Type substitutability rules. 6.5.2: Type extensibility, mutability rules 6.5.3: Type compatibility in presence of change 6.5.17: Allow type to evolve without breaking interoperability 6.5.5: Support keys. How does extensibility apply? More Expressive 6.5.4: Map data type 6.5.6, 6.5.19: Sparse data: object contains only subset of fields defined by its type © 2009 RTI - All rights Reserved 4
  • 8. Requirements: Working with Types Static Definition 6.5.10: Built-in types: map, octet sequence, string sequence 6.5.11: Programming-language-independent type serialization format(s) 6.5.9: Represent types in IDL and XML Dynamic Definition 6.5.20: (a) Define types dynamically. (b) Create topics based on them. 6.5.12: Type discovery 6.5.13: Type introspection 6.5.21: All pub-sub operations using dynamically defined types © 2009 RTI - All rights Reserved 5
  • 9. Requirements: Working with Data Dynamic Access 6.5.18: Dynamic data access 6.6.1: Optional: Dynamic data access based on XML or JSON Network Encapsulation 6.5.14: Encapsulation specification, negotiation 6.5.15: Is encapsulation request-offer? 6.6.2: Optional: Custom encapsulation API © 2009 RTI - All rights Reserved 6
  • 10. Requirements: Compatibility Type Representation Level 6.5.7: Support subset of IDL used by DDS 1.2 Programming Level 6.5.8: APIs for C, C++, Java Network Level 6.5.16: (a) Support CDR. (b) Support parameterized CDR. (c) Interoperate with RTPS/DDSI 2. © 2009 RTI - All rights Reserved 7
  • 11. Design Principles Don’t break anybody. Many people depend on DDS Don’t modify existing APIs Don’t modify existing compliance points Many people depend on RTPS/DDSI 2 Don’t modify existing protocols or formats Don’t modify existing compliance points Keep it fast. New capabilities must permit efficient implementations. Don’t use them? Don’t pay for them. Keep it orthogonal. Type compatibility doesn’t depend on: Types’ definition language(s) Data encapsulation(s) Programming language(s) QoS configuration © 2009 RTI - All rights Reserved 8
  • 12. Overview © 2009 RTI - All rights Reserved 9 Type System Type Representation Language Binding Data Representation
  • 13.
  • 15.
  • 17. TypeCodeData Representations: languages for describing data CDR XML © 2009 RTI - All rights Reserved 10
  • 18. Overview Language Binding: programming APIs “Plain Language”: extension of existing IDL-to-language bindings Dynamic: reflective API for types and objects, defined in UML (conceptual model) and IDL (API) Use by DDS: application of type/data representations to middleware Data encapsulation, QoS compatibility Type compatibility as applied to endpoint matching Built-in types © 2009 RTI - All rights Reserved 11
  • 19. Overview © 2009 RTI - All rights Reserved 12 Type System Type Representation Language Binding Data Representation Type System: DDS data objects have a type Language Binding: Objects are manipulated using a Language Binding to some programming language Data Representation: Objects can be serialized for file storage and network transmission Language Binding: Types are manipulated using a Language Binding to some programming language Type Representation: Types can be serialized for file storage and network transmission
  • 20. Overview: Example © 2009 RTI - All rights Reserved 13 Type Representation IDL: Foo.idl struct Foo { string name; long ssn; }; Language Binding IDL to Language Mapping: Foo.h Foo.c FooTypeSupport.c struct Foo { char *name; int ssn; }; Foo f = {"hello", 2}; Data Representation IDL to CDR: 00000006 68656C6C 6F000000 00000002
  • 21. Type System Extensible, Compatible 6.5.1: (a) Type System as UML meta-model. (b) Type substitutability rules. 6.5.2: Type extensibility, mutability rules 6.5.3: Type compatibility in presence of change 6.5.17: Allow type to evolve without breaking interoperability 6.5.5: Support keys. How does extensibility apply? More Expressive 6.5.4: Map data type 6.5.6, 6.5.19: Sparse data: object contains only subset of fields defined by its type © 2009 RTI - All rights Reserved 14
  • 22. The Example Radar system uses “Original Land Data” (OLD): structOriginalLandData { long x; long y; }; © 2009 RTI - All rights Reserved 15
  • 23. Type System Overview © 2009 RTI - All rights Reserved 16
  • 24. Type System Overview * Type System in not defined in terms of IDL.I’m explaining in terms of IDL for clarity. Entirely familiar from IDL: Primitives Strings, narrow and wide Arrays and sequences Aliases (typedefs) Unions Modules As in IDL, but extended: Structures—including single inheritance(for substitutability: 6.5.1) Enumerations—specify bit width and constant values New relative to IDL: Maps—like std::mapor java.util.Map;required by RFP (6.5.4), fundamental OO collection Annotations—for extensibility (6.5.2, 6.5.3) © 2009 RTI - All rights Reserved 17 structOriginalLandData { long x; long y; };
  • 25. Type System Extensibility: Structures © 2009 RTI - All rights Reserved 18
  • 26. Type System Extensibility: Structures Collection of members, of same or different types.Each member has: Aname, unique w/in type AID, unique w/in type Allows compact, extensiblerepresentation Brings RTPS discovery types intotype system mainstream Improves introspection performance Consistent with other technologies,like SNMP, FIX, TIBCO Rendezvous © 2009 RTI - All rights Reserved 19 structOriginalLandData { long x; // ID=0 long y; // ID=1 };
  • 27. Type System Extensibility: Structures Collection of members, of same or different types.Each member has: A unique name (string) A unique ID (unsigned integer) Additional metadata: Key? Optional vs. required—Does value always exist? (6.5.6, 6.5.19) Important semantics: Think null vs. non-null value Universal concept: C, C++, Java, .Net, SQL, XSD, 
 Important for interop: If I have a field in my type that you don’t, what do I do with data from you? Important for representational efficiency: Skip a field with well-defined semantics Note: Keys always required; otherwise, identity breaks down © 2009 RTI - All rights Reserved 20
  • 28. Q: Do Member ID’s Make Integration Harder? No: Same scope as member names (per type) No: Huge range (100s millions): easy to partition No: Proven approach in large systems e.g. SNMP e.g. FIX e.g. Google Protocol Buffers e.g.Tibco Rendezvous © 2009 RTI - All rights Reserved 21
  • 29. Type System Extensibility: Structures Single inheritance Most common use case for type substitution (6.5.1) Additional metadata Extensible? Type may change in the future; be ready (6.5.2, 6.5.3, 6.5.17) © 2009 RTI - All rights Reserved 22
  • 30. Type Compatibility (6.5.3, 6.5.17) Directed relationship: is-assignable-from Type1 is-assignable-from Type2 meansif I need a Type1, I can use a Type2 in its place Intuition: If Bar is a subclass of Foo, I can use Bar wherever I need Foo Performance constraint: Don’t require reader to interpret data in writer-specific way Implication: is-assignable-from must be very strict: Serialized object of Type2 must be interpretable with access only to Type1 Keys must agree too True: sequence<long,10>is-assignable-from sequence<long,5> False: long[10]is-assignable-from long[5] © 2009 RTI - All rights Reserved 23
  • 31. Type Compatibility: Example // NEW1 struct NextEnhancedWorldview1 { long x; long y; TrackKindEnum kind; }; // NEW2 struct NextEnhancedWorldview2 { long y; // out of order! long x; // out of order! }; // OLD structOriginalLandData { long x; long y; }; © 2009 RTI - All rights Reserved 24 is-assignable-from ! is-assignable-from To Be Continued

  • 32. Type System Extensibility: Metadata Question: How can vendors attach additional metadata to type system elements? Question: How can users do the same? Answer: Annotations © 2009 RTI - All rights Reserved 25 DB Table “Track” Project “Radar” structOriginalLandData { long x; long y; }; DB Column “horz” Version 1.2 DB Column “vert”
  • 33. Type System Extensibility: Metadata Annotation = structured metadataattached to type or type member Annotation type defines annotation members, their names, and their types Annotation usage provides values for annotation type’s members Established programming practice In Java: @MyAnnotationintx; In C#: [MyAnnotation] intx; © 2009 RTI - All rights Reserved 26 DB Tablename: string DB Tablename = “Track”
  • 34.
  • 36.
  • 37. 6.5.9: Represent types in IDL and XML
  • 38.
  • 39. Use structures.Use value types if inheritance desired.
  • 40.
  • 41. We’ll get to these © 2009 RTI - All rights Reserved 28
  • 42. Metadata in IDL: Non-Standard Metadata Java-like annotation syntax: already familiar Annotation type: @Annotation local interface MyAnnotation { long value1(); double value2(); }; Annotation usage: structMyStruct { @MyAnnotation(value1 = 42, value2 = 42.0) long my_field; }; © 2009 RTI - All rights Reserved 29
  • 43. Metadata in IDL: Standard Metadata Historical approach: add keywords(abstract, truncatable, public, 
) Clutters up language Compatibility nightmare Not scalable: each new revision needs to add more Alternative: re-use annotation syntax All metadata looks the same:standard, vendor-specific, user-defined Update compilers just once*; don’t break syntaxwith every new spec (*
or not at all: see next slide) Built-in annotations: Declare annotation type: @Annotation Modify members: @Key, @ID Modify types: @Extensible © 2009 RTI - All rights Reserved 30
  • 44. Metadata in IDL: Compatible Syntax Scenario: Using same IDL file with two IDL compilers; only one supports this spec Solution: Comment-like syntax Primary syntax: @ID(1) long x; BW-compatible syntax: long x; //@ID(2) Advantage: annotation syntactically connected to annotated element Looks like comment: ignored by non-conformant compilers As compact as primary syntax Allows meaning of declaration to be understood at once Simplifies config. mgmt.: metadata can’t get out of sync © 2009 RTI - All rights Reserved 31
  • 45. Type Compatibility: Example (Revisited) // NEW1 @Extensible struct NextEnhancedWorldview1 { long x; long y; TrackKindEnum kind; }; // NEW2 @Extensible struct NextEnhancedWorldview2 { @ID(1) long y; @ID(2) long z; @ID(0) long x; }; // OLD @Extensible structOriginalLandData { long x; long y; }; © 2009 RTI - All rights Reserved 32 is-assignable-from is-assignable-from
  • 46. Q: Why Aren’t All Structures “Extensible”? They are, but only in certain ways. Always legal to add fields to the end “Extensible” types are more extensible There’s a price: space, processing Can the data present vary from sample to sample?Need sufficient metadata to detect what’s (not) there. Technical case for not paying:Not all types, systems will change in deployment Business case for not paying: CDR doesn’t support extensibility by itself No way to detect member addition, omission, reordering Can’t abandon or break entire installed base Can “extensible” be the default? No: IDL  CDR is well defined; would break everyone Vendors could provide IDL compiler configuration option © 2009 RTI - All rights Reserved 33
  • 47. XML Type Representations #1: XSD #2: XML Based on existing IDL-to-WSDL mapping Validates XML Data Representation Allows type sharing between DDS and web services But
 Very verbose Hard to read, hard to write, hard to parse Straightforward mapping of Type System into XML Easy to read, easy to write, easy to parse Suitable for embedding into other XML documents (e.g. QoS profile files) © 2009 RTI - All rights Reserved 34
  • 48. XML Type Representations #1: XSD #2: XML <xsd:complexType name="OLD"> <xsd:sequence> <xsd:element name="x"minOccurs="1" maxOccurs="1" type="xsd:int"/> <xsd:element name="y"minOccurs="1" maxOccurs="1" type="xsd:int"/> </xsd:sequence> </xsd:complexType> <struct name="OLD"> <member name="x" type="int32"/> <member name="y" type="int32"/> </struct> © 2009 RTI - All rights Reserved 35
  • 49. TypeCode Type Representation Requirement (6.5.12): Propagate types during discovery to enable dynamic behavior Question: Which Type Representation is appropriate? Should be compact, binary, 
 Answer: TypeCode Type Representation We know how to represent data efficiently for DDS: describe it as a data type Name “TypeCode” has heritage in CORBA, .Net © 2009 RTI - All rights Reserved 36
  • 50.
  • 51. XML© 2009 RTI - All rights Reserved 37
  • 52. CDR Data Representation Requirements: Continue supporting existing (compact) CDR used by user-defined types (6.5.16) Continue supporting existing (extensible, parameterized) CDR used by discovery types (6.5.16) Provide extensibility to user-defined types (6.5.2, 6.5.3, 6.5.17)—all Data Representations should have equivalent expressiveness Solution: Existing extensible, parameterized CDR available to all Same rules for every type, built-in or user-defined 100% compatible with existing types and serialization Parameterized CDR: structs & unions marked “extensible” Each member == parameter Member ID == parameter ID Compact CDR: everything else © 2009 RTI - All rights Reserved 38
  • 53. CDR: Costs & Benefits Cost: 4 bytes per member Benefits: Proven: Tag-Length-Value (TLV) in DHCP, ASN.1, 
 Consistent: Brings discovery types into mainstream Type evolution: Determine which fields are (not) present; Skip fields you don’t understand Time savings: Encode/decode fast; Send fields in any order Space savings: Cost of omitted optional field = 0 bytes; Cost of default required field = 0 bytes © 2009 RTI - All rights Reserved 39
  • 54. Q: Could a Different Representation Save Space? Short Answer: Yes Long Answer: CDR optimizes for speed. Wire representation matches machine representation: Endianness Alignment Another representation could optimize for size. Could use variable-length encoding Example: Google Protocol Buffers Example: Apache Thrift (incubator; originally FaceBook) Unaligned access, bitwise operations will make it slow Could use compression—e.g. zip the whole UDP payload Active area of research Summary: Once fully understood, a space-optimized representation could be added to this proposed spec Could not replace CDR for speed, compatibility reasons © 2009 RTI - All rights Reserved 40
  • 55. XML Data Representation Optional Requirement (6.6.1):Dynamic data access based on XML or JSON Given: XSD Type Representation Data object == XML document Validated by XSD Representation of its type SAX, DOM-based access follow naturally New RTPS encapsulation ID lets you use XML on the network © 2009 RTI - All rights Reserved 41 structOriginalLandData { long x; long y; }; <OriginalLandData> <x>5</x> <y>42</y>; </OriginalLandData>
  • 56.
  • 57. Dynamic Language Binding© 2009 RTI - All rights Reserved 42
  • 58. Plain Language Binding Defined by existing IDL-to-language mappings: Start with IDL Representation of a type Apply mapping to desired programming language Mappings expanded to cover new concepts e.g. maps, annotations, optional members For C, C++, Java as required by RFP (6.5.8) © 2009 RTI - All rights Reserved 43 // IDL structOrigLandData { long x; long y; }; // Java public class OrigLandData { public intx; public inty; }
  • 59. Dynamic Language Binding Requirements: 6.5.20: (a) Define types dynamically. (b) Create topics based on them. 6.5.13: Type introspection 6.5.18: Dynamic data access 6.5.21: All pub-sub operations using dynamically defined types © 2009 RTI - All rights Reserved 44
  • 60. Dynamic Language Binding Classes DynamicTypeFactory: Creates new types (6.5.20) DynamicType: Introspect type definitions (6.5.13) Informed by CORBA TypeCode API DynamicData: Introspect objects (6.5.18) Informed by CORBA DynAny, JMS MapMessage,TIBCO Rendezvous self-describing messages DynamicTypeSupport: Registers types with DDS (6.5.20) DynamicDataWriter: Writes objects of any (single) type, each represented by a DynamicData object (6.5.21) DynamicDataReader: Reads objects of any (single) type, each represented by a DynamicData object (6.5.21) © 2009 RTI - All rights Reserved 45
  • 61. Dynamic Language Binding Works with, like the DDS you know Modeled in UML API in IDL Interoperable with statically defined types © 2009 RTI - All rights Reserved 46
  • 62.
  • 64. Built-in Types© 2009 RTI - All rights Reserved 47
  • 65. QoS Compatibility Reader and writer must agree on which Data Representation to use 6.5.14: Encapsulation specification, negotiation 6.5.15: Is encapsulation request-offer? 6.6.2: Optional: Custom encapsulation API Solution: DataEncapsulationQosPolicy List of encapsulation IDs Applies to both readers and writers Included in corresponding built-in topic data types Request-Offer semantics Writer offers single encapsulation it will use Reader requests a list of encapsulations Compatible iff writer’s encapsulation is in reader’s list Can describe proposed encapsulations, future additions, and vendor extensions © 2009 RTI - All rights Reserved 48
  • 66. Type Compatibility New capability: readers and writers can usedifferent types Because of type evolution;e.g. one side has been upgraded, other hasn’t Because of decoupled design;e.g. pub subclass, sub superclass Two aspects of compatibility: Physical: Can type be interpreted as another w/o misunderstanding? —covered this already Intentional: Do I want to interpret that way? Don’t just hard-code inheritance-based rules Old saw: For Shapes and Gunslingers, “draw” is different. Both require type to be included in endpoint discovery Propagated using TypeCode Representation API is DynamicType © 2009 RTI - All rights Reserved 49
  • 67. Intentional Type Compatibility Expressed at type registration with type signature Extension of type name syntax of today MyTypeSupport::register_type( my_participant, "Foo");Type Signature Example: “T” My type is “T” When writing a topic of “T,” readers’ topics must also use “T” When reading a topic of “T,” writers’ topics must also use “T” Example: “T1, T2, T3 : Base1, Base2” My type is “T1” When writing a topic of “T1,”readers’ topics must use “T1,” “T2,” “T3,” “Base1,” or “Base2” When reading a topic of “T1,”writers’ topics must use “T1,” “T2,” or “T3” © 2009 RTI - All rights Reserved 50
  • 68. Intentional Type Compatibility Intuition: T1, T2, and T3 are like “subclasses” of Base1 and Base2 Formally: “T1, T2, T3 : Base1, Base2” means: T1 is-assignable-from T2, T3 T2 is-assignable-from T1, T3 T3 is-assignable-from T1, T2 Base1 is-assignable-from T1, T2, T3 Base2 is-assignable-from T1, T2, T3 Mismatch on_inconsistent_topic If names don’t match type signatures (as today) If physical compatibility doesn’t match declared intention (If type definitions unavailable—e.g. for backward compatibility—omit #2) © 2009 RTI - All rights Reserved 51
  • 69. Built-in Types Goal: Improve out-of-box experience for new users, those with simple needs Background: Usability gap vs. competition Other middlewares allow sending textual or binary data without explicit type definition, registration Response: Provide simple types built in Pre-defined, pre-registered © 2009 RTI - All rights Reserved 52
  • 70. Built-in Types RFP says: octet sequence, string sequence, map (6.5.10) Proposal diverges from RFP: Octet sequence: kept this one String sequence: value unclear; doesn’t match competing technologies Map: requirement unclear; what are the key and value types? Unkeyed Types String Payload is single unbounded string, not a sequence FooDataWriter, FooDataReader“templates” instantiated w/ basic string Bytes Payload is unbounded sequence of octets, as in RFP FooDataWriter, FooDataReader“templates” instantiated w/ sequence<octet> Keyed Variants KeyedString Payload, key each unbounded string KeyedBytes Payload is unbounded sequence of octets Key is unbounded string © 2009 RTI - All rights Reserved 53
  • 71. Summary © 2009 RTI - All rights Reserved 54
  • 72. Summary: Type System Requirements 55
  • 76. Summary The proposal: Satisfies all mandatory and optional requirements and Supports identified real-world use cases Without sacrificing backwards compatibility and Without sacrificing performance Is easily extensible w/ new type, data representations to handle additional use cases © 2009 RTI - All rights Reserved 59
  • 77. Q & A © 2009 RTI - All rights Reserved 60
  • 78.
  • 79.
  • 80. Java code:DynamicType type = myPubBuiltinTopicData.type; DynamicTypeSupport support = DynamicDataTypeFactory.get_instance(). create_type_support(type); support.register_type( myParticipant, myPubBuiltinTopicData.type_name); // 
 init QoS based on built-in topic data Topic topic = myParticipant.create_topic( myPubBuiltinTopicData.name, myPubBuiltinTopicData.type_name, myTopicQos, myTopicListener); 
 © 2009 RTI - All rights Reserved 62
  • 81. Type Versioning Problem: How can types change over time – and atdifferent times from subsystem to subsystem? Possible Solution: Give types version number, keep track of past versions and who is using which version. Too slow: must consult per-remote-writer definition to deserialize Requires tracking lots of state – including every version of every type that’s ever existed (e.g. for late joiners) Requires network propagation of all type information: increased bandwidth use, possible security objections Requires user policy: must manage versions, enforce compatibility Solution: Do nothing. Member IDs already provide compact per-member “version.” Adding / changing a member? Define a new ID.Old applications can ignore it. “Removing” a member? Just stop sending it.Doesn’t invalidate existing persisted data. Observation: Versions aren’t a distinct use case. “I have Foo 1.2; you have Foo 2.0” == “I have Foo; you have Bar” Users can always implement own versions as design pattern (e.g. “Foo_v1,” “Foo_v2”) or with annotation(s) © 2009 RTI - All rights Reserved 63

Hinweis der Redaktion

  1. Lots to go through, so questions like this: If you don’t understand what I’m talking about, ask your question right away. If your question/comment is really quick, go ahead and bring it up. If you have a point for discussion, please save it for the end.
  2. DDS is unique among pub-sub systems in providing interoperable static type safety.Applications that use data already expect certain contents; by making expectations explicit, enable: type-aware integration (e.g. relational mapping) compact network representation.
  3. Warning: I don’t have several 8 Âœ x 11 prose pages to describe requirements. They’re shortened and reordered for quick understanding on the slides.
  4. Many systems are already committed to, deployed on DDS 1.2, RTPS 2 (such as, most of the U.S. Navy). Breaking compatibility with those specs makes integration really hard, costs a lot of time and money for users an vendors alike. Don’t do it.People choose DDS for its performance. Don’t break that either.
  5. 5 parts to the spec
  6. Bottom boxes are orthogonal!
  7. Relationship isn’t just defined based on subclass relationships, but if you think of it that way, your intuition will serve you well.
  8. DDS is about data and metadata. Data has it, discovery data has it, types and type members have it.We’ve seen how type system data supports extensibility. Now let’s talk about the metadata side.
  9. “Non-standard” means vendor-defined + user-defined
  10. Two of them!XSD representation isn’t really something new.Instead, builds on existing OMG spec and “blesses” it as first-class DDS citizen.Goal w/ XML Rep is ease of use, DDS-centricity.It does exactly what this Type System needs, and if you know IDL, the learning curve is low.
  11. Remember why we decided to use parameterized encoding for discovery in the first place:We knew it would change in future versions.We knew vendors would add extensions.But we created a special enclave: built-in topic data types are extensible, but no one else.This spec generalizes the model that has proven itself over a decade.
  12. Nothing very new here: IDL  WSDL let you do this before. Now it’s official.
  13. C, C++, Java covers almost all DDS users.Ada is a tiny fraction.Scripting languages are covered by Web-Enabled.
  14. Types can be different for different reasons, but it’s really all the same use case: you and I want to talk, and our type definitions aren’t the same.This is something people have been asking for for a long time.
  15. 
but what’s the concrete type of the DataReader? That follows from the type of the data