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