Framework Comparison » History » Version 23

J. Wienke, 06/13/2011 02:16 PM

1 20 J. Moringen
h1. Framework Comparison
2 1 S. Wrede
3 16 J. Moringen
h2. Scope
4 1 S. Wrede
5 16 J. Moringen
Please note: We are comparing RSB against roscore (or even ros_comm?) not against ROS!
6 16 J. Moringen
and YARP_OS?
7 16 J. Moringen
8 1 S. Wrede
h2. Functional Differences
9 1 S. Wrede
10 20 J. Moringen
| *Aspect*           | *ROS*                      | *YARP*                                   | *XCF*                  | *RSB*                  |
11 23 J. Wienke
| Pub/sub Topology   | 1:1                        | m:n                                      | 1:n, m:n over AM       | m:n                    |
12 23 J. Wienke
| Abstraction        | single level               | single level                             | single level           | hierarchies            |
13 23 J. Wienke
| Channel Identifier | Topic                      | none?                                    | name or URI(?)         | Scope                  |
14 23 J. Wienke
| Channel Scope      | Flat                       | Flat                                     | Flat                   | Hierarchical           |
15 23 J. Wienke
| Origin Filtering   | ?                          | no?                                      | not required for 1:n   | planned                |
16 20 J. Moringen
| Typing             | static,strong              | dynamic                                  | none                   | strong-ish             |
17 20 J. Moringen
| IDL                | yes, proprietary           | no                                       | no                     | optional, standardized |
18 20 J. Moringen
| QoS                | implicit                   | limited support, mixed with flow-control | limited, local queuing | explicit               |
19 20 J. Moringen
| Introspection      | strong                     | nameserver, port admin protocol          | limited                | implicit by multicast  |
20 20 J. Moringen
| Centralized        | yes (master, param server) | yes (nameserver), direct connect. poss.  | yes, dispatcher        | no                     |
21 20 J. Moringen
| Event meta-data    | client level               | ?                                        | yes                    | yes                    |
22 19 J. Moringen
23 19 J. Moringen
h3. Communication Patterns
24 1 S. Wrede
25 23 J. Wienke
| *Aspect*         | *ROS* | *YARP* | *XCF*        | *RSB* | 
26 23 J. Wienke
| Pub-Sub          | yes   | yes    | yes          | yes   |
27 23 J. Wienke
| .. Push-receiver | yes   | ?      | only java(?) | yes   |
28 23 J. Wienke
| .. Pull-receiver | ?     | ?      | yes          | yes   |
29 23 J. Wienke
| Client-Server    | yes   | yes    | yes          | yes   |
30 1 S. Wrede
31 20 J. Moringen
32 17 J. Moringen
h3. RPC Features
33 17 J. Moringen
34 20 J. Moringen
| *Aspect*            | *ROS*                      | *YARP* | *XCF* | *RSB*                          | 
35 20 J. Moringen
| Asynchronous RPC    | ?                          | ?      | ?     | yes                            | 
36 20 J. Moringen
| Parallel Pipelining | ?                          | ?      | ?     | yes                            | 
37 20 J. Moringen
| Dynamic Typing      | kind-of (schema in header) | yes    | yes   | no (for Protocol Buffers)      | 
38 20 J. Moringen
| Connection pooling  | manually configurable      | ?      | ?     | no pooling, but reuse          | 
39 20 J. Moringen
| Delayed return      | ?                          | ?      | ?     | no                             | 
40 20 J. Moringen
| Event-driven I/O    | ?                          | ?      | ?     | no (one thread per connection) |
41 16 J. Moringen
42 21 J. Moringen
_Criteria are based on http://msgpack.org/, explanations "here":http://wiki.msgpack.org/display/MSGPACK/Design+of+RPC#DesignofRPC-MessagePackRPCFeatureList ._
43 18 J. Moringen
44 18 J. Moringen
h2. Non-functional Properties
45 18 J. Moringen
46 18 J. Moringen
* Architecture
47 20 J. Moringen
* Dependencies
48 18 J. Moringen
49 18 J. Moringen
h3. Openness
50 18 J. Moringen
51 23 J. Wienke
| *Aspect*                                | *ROS*           | *YARP*          | *XCF*      | *RSB*         | 
52 23 J. Wienke
| Lock-in                                 | strong          | ?               | ?          | ?             |
53 23 J. Wienke
| Use of standards/terminology            | partial         | almost none     | XML, XPath | partial       |
54 23 J. Wienke
| Protocol Specification                  | yes, inaccurate | yes, inaccurate | no(?)      | yes, uses IDL |
55 23 J. Wienke
| Source Code Documentation               | ?               | ?               | ?          | ?             |
56 23 J. Wienke
| Project Layout/Source code organization | monolithic      | confusing       | ?          | ?             |
57 18 J. Moringen
58 18 J. Moringen
h3. Programming Language Support
59 18 J. Moringen
60 20 J. Moringen
| *Language*  | *ROS* | *YARP*   | *XCF*   | *RSB* | 
61 20 J. Moringen
| C           | ?     | partial? | no      | no    |
62 20 J. Moringen
| C++         | impl  | impl     | impl    | impl  |
63 22 J. Moringen
| Java        | impl? | ?        | impl    | impl  |
64 20 J. Moringen
| Python      | impl  | ?        | binding | impl  |
65 20 J. Moringen
| Common Lisp | impl  | ?        | binding | impl  |
66 20 J. Moringen
| Ruby        | ?     | ?        | no      | no    |
67 14 J. Wienke
68 15 J. Wienke
h2. Wishes
69 1 S. Wrede
70 1 S. Wrede
* We believe in the power of reflection and self-description, such that
71 1 S. Wrede
** a generic content-based subscription model, e.g., with path-based access such as XPath becomes feasible
72 1 S. Wrede
** messages can be generally understood by everyone even if parts are not accessible
73 1 S. Wrede
* RSB shall provide better introspection features, both for programmatic access (e.g., for anomaly detection) but also for developers
74 1 S. Wrede
* Reduced framework lock-in