Overview » History » Version 13

J. Wienke, 06/10/2011 05:50 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 12 J. Wienke
** desired set of languages
13 12 J. Wienke
** natural feeling in each language by using native mechanisms
14 9 J. Wienke
* basis for describing and analyzing systems required
15 11 J. Wienke
* open architecture required
16 1 J. Wienke
** specifications for data format and transport protocols
17 11 J. Wienke
** use of existing (and open) naming services
18 8 J. Wienke
19 7 J. Wienke
h2. Sebastian's Aims
20 1 J. Wienke
21 10 J. Wienke
* XCF support ends
22 1 J. Wienke
** better solution required
23 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
24 12 J. Wienke
* variable dispatching mechanisms not forced by the framework
25 1 J. Wienke
26 1 J. Wienke
h2. Lessons learned (also from other frameworks)
27 10 J. Wienke
28 10 J. Wienke
XCF:
29 10 J. Wienke
* identified problems:
30 10 J. Wienke
** Footprint too large for embedded systems
31 10 J. Wienke
** Architectural erosion
32 10 J. Wienke
** Unmaintainable code base
33 10 J. Wienke
* lessons learned:
34 10 J. Wienke
** layered architecture with improved functional decomposition in distinct libraries, layers:
35 10 J. Wienke
*** core (bus realization across different transports)
36 10 J. Wienke
*** tools
37 10 J. Wienke
*** xml compatibility layer
38 10 J. Wienke
*** XCF API adapters
39 10 J. Wienke
* clear dependency statements:
40 10 J. Wienke
** core must survive with the least amount of external libraries
41 13 J. Wienke
** different language implementation should not depend on a single base implementation (reduce development and deployment complexity, increase usability of the framework)
42 7 J. Wienke
43 2 J. Wienke
h2. Functional properties:
44 2 J. Wienke
45 1 J. Wienke
* Event-driven middleware with broadcast semantics
46 2 J. Wienke
** Additional patterns implemented on top of this base functionality
47 1 J. Wienke
* logically unified bus across multiple transports
48 1 J. Wienke
** currently a spread-based and an in-process transport are available
49 4 J. Wienke
** extensible to other transports -> compatibility to existing frameworks
50 1 J. Wienke
* Bus is structured by hierarchical channels
51 1 J. Wienke
** / receives all messages of sub-scopes like /a/test
52 2 J. Wienke
53 2 J. Wienke
h2. Non-functional properties:
54 2 J. Wienke
55 2 J. Wienke
* lightweight:
56 2 J. Wienke
** small dependency footprint for the core layer
57 2 J. Wienke
** Targeting at embedded systems (e.g. Nao)
58 2 J. Wienke
* Languages: cpp, java, python, common lisp
59 2 J. Wienke
** real implementations, no bindings to provide natural interfaces in each language
60 2 J. Wienke
* No single wire type like XML:
61 2 J. Wienke
** instead arbitrary client data is serialized to different wire types using (user-installed) converters
62 6 J. Wienke
*** default set of converters exists (e.g. source:/trunk/cpp/core/src/rsb/converter/StringConverter.cpp)
63 3 J. Wienke
** provide flexible and fast serialization mechanisms
64 3 J. Wienke
** XML support layer as additional library
65 3 J. Wienke
66 3 J. Wienke
h2. Planned functionality:
67 3 J. Wienke
68 3 J. Wienke
* naming and discovery
69 3 J. Wienke
* introspection tools
70 3 J. Wienke
* model-based setup