URI Schema » History » Version 53
« Previous -
Version 53/59
(diff) -
Next » -
Current version
J. Moringen, 05/28/2011 02:35 AM
added more examples for transport-specific URLs
URI Schema¶
Use Cases¶
URIs or URLs are used in the following situations- Specifying how to connect to the bus (i.e. specifying a scope and transport configuration)
- Naming a thing on the bus
- A channel
- Multiple participants
- A single participant
- A service
Generic URIs¶
Syntax and Semantic¶
rsb:[PATH][#FRAGMENT]
Components of the URL are interpreted as follows:
SCHEME
-> has to be "rsb"PATH
-> A scope which designates a one of the following things- A channel
- A participant
- A service (which is-a participant)
FRAGMENT
->- Not allowed when designating a channel
- ID of a participant otherwise
This may resolve to:
- Service and/or Participant
- If there is only one of these entities this is enough for resolving it
- If multiple entities reside on this scope, a single instance can be selected using their UUID.
rsb:/hierarchical/service/definition/further/to/participant#UniqueIDOfParticipant [UUID]
- Nothing
These generic URIs require a global naming service.
Examples:
rsb: -> The channel designated by the scope "/" rsb:/ -> The channel designated by the scope "/" rsb:/foo/bar -> The channel designated by the scope "/foo/bar" rsb:/foo/bar#10838319-09A4-4D15-BD59-5E054CDB4403 -> The participant with UUID 10838319-09A4-4D15-BD59-5E054CDB4403
Rationale¶
Usually location transparency should be available.
Transport-specific URLs¶
Syntax and Semantic¶
[SCHEME:][//HOST][:PORT][PATH][?QUERY][#FRAGMENT] transport://<location.transport.specific[:PORT]>/hierarchical/service/definition/further/to/participant
Components of the URL are interpreted as follows:
SCHEME
-> transport name (e.g spread)HOST
-> Transport-specific "host" option (e.g. host that runs the daemon for spread transport)PORT
-> Transport-specific "port" option (e.g. port on which Spread daemon listens for spread transport)PATH
-> A scope which designates a one of the following things- A channel
- A participant
- A service (which is-a participant)
QUERY
-> "freestyle" transport-specific optionsFRAGMENT
->- Not allowed when designating a channel
- ID of a participant otherwise
What does this mean?
Location uniquely identifies a single participant or service, hence an ID part is not required any more.
Specific IDs can be resolved by the respective connectors and do not require a global naming.
Examples for specifying bus connections when creating participants:
-> participate in channel with scope "/" using the default transport configuration spread: -> participate in channel with scope "/" using the Spread transport with its default configuration inprocess: -> participate in channel with scope "/" using the in-process transport with its default configuration spread://localhost:5555 -> participate in channel with scope "/" via the Spread daemon running on localhost and listening on port 5555 inprocess:someotherhost -> syntactically correct, but does not make sense spread:/foo/bar -> participate in channel with scope "/foo/bar" using the default transport configuration 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
Rationale¶
- Transport-specific access is possible without naming service.
- UUIDs should ideally not be required to keep URIs simple