OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

obix-xml message

[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>&nbsp;</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.&nbsp; 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>&nbsp;</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.&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp; 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>&nbsp;</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>&nbsp;&nbsp;how primitives are =
represented and=20
    annotated with meta-data (like min, max, range, etc)</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</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>&nbsp; write data =
primitives</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</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>&nbsp;&nbsp;to the primitive =
level</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</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>&nbsp;</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.&nbsp;&nbsp; To me it encapsulates two primary =
goals:</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>&nbsp;- 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>&nbsp;&nbsp; of types and data =
structures ahead=20
    of time</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>&nbsp;- to normalize key data =
primitives so=20
    that systems can exchange basic data</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</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.&nbsp; 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.&nbsp; </FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>Plus we would still use the =
Reflection service=20
    as a discovery and jump point into&nbsp;</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.&nbsp; 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,&nbsp;or=20
    alarming.</FONT></DIV>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial size=3D2>My thinking is that the reflection =
service=20
    provides two operations Get and Put.&nbsp; 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>&nbsp;</DIV>
    <DIV><FONT face=3DCourier size=3D2>&lt;Get&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier size=3D2>&nbsp;=20
    &lt;Locale&gt;en&lt;/Locale&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier size=3D2>&nbsp; =
&lt;Include&gt;</FONT></DIV><FONT=20
    size=3D2><FONT size=3D2>
    <DIV><FONT face=3DCourier size=3D2>&nbsp; &nbsp;=20
    &lt;Facets&gt;true&lt;/Facets&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>&nbsp; &lt;/Include&gt;</FONT></DIV>
    <DIV>
    <DIV><FONT face=3DCourier>&nbsp;=20
    &lt;Depth&gt;1&lt;/Depth&gt;</FONT></DIV><FONT face=3DCourier>&nbsp; =

    &lt;Id&gt;someid&lt;/Id&gt;</FONT></FONT></DIV>
    <DIV><FONT face=3DCourier>&lt;/Get&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DCourier>&lt;GetResp&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>&nbsp; <FONT color=3D#008000>&lt;!-- root =
object of=20
    the get request --&gt;</FONT></FONT></DIV>
    <DIV><FONT face=3DCourier>&nbsp; &lt;Object&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>&nbsp;&nbsp;&nbsp;=20
    &lt;Id&gt;someid&lt;/Id&gt;</FONT></DIV>
    <DIV><FONT =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&lt;Facets&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>&nbsp; &nbsp;&nbsp;&nbsp;=20
    &lt;Icon&gt;/icons/happyFace.png&lt;/Icon&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>
    <DIV><FONT=20
    =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Facets&gt;</FONT></DIV>&nbsp;=
&nbsp;&nbsp;=20
    &lt;Children&gt;</FONT></DIV>
    <DIV>
    <DIV><FONT face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <FONT=20
    color=3D#008000>&lt;!-- child object, string description=20
    --&gt;</FONT></FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;Object&gt;</FONT></DIV>
    <DIV>
    <DIV>
    <DIV>
    <DIV><FONT face=3DCourier>&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Id&gt;description&lt;/Id&gt;</FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Type&gt;string&lt;/Type&gt;</FONT></DIV>
    <DIV><FONT =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Value&gt;someid's description&lt;/Value&gt;</FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;/Object&gt;</FONT></DIV>
    <DIV>
    <DIV><FONT face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <FONT=20
    color=3D#008000>&lt;!-- child object, int counter with=20
    facets&nbsp;--&gt;</FONT></FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;Object&gt;</FONT></DIV>
    <DIV>
    <DIV>
    <DIV>
    <DIV><FONT face=3DCourier>&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Id&gt;counter&lt;/Id&gt;</FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Type&gt;int&lt;/Type&gt;</FONT></DIV>
    <DIV><FONT =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Value&gt;73&lt;/Value&gt;</FONT></DIV>
    <DIV><FONT =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;Facets&gt;</FONT></DIV>
    <DIV><FONT=20
    =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
    &lt;Min&gt;0&lt;/Min&gt;</FONT></DIV>
    <DIV>
    <DIV><FONT=20
    =
face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
    &lt;Max&gt;100&lt;/Max&gt;</FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;/Facets&gt;</FONT></DIV><FONT=20
    face=3DCourier>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
    &lt;/Object&gt;</FONT></DIV><FONT face=3DCourier>&nbsp;&nbsp;&nbsp;=20
    &lt;/Children&gt;</FONT></DIV></DIV>
    <DIV><FONT face=3DCourier>&nbsp; &lt;/Object&gt;</FONT></DIV>
    <DIV><FONT face=3DCourier>&lt;/GetResp&gt;</FONT></FONT></DIV>
    <DIV><FONT face=3D"Courier New"></FONT>&nbsp;</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>&nbsp;</PRE>
    <DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
    <DIV><FONT face=3DArial=20
size=3D2></FONT>&nbsp;</DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------_=_NextPart_001_01C489EB.BF37532F--


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]