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