Overview » History » Version 11

J. Wienke, 06/10/2011 05:46 PM

1 1 J. Wienke
h1. Overview
2 1 J. Wienke
3 8 J. Wienke
h2. Problem statement
4 8 J. Wienke
5 8 J. Wienke
* easier integration of complex (partially) distributed systems required
6 8 J. Wienke
** in-house (one middleware)
7 8 J. Wienke
** adaption (combination with other middlewares)
8 8 J. Wienke
* targeting at technical architecture (only supporting functional concepts)
9 8 J. Wienke
* performance requirements
10 8 J. Wienke
* platform requirements
11 9 J. Wienke
* programming language requirements
12 9 J. Wienke
* basis for describing and analyzing systems required
13 11 J. Wienke
* open architecture required
14 1 J. Wienke
** specifications for data format and transport protocols
15 11 J. Wienke
** use of existing (and open) naming services
16 8 J. Wienke
17 7 J. Wienke
h2. Sebastian's Aims
18 1 J. Wienke
19 10 J. Wienke
* XCF support ends
20 1 J. Wienke
** better solution required
21 11 J. Wienke
* limited client interface that converts to domain data as soon as possible to prevent dependency on middleware throughout the whole client code
22 1 J. Wienke
23 1 J. Wienke
h2. Lessons learned (also from other frameworks)
24 10 J. Wienke
25 10 J. Wienke
XCF:
26 10 J. Wienke
* identified problems:
27 10 J. Wienke
** Footprint too large for embedded systems
28 10 J. Wienke
** Architectural erosion
29 10 J. Wienke
** Unmaintainable code base
30 10 J. Wienke
* lessons learned:
31 10 J. Wienke
** layered architecture with improved functional decomposition in distinct libraries, layers:
32 10 J. Wienke
*** core (bus realization across different transports)
33 10 J. Wienke
*** tools
34 10 J. Wienke
*** xml compatibility layer
35 10 J. Wienke
*** XCF API adapters
36 10 J. Wienke
* clear dependency statements:
37 10 J. Wienke
** core must survive with the least amount of external libraries
38 7 J. Wienke
39 2 J. Wienke
h2. Functional properties:
40 2 J. Wienke
41 1 J. Wienke
* Event-driven middleware with broadcast semantics
42 2 J. Wienke
** Additional patterns implemented on top of this base functionality
43 1 J. Wienke
* logically unified bus across multiple transports
44 1 J. Wienke
** currently a spread-based and an in-process transport are available
45 4 J. Wienke
** extensible to other transports -> compatibility to existing frameworks
46 1 J. Wienke
* Bus is structured by hierarchical channels
47 1 J. Wienke
** / receives all messages of sub-scopes like /a/test
48 2 J. Wienke
49 2 J. Wienke
h2. Non-functional properties:
50 2 J. Wienke
51 2 J. Wienke
* lightweight:
52 2 J. Wienke
** small dependency footprint for the core layer
53 2 J. Wienke
** Targeting at embedded systems (e.g. Nao)
54 2 J. Wienke
* Languages: cpp, java, python, common lisp
55 2 J. Wienke
** real implementations, no bindings to provide natural interfaces in each language
56 2 J. Wienke
* No single wire type like XML:
57 2 J. Wienke
** instead arbitrary client data is serialized to different wire types using (user-installed) converters
58 6 J. Wienke
*** default set of converters exists (e.g. source:/trunk/cpp/core/src/rsb/converter/StringConverter.cpp)
59 3 J. Wienke
** provide flexible and fast serialization mechanisms
60 3 J. Wienke
** XML support layer as additional library
61 3 J. Wienke
62 3 J. Wienke
h2. Planned functionality:
63 3 J. Wienke
64 3 J. Wienke
* naming and discovery
65 3 J. Wienke
* introspection tools
66 3 J. Wienke
* model-based setup