[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [no subject]
-----Original Message----- From: Peter Manolescue [mailto:manolescue@pandora.be] Sent: Tuesday, August 24, 2004 10:47 AM To: Brian Frank; obix-xml@lists.oasis-open.org Subject: RE: [obix-xml] obix, discovery, and more... Sounds good. Can we make sure there is no overlap with the WS-Discovery = and WS-MetaDataExchange proposals in the latest version of the proposed = Devices Profile for Web Services? ( = http://msdn.microsoft.com/library/en-us/dnglobspec/html/devprof.asp?frame= =3Dtrue) No point in reinventing the wheel. -----Original Message----- From: Brian Frank [mailto:bfrank@tridium.com]=20 Sent: 20 August 2004 17:08 To: obix-xml@lists.oasis-open.org Subject: [obix-xml] obix, discovery, and more... I'm starting to get back into obix after a summer of distractions. = Lately I've been doing=20 some brainstorming on our current design and how it relates to = discovery. This process=20 has led to the following conclusions: =20 - The main value of the work we did under the guise of the PointService = is really to normalize how primitives are represented and annotated with meta-data (like min, = max, range, etc) =20 - That led me to think that maybe the PointService is really just the = service used to read and write data primitives =20 - That led me to think about the DiscoveryService as a way to read = complex structures down to the primitive level =20 - That led me to think that maybe Discovery and Points is really all = just one thing... =20 What I am thinking is that we collapse Discovery and Points into a = single service which I've been thinking of as the Reflection service. To me it encapsulates two = primary goals: =20 - to learn the structure of any vendor's system without needing to know = a whole bunch of types and data structures ahead of time =20 - to normalize key data primitives so that systems can exchange basic = data =20 I've been thinking about the Reflection service similar to COM's = IDispatch or Java/.Net reflection APIs. It lets me use a small set of wrapper types to generically = describe and interact with the vendor's native data model without needing to know all the gory details = about the vendor's native type system. =20 =20 Plus we would still use the Reflection service as a discovery and jump = point into other more rigidly=20 defined services. Thus reflection can be used to interact with a = vendor's system generically using loose typing, but still let's us jump to strongly typed services for = solving domain specific problems like history, scheduling, or alarming. =20 My thinking is that the reflection service provides two operations Get = and Put. I've haven't given a lot of thought to the exact XML syntax, but just to show an example: =20 <Get> <Locale>en</Locale> <Include> <Facets>true</Facets> </Include> <Depth>1</Depth> <Id>someid</Id> </Get> =20 <GetResp> <!-- root object of the get request --> <Object> <Id>someid</Id> <Facets> <Icon>/icons/happyFace.png</Icon> </Facets> <Children> <!-- child object, string description --> <Object> <Id>description</Id> <Type>string</Type> <Value>someid's description</Value> </Object> <!-- child object, int counter with facets --> <Object> <Id>counter</Id> <Type>int</Type> <Value>73</Value> <Facets> <Min>0</Min> <Max>100</Max> </Facets> </Object> </Children> </Object> </GetResp> =20 Does this seem like a sane way to proceed? Brian =20 =20 =20 ------_=_NextPart_001_01C489EB.BF37532F Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = charset=3Diso-8859-1"> <TITLE>Message</TITLE> <META content=3D"MSHTML 6.00.2800.1458" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>I=20 don't think there is any overlap.</FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>Microsoft's WS-Discovery is really about using multi-casts to = discovery=20 other</FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>nodes=20 on the network. I'm working from the assumption that oBIX comes=20 into</FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>play=20 at a later stage once I know an URI of the server I want to talk=20 to.</FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2></FONT></SPAN> </DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>From=20 what I understand about WS-MetaDataExchange it is primary=20 concerned</FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>with=20 meta-data about the plumbing, not the data model. The primary use = case=20 </FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>seems=20 to be exchanging security policy information. Although it might come = into=20 </FONT></SPAN></DIV> <DIV><SPAN class=3D642470015-24082004><FONT face=3DArial color=3D#0000ff = size=3D2>play=20 as </FONT></SPAN><SPAN class=3D642470015-24082004><FONT face=3DArial = color=3D#0000ff=20 size=3D2>a way to retrieve WSDL docs from a server at = runtime.</FONT></SPAN></DIV> <BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px"> <DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT = face=3DTahoma=20 size=3D2>-----Original Message-----<BR><B>From:</B> Peter Manolescue=20 [mailto:manolescue@pandora.be]<BR><B>Sent:</B> Tuesday, August 24, = 2004 10:47=20 AM<BR><B>To:</B> Brian Frank; = obix-xml@lists.oasis-open.org<BR><B>Subject:</B>=20 RE: [obix-xml] obix, discovery, and more...<BR><BR></FONT></DIV> <DIV><SPAN class=3D957484014-24082004><FONT face=3DArial = color=3D#0000ff=20 size=3D2>Sounds good. Can we make sure there is no overlap with = the=20 WS-Discovery and WS-MetaDataExchange proposals in the latest version = of the=20 proposed Devices Profile for Web Services? (<A=20 = href=3D"http://msdn.microsoft.com/library/en-us/dnglobspec/html/devprof.a= sp?frame=3Dtrue">http://msdn.microsoft.com/library/en-us/dnglobspec/html/= devprof.asp?frame=3Dtrue</A>)=20 No point in reinventing the wheel.</FONT></SPAN></DIV> <BLOCKQUOTE dir=3Dltr style=3D"MARGIN-RIGHT: 0px"> <DIV></DIV> <DIV class=3DOutlookMessageHeader lang=3Den-us dir=3Dltr = align=3Dleft><FONT=20 face=3DTahoma size=3D2>-----Original Message-----<BR><B>From:</B> = Brian Frank=20 [mailto:bfrank@tridium.com] <BR><B>Sent:</B> 20 August 2004=20 17:08<BR><B>To:</B> obix-xml@lists.oasis-open.org<BR><B>Subject:</B> = [obix-xml] obix, discovery, and more...<BR><BR></FONT></DIV> <DIV><FONT face=3DArial size=3D2>I'm starting to get back into obix = after a=20 summer of distractions. Lately I've been doing </FONT></DIV> <DIV><FONT face=3DArial size=3D2>some brainstorming on our current = design and=20 how it relates to discovery. This process </FONT></DIV> <DIV><FONT face=3DArial size=3D2>has led to the following=20 conclusions:</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>- The main value of the work we did = under the=20 guise of the PointService is really to normalize</FONT></DIV> <DIV><FONT face=3DArial size=3D2> how primitives are = represented and=20 annotated with meta-data (like min, max, range, etc)</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>- That led me to think that maybe = the=20 PointService is really just the service used to read = and</FONT></DIV> <DIV><FONT face=3DArial size=3D2> write data = primitives</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>- That led me to think about the=20 DiscoveryService as a way to read complex structures = down</FONT></DIV> <DIV><FONT face=3DArial size=3D2> to the primitive = level</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>- That led me to think that maybe = Discovery and=20 Points is really all just one thing...</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>What I am thinking is that we = collapse=20 Discovery and Points into a single service which I've = been</FONT></DIV> <DIV><FONT face=3DArial size=3D2>thinking of as the Reflection=20 service. To me it encapsulates two primary = goals:</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2> - to learn the structure of = any vendor's=20 system without needing to know a whole bunch</FONT></DIV> <DIV><FONT face=3DArial size=3D2> of types and data = structures ahead=20 of time</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2> - to normalize key data = primitives so=20 that systems can exchange basic data</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>I've been thinking about the = Reflection service=20 similar to COM's IDispatch or Java/.Net reflection</FONT></DIV> <DIV><FONT face=3DArial size=3D2>APIs. It lets me use a small = set of=20 wrapper types to generically describe and interact with = the</FONT></DIV> <DIV><FONT face=3DArial size=3D2>vendor's native data model without = needing to=20 know all the gory details about the vendor's native</FONT></DIV> <DIV><FONT face=3DArial size=3D2>type system. </FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>Plus we would still use the = Reflection service=20 as a discovery and jump point into </FONT><FONT face=3DArial = size=3D2>other=20 more rigidly </FONT></DIV> <DIV><FONT face=3DArial size=3D2>defined </FONT><FONT face=3DArial=20 size=3D2>services. Thus reflection can be used to interact = with a=20 vendor's system generically using</FONT></DIV> <DIV><FONT face=3DArial size=3D2>loose typing, but still let's us = jump to=20 strongly typed services for solving domain specific </FONT><FONT = face=3DArial=20 size=3D2>problems</FONT></DIV> <DIV><FONT face=3DArial size=3D2>like history, scheduling, or=20 alarming.</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial size=3D2>My thinking is that the reflection = service=20 provides two operations Get and Put. I've haven't = given</FONT></DIV> <DIV><FONT face=3DArial size=3D2>a lot of thought to the exact XML = syntax, but=20 just to show an example:</FONT></DIV> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DCourier size=3D2><Get></FONT></DIV> <DIV><FONT face=3DCourier size=3D2> =20 <Locale>en</Locale></FONT></DIV> <DIV><FONT face=3DCourier size=3D2> = <Include></FONT></DIV><FONT=20 size=3D2><FONT size=3D2> <DIV><FONT face=3DCourier size=3D2> =20 <Facets>true</Facets></FONT></DIV> <DIV><FONT face=3DCourier> </Include></FONT></DIV> <DIV> <DIV><FONT face=3DCourier> =20 <Depth>1</Depth></FONT></DIV><FONT face=3DCourier> = <Id>someid</Id></FONT></FONT></DIV> <DIV><FONT face=3DCourier></Get></FONT></DIV> <DIV><FONT face=3DCourier></FONT> </DIV> <DIV><FONT face=3DCourier><GetResp></FONT></DIV> <DIV><FONT face=3DCourier> <FONT color=3D#008000><!-- root = object of=20 the get request --></FONT></FONT></DIV> <DIV><FONT face=3DCourier> <Object></FONT></DIV> <DIV><FONT face=3DCourier> =20 <Id>someid</Id></FONT></DIV> <DIV><FONT = face=3DCourier> <Facets></FONT></DIV> <DIV><FONT face=3DCourier> =20 <Icon>/icons/happyFace.png</Icon></FONT></DIV> <DIV><FONT face=3DCourier> <DIV><FONT=20 = face=3DCourier> </Facets></FONT></DIV> = =20 <Children></FONT></DIV> <DIV> <DIV><FONT face=3DCourier> <FONT=20 color=3D#008000><!-- child object, string description=20 --></FONT></FONT></DIV><FONT=20 face=3DCourier> =20 <Object></FONT></DIV> <DIV> <DIV> <DIV> <DIV><FONT face=3DCourier> = =20 <Id>description</Id></FONT></DIV><FONT=20 face=3DCourier> =20 <Type>string</Type></FONT></DIV> <DIV><FONT = face=3DCourier> =20 <Value>someid's description</Value></FONT></DIV><FONT=20 face=3DCourier> =20 </Object></FONT></DIV> <DIV> <DIV><FONT face=3DCourier> <FONT=20 color=3D#008000><!-- child object, int counter with=20 facets --></FONT></FONT></DIV><FONT=20 face=3DCourier> =20 <Object></FONT></DIV> <DIV> <DIV> <DIV> <DIV><FONT face=3DCourier> = =20 <Id>counter</Id></FONT></DIV><FONT=20 face=3DCourier> =20 <Type>int</Type></FONT></DIV> <DIV><FONT = face=3DCourier> =20 <Value>73</Value></FONT></DIV> <DIV><FONT = face=3DCourier> =20 <Facets></FONT></DIV> <DIV><FONT=20 = face=3DCourier> &nbs= p;=20 <Min>0</Min></FONT></DIV> <DIV> <DIV><FONT=20 = face=3DCourier> &nbs= p;=20 <Max>100</Max></FONT></DIV><FONT=20 face=3DCourier> =20 </Facets></FONT></DIV><FONT=20 face=3DCourier> =20 </Object></FONT></DIV><FONT face=3DCourier> =20 </Children></FONT></DIV></DIV> <DIV><FONT face=3DCourier> </Object></FONT></DIV> <DIV><FONT face=3DCourier></GetResp></FONT></FONT></DIV> <DIV><FONT face=3D"Courier New"></FONT> </DIV><PRE><FONT = face=3DArial size=3D2>Does this seem like a sane way to = proceed?</FONT></PRE><PRE><FONT face=3DArial = size=3D2>Brian</FONT></PRE><PRE> </PRE> <DIV><FONT face=3DArial size=3D2></FONT> </DIV> <DIV><FONT face=3DArial=20 size=3D2></FONT> </DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML> ------_=_NextPart_001_01C489EB.BF37532F--
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]