URI Schema » History » Version 41
J. Wienke, 04/13/2011 11:35 AM
1 | 1 | J. Wienke | h1. URI Schema |
---|---|---|---|
2 | 1 | J. Wienke | |
3 | 36 | J. Wienke | Final: |
4 | 37 | J. Wienke | <pre> |
5 | 36 | J. Wienke | Generisch: |
6 | 36 | J. Wienke | rsb:///hierarchical/service/definition/further/to/participant |
7 | 37 | J. Wienke | </pre> |
8 | 36 | J. Wienke | Könnte ergeben: |
9 | 36 | J. Wienke | * Service |
10 | 1 | J. Wienke | * Participant |
11 | 37 | J. Wienke | ** Einduetig einer [ok] |
12 | 36 | J. Wienke | ** Mehrere auf dem gleichen Scope |
13 | 38 | J. Wienke | @rsb:///hierarchical/service/definition/further/to/participant#UniqueIDOfParticipant [UUID]@ |
14 | 36 | J. Wienke | * Nichts |
15 | 36 | J. Wienke | |
16 | 39 | J. Wienke | <pre> |
17 | 39 | J. Wienke | Spezifisch: |
18 | 41 | J. Wienke | transport://<location.transport.specific[:PORT]>/hierarchical/service/definition/further/to/participant |
19 | 1 | J. Wienke | </pre> |
20 | 41 | J. Wienke | Location muss eindeutig auf einen einzigen Participant zeigen (keine Fragment-ID mehr) |
21 | 39 | J. Wienke | |
22 | 31 | S. Wrede | h2. Storming, Norming, Forming. Let's continue... |
23 | 31 | S. Wrede | |
24 | 31 | S. Wrede | Next proposal: |
25 | 31 | S. Wrede | |
26 | 31 | S. Wrede | <pre> |
27 | 31 | S. Wrede | Code-Level |
28 | 31 | S. Wrede | ServiceComponent --> ServiceProvider | ServiceConsumer --> Bindings --> Port |
29 | 31 | S. Wrede | |
30 | 35 | S. Wrede | Participant -?-> ServiceComponent (Wichtig: Differenz zu Domain-Modell: ServiceComponent ist Container für mehrere Informer / Listener und damit unabhängige Instanz und nicht nur Oberklasse) |
31 | 33 | S. Wrede | Informer --> ServiceProvider |
32 | 33 | S. Wrede | Listener --> ServiceConsumer |
33 | 33 | S. Wrede | |
34 | 31 | S. Wrede | Modell-Level |
35 | 31 | S. Wrede | Service (1:n ServiceComponents) --> Interface (1:n ServiceProvider | ServiceConsumer) : Port (1:n Ports) |
36 | 31 | S. Wrede | |
37 | 34 | S. Wrede | Alternative Sichtweise: |
38 | 34 | S. Wrede | Service (1:n Participants) --> Interface (1:n Informer | Listener) : Port (1:n Ports) |
39 | 34 | S. Wrede | |
40 | 31 | S. Wrede | URL-Level |
41 | 31 | S. Wrede | generisch: |
42 | 31 | S. Wrede | rsb://dns/service-path/element-path/ (plus User-definable actions) |
43 | 31 | S. Wrede | spezifisch: |
44 | 31 | S. Wrede | spread://dns/service-path/element-path/ (plus User-definable actions) |
45 | 31 | S. Wrede | |
46 | 31 | S. Wrede | cf. |
47 | 31 | S. Wrede | http://download.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html |
48 | 31 | S. Wrede | |
49 | 31 | S. Wrede | Client: |
50 | 31 | S. Wrede | ServiceComponent (ImageImport, Base-URL: facedetection) |
51 | 31 | S. Wrede | ServiceConsumer (SUB-ActionBinding, Context-URL: /images) |
52 | 31 | S. Wrede | |
53 | 31 | S. Wrede | Server-URLs: |
54 | 31 | S. Wrede | ServiceComponent (hal, Base-URL: hal) |
55 | 31 | S. Wrede | ServiceProvider (PUB, GET-ActionBinding, Context-URL: /cam/left/img)) |
56 | 31 | S. Wrede | ServiceProvider (PUB, GET-ActionBinding, Context-URL: /cam/right/img)) |
57 | 31 | S. Wrede | |
58 | 31 | S. Wrede | Modell-Level |
59 | 31 | S. Wrede | Facedetection: Service (cam-interface, gemappt auf base-url, und entsprechenden actions, ports) |
60 | 31 | S. Wrede | HAL: Service (diverse interfaces, eines davon: cam, gemappt auf base |
61 | 31 | S. Wrede | |
62 | 31 | S. Wrede | </pre> |
63 | 31 | S. Wrede | |
64 | 31 | S. Wrede | * Actions sind Event Metadaten auf die man mit Framework-Support filtern kann |
65 | 31 | S. Wrede | * Service erlaubt lokales Anhängen von Action Listenern und Publishern unter einem URL Namensraum |
66 | 32 | S. Wrede | * Beispiel: ISR param (get+set) |
67 | 31 | S. Wrede | * Pfad-Teil der URI ist erstmal völlig frei |
68 | 31 | S. Wrede | * Composites, Services und Element-URIs ergeben sich aus Modellierung, Anordnung von ServiceElementen |
69 | 31 | S. Wrede | * Domain-Teil ist Deployment |
70 | 31 | S. Wrede | * Zugriff über spezifisches Protokoll damit direkt möglich, z.B. Http |
71 | 31 | S. Wrede | * RSB prefix mit Modell erlaubt logischen Zugriff mit location transparency |
72 | 1 | J. Wienke | |
73 | 10 | S. Wrede | h2. Just Brainstorming |
74 | 10 | S. Wrede | |
75 | 17 | S. Wrede | * Ziel: Kein deployment und kein Transport in der URL! |
76 | 1 | J. Wienke | * Ziel: Location-Transparency auf logischer Ebene |
77 | 17 | S. Wrede | * Ziel: Einfachheit |
78 | 1 | J. Wienke | * Modell enthält das Deployment |
79 | 19 | S. Wrede | * Ziel: Redeployment darf keine Code-Änderungen nach sich ziehen |
80 | 19 | S. Wrede | * Ziel: URLs werden über das Modell umkonfiguriert |
81 | 19 | S. Wrede | * Ziel: Subscriptions werden auch über Modell konfiguriert für statischen Deployment-Kontext (Datentypen, Scopes) |
82 | 20 | S. Wrede | * User konfiguriert ID Modell-invariant im Code |
83 | 20 | S. Wrede | * Ports sind atomare Einheiten der Kommunikation (wie in RSB) |
84 | 26 | J. Wienke | * Composite = Scope? Insgesamt aber gewünscht |
85 | 27 | S. Wrede | * -Binding ist Instantiierung eines Patterns, sollte in der URL repräsentiert sein, besserer Name?- |
86 | 27 | S. Wrede | * Binding ist Instantiierung einer REST Aktion (und impliziert die Verwendung bestimmter Port-Kombinationen) |
87 | 1 | J. Wienke | * Interface ist ein logisches Modellelement und nicht Teil der URL (kann für Verifikation von Serviceinterfaces benutzt werden) |
88 | 1 | J. Wienke | * Service ist Abbildung von Bindings / Rest Actions auf eine URL. Beispiel, siehe (1) |
89 | 1 | J. Wienke | |
90 | 1 | J. Wienke | <pre> |
91 | 30 | S. Wrede | rsb://scopeA.scopeB/service/element-path?filter=cond¶m=n |
92 | 30 | S. Wrede | |
93 | 30 | S. Wrede | rsb://hal.cam.left/status/.../.../123?xpath=foo&timing=12 hal.cam.left eq. scopes, status eq. service |
94 | 30 | S. Wrede | |
95 | 22 | S. Wrede | rsb://isr/hyp --> hyp binding type: publish, port types: spread, local |
96 | 22 | S. Wrede | rsb://isr/conf --> conf binding type: rpc server, port types: |
97 | 22 | S. Wrede | |
98 | 22 | S. Wrede | Remote Anfrage: --> rsb://isr/conf/req/out --> Alle Nachrichten, die über verschiedene Transports des gleichen logischen Ports kommuniziert werden |
99 | 29 | S. Wrede | |
100 | 29 | S. Wrede | --> rsb+spread://isr/conf/req/out --> Nachrichten, die über spread Transport des gleichen logischen Ports geschickt werden |
101 | 29 | S. Wrede | </pre> |
102 | 1 | J. Wienke | |
103 | 27 | S. Wrede | REST Style Services |
104 | 27 | S. Wrede | <pre> |
105 | 27 | S. Wrede | Kamera-Server: zwei Kameras |
106 | 27 | S. Wrede | |
107 | 27 | S. Wrede | (1) rsb://hal.cam/left/images --> Kamerabild (GET, SUB) |
108 | 28 | S. Wrede | (1a) Introspection URIs: rsb://hal.cam/left/images/?out |
109 | 27 | S. Wrede | (2) rsb://hal.cam/left/params --> Parameters (PUT, GET, POST, SUB) |
110 | 27 | S. Wrede | (3) rsb://hal.cam/right/images |
111 | 27 | S. Wrede | (4) rsb://hal.cam/right/params |
112 | 27 | S. Wrede | |
113 | 27 | S. Wrede | GET PUT POST DELETE |
114 | 27 | S. Wrede | |
115 | 27 | S. Wrede | Sender | Empfänger |
116 | 27 | S. Wrede | |
117 | 27 | S. Wrede | GET (1) --> gibt mir das Kamerabild zurück: In- / Out-Port | In- / Out-Port |
118 | 27 | S. Wrede | POST (2) --> setzt neue Parameter: Out-Port | In-Port |
119 | 27 | S. Wrede | SUB (3) --> lesen von state changes: In-Port |
120 | 27 | S. Wrede | |
121 | 27 | S. Wrede | |
122 | 27 | S. Wrede | |
123 | 27 | S. Wrede | ServiceProvider vs. ServiceUser? |
124 | 27 | S. Wrede | |
125 | 27 | S. Wrede | Aktualisieren von Information |
126 | 27 | S. Wrede | |
127 | 27 | S. Wrede | |
128 | 27 | S. Wrede | rsb:// |
129 | 27 | S. Wrede | Query |
130 | 27 | S. Wrede | Subscription |
131 | 27 | S. Wrede | Publisher |
132 | 27 | S. Wrede | </pre> |
133 | 22 | S. Wrede | |
134 | 21 | S. Wrede | * Logisch vs. Physisch |
135 | 22 | S. Wrede | |
136 | 22 | S. Wrede | Jens: |
137 | 21 | S. Wrede | ** Component hat abstrakt andere Eigenschaften als eine Composite, z.B. Port Referenzen |
138 | 21 | S. Wrede | ** Gehört nicht zum Deployment |
139 | 22 | S. Wrede | ** Service ist nicht existent |
140 | 22 | S. Wrede | ** Interface: bindings auf Ports oder Port Referenzen |
141 | 21 | S. Wrede | |
142 | 24 | S. Wrede | Was ist mit? |
143 | 26 | J. Wienke | * Service = XSRAD.Component (enthält Port-Refs) |
144 | 26 | J. Wienke | * Component = Deployment-Unit oder Konzept? |
145 | 26 | J. Wienke | * Interface = XSRAD.Interface (In URL enthalten?) |
146 | 16 | S. Wrede | |
147 | 10 | S. Wrede | <pre> |
148 | 10 | S. Wrede | scheme://domain:port/path?query_string#fragment_id |
149 | 10 | S. Wrede | |
150 | 11 | S. Wrede | rsb://composite1.composite2:<PortId>/service/interface/port?param_n=n#filter:cond |
151 | 11 | S. Wrede | |
152 | 16 | S. Wrede | rsb://composite1.composite2.componentA.interface.port/service/interface/port |
153 | 10 | S. Wrede | |
154 | 10 | S. Wrede | More complex example (Q: How to deal with input and output ports?) |
155 | 10 | S. Wrede | |
156 | 12 | S. Wrede | rsb://composite1.composite2:<PortId>/interface/port?param_n=n#filter:cond |
157 | 12 | S. Wrede | |
158 | 10 | S. Wrede | Informer: rsb://biron.hal.camera/image/left/o/left/?param1=12 |
159 | 13 | S. Wrede | |
160 | 13 | S. Wrede | Listener A: rsb+spread://biron.hal.camera/image/left/i |
161 | 13 | S. Wrede | Listener B: rsb+shamem://biron.hal.camera/image/left/i |
162 | 13 | S. Wrede | |
163 | 10 | S. Wrede | Subscription-URI: rsb://biron.hal.vision/grab/out/left/#xpath:/frame |
164 | 10 | S. Wrede | </pre> |
165 | 10 | S. Wrede | |
166 | 10 | S. Wrede | h2. Targets |
167 | 10 | S. Wrede | |
168 | 10 | S. Wrede | * Service vs. Interface |
169 | 10 | S. Wrede | * Composite |
170 | 10 | S. Wrede | * Port |
171 | 10 | S. Wrede | |
172 | 1 | J. Wienke | h2. Use Cases |
173 | 1 | J. Wienke | |
174 | 1 | J. Wienke | * Introspection URIs? HTTP possible? |
175 | 1 | J. Wienke | * Subscription on each node of the tree (aggregation vs. filtering) |
176 | 1 | J. Wienke | * Model vs. System URI? Should not exist? |
177 | 1 | J. Wienke | * Every active object must be identifiable |
178 | 1 | J. Wienke | * Data part of URI? Probably not? |
179 | 2 | J. Wienke | * RESTful API? |
180 | 5 | J. Wienke | |
181 | 5 | J. Wienke | h2. Identified Problems |
182 | 5 | J. Wienke | |
183 | 6 | J. Wienke | * Data space (motion/wheel/left) is orthogonal to current model structure |
184 | 1 | J. Wienke | ** Using this concept could generate unmodelled ports in reverse engineering |
185 | 7 | J. Wienke | ** Is this required if we model our system? |
186 | 7 | J. Wienke | ** Wildcards in URLs? |
187 | 8 | J. Wienke | ** Idea: Second model tree for AggregationInterfaces that combine Ports from different Components / Composites etc. and automatically derive their base data type |
188 | 1 | J. Wienke | *** Different Protocol part in the URI for these interfaces to subscribe on |
189 | 1 | J. Wienke | *** We do not need data hierarchies (only required for function overloading), instead only collections of interfaces are required and an intersection operation to derive the resulting type of an aggregation |
190 | 1 | J. Wienke | |
191 | 1 | J. Wienke | h2. Open Issues |
192 | 1 | J. Wienke | |
193 | 1 | J. Wienke | * Action encoding |
194 | 1 | J. Wienke | |
195 | 1 | J. Wienke | h2. Further Proposals we discussed |
196 | 9 | J. Wienke | |
197 | 30 | S. Wrede | h3. Seb |
198 | 30 | S. Wrede | |
199 | 30 | S. Wrede | <pre> |
200 | 30 | S. Wrede | rsb://composite1.composite2.composite3.componentNameXY/interfaceFooBar/portABC // EXPORT, creation of domain objects |
201 | 30 | S. Wrede | rsb://composite1/highLevelInterface/portABC // subscription URI |
202 | 30 | S. Wrede | </pre> |
203 | 30 | S. Wrede | |
204 | 30 | S. Wrede | h3. Ingo |
205 | 14 | S. Wrede | <pre> |
206 | 14 | S. Wrede | rsb://machine.domain.tld:<PortInstanceId>/composite1/composite2/interface/port?param_n=n#filter:cond |
207 | 14 | S. Wrede | </pre> |
208 | 14 | S. Wrede | _We decided against this as it breaks our aim of location transparency._ |