URI Schema » History » Version 48

« Previous - Version 48/59 (diff) - Next » - Current version
J. Moringen, 05/26/2011 03:49 AM
minor improvement


URI Schema

Use Cases

URIs or URLs are used in the following situations
  • Specifying how to connect to the bus
  • 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)
  • PORT -> Transport-specific "port" option (e.g. port on which Spread daemon listens)
  • PATH -> A scope which designates a one of the following things
    • A channel
    • A participant
      • A service (which is-a participant)
  • QUERY -> "freestyle" transport options
  • FRAGMENT ->
    • 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.

Rationale

  • Transport-specific access is possible without naming service.
  • UUIDs should ideally not be required to keep URIs simple