URI Schema » History » Version 53

J. Moringen, 05/28/2011 02:35 AM
added more examples for transport-specific URLs

1 1 J. Wienke
h1. URI Schema
2 1 J. Wienke
3 45 J. Moringen
h2. Use Cases
4 1 J. Wienke
5 45 J. Moringen
URIs or URLs are used in the following situations
6 51 J. Moringen
* Specifying how to connect to the bus (i.e. specifying a scope and transport configuration)
7 45 J. Moringen
* Naming a thing on the bus
8 45 J. Moringen
** A channel
9 48 J. Moringen
** Multiple participants
10 48 J. Moringen
** A single participant
11 45 J. Moringen
*** A service
12 1 J. Wienke
13 46 J. Moringen
h2. Generic URIs
14 45 J. Moringen
15 45 J. Moringen
h3. Syntax and Semantic
16 45 J. Moringen
17 1 J. Wienke
<pre>
18 51 J. Moringen
rsb:[PATH][#FRAGMENT]
19 1 J. Wienke
</pre>
20 45 J. Moringen
21 45 J. Moringen
Components of the URL are interpreted as follows:
22 45 J. Moringen
23 45 J. Moringen
* @SCHEME@   -> has to be "rsb"
24 45 J. Moringen
* @PATH@     -> A [[Glossary|scope]] which designates a one of the following things
25 45 J. Moringen
** A channel
26 45 J. Moringen
** A participant
27 45 J. Moringen
*** A service (which is-a participant)
28 45 J. Moringen
* @FRAGMENT@ -> 
29 45 J. Moringen
** Not allowed when designating a channel
30 45 J. Moringen
** ID of a participant otherwise
31 45 J. Moringen
32 1 J. Wienke
This may resolve to:
33 44 J. Wienke
34 1 J. Wienke
* Service and/or Participant
35 1 J. Wienke
** If there is only one of these entities this is enough for resolving it
36 1 J. Wienke
** If multiple entities reside on this scope, a single instance can be selected using their UUID.
37 50 J. Moringen
   @rsb:/hierarchical/service/definition/further/to/participant#UniqueIDOfParticipant [UUID]@
38 1 J. Wienke
* Nothing
39 43 J. Wienke
40 1 J. Wienke
These generic URIs require a global naming service.
41 1 J. Wienke
42 47 J. Moringen
Examples:
43 47 J. Moringen
<pre>
44 50 J. Moringen
rsb:                                              -> The channel designated by the scope "/"
45 50 J. Moringen
rsb:/                                             -> The channel designated by the scope "/"
46 50 J. Moringen
rsb:/foo/bar                                      -> The channel designated by the scope "/foo/bar"
47 50 J. Moringen
rsb:/foo/bar#10838319-09A4-4D15-BD59-5E054CDB4403 -> The participant with UUID 10838319-09A4-4D15-BD59-5E054CDB4403
48 47 J. Moringen
</pre>
49 47 J. Moringen
50 45 J. Moringen
h3. Rationale
51 1 J. Wienke
52 45 J. Moringen
Usually location transparency should be available.
53 45 J. Moringen
54 46 J. Moringen
h2. Transport-specific URLs
55 45 J. Moringen
56 45 J. Moringen
h3. Syntax and Semantic
57 45 J. Moringen
58 30 S. Wrede
<pre>
59 51 J. Moringen
[SCHEME:][//HOST][:PORT][PATH][?QUERY][#FRAGMENT]
60 1 J. Wienke
transport://<location.transport.specific[:PORT]>/hierarchical/service/definition/further/to/participant
61 1 J. Wienke
</pre>
62 45 J. Moringen
Components of the URL are interpreted as follows:
63 1 J. Wienke
64 45 J. Moringen
* @SCHEME@   -> transport name (e.g spread)
65 49 J. Moringen
* @HOST@     -> Transport-specific "host" option (e.g. host that runs the daemon for spread transport)
66 49 J. Moringen
* @PORT@     -> Transport-specific "port" option (e.g. port on which Spread daemon listens for spread transport)
67 45 J. Moringen
* @PATH@     -> A [[Glossary|scope]] which designates a one of the following things
68 1 J. Wienke
** A channel
69 45 J. Moringen
** A participant
70 45 J. Moringen
*** A service (which is-a participant)
71 49 J. Moringen
* @QUERY@    -> "freestyle" transport-specific options
72 45 J. Moringen
* @FRAGMENT@ -> 
73 45 J. Moringen
** Not allowed when designating a channel
74 45 J. Moringen
** ID of a participant otherwise
75 45 J. Moringen
76 45 J. Moringen
What does this mean?
77 45 J. Moringen
78 45 J. Moringen
 Location uniquely identifies a single participant or service, hence an ID part is not required any more.
79 42 J. Wienke
Specific IDs can be resolved by the respective connectors and do not require a global naming.
80 14 S. Wrede
81 52 J. Moringen
Examples for specifying bus connections when creating participants:
82 52 J. Moringen
<pre>
83 52 J. Moringen
                              -> participate in channel with scope "/" using the default transport configuration
84 52 J. Moringen
spread:                       -> participate in channel with scope "/" using the Spread transport with its default configuration
85 53 J. Moringen
inprocess:                    -> participate in channel with scope "/" using the in-process transport with its default configuration
86 52 J. Moringen
spread://localhost:5555       -> participate in channel with scope "/" via the Spread daemon running on localhost and listening on port 5555
87 53 J. Moringen
inprocess:someotherhost       -> syntactically correct, but does not make sense
88 52 J. Moringen
spread:/foo/bar               -> participate in channel with scope "/foo/bar" using the default transport configuration
89 52 J. Moringen
spread:?maxfragmentsize=10000 -> participate in channel with scope "/" using the Spread transport with default host and port and a maximum event fragment size of 10000 bytes
90 52 J. Moringen
</pre>
91 52 J. Moringen
92 45 J. Moringen
h3. Rationale
93 42 J. Wienke
94 45 J. Moringen
* Transport-specific access is possible without naming service.
95 1 J. Wienke
* UUIDs should ideally not be required to keep URIs simple