Mark Baker wrote:

> David,
>
> On Mon, Sep 26, 2005 at 08:22:28AM -0600, David Forslund wrote:
> > > > > A client using that form could construct a URI;
> > > > >
> > > > >   http://example.org/iuuiuiuiuiu?name="forslund";
> > > > >
> > > > > .. and GET on that would give you your answer.
> > > >
> > > > This seem to be great, but where did this come from?  What is the
> > > > standard for doing this that everyone
> > > > would know ahead of time?
> > >
> > > The above was inspired by my work on RDF Forms (linked to by Jan),
> > > but one could use XForms - a W3C Rec - instead, ala;
> > >
> > > <xforms:model>
> > >   <xforms:instance>
> > >     <SoundsLikeNameQuery xmlns="">
> > >       <name/>
> > >     </SoundsLikeNameQuery>
> > >   </xforms:instance>
> > >   <xforms:submission action="http://example.com/iuuiuiuiuiu";
> > > method="get"/>
> > > </xforms:model>
> >
> > Where would one "register" this interface and "discover" it and its
> > "capabilities".
>
> I'm not sure what you mean by "register" and "capabilities", but a
> service provider would publish that form - perhaps embedded within
> some other XML content - at some URI.  Then the client can either be
> handed that URI by the server during a part of the application that
> preceded the query step (if any), or by some third party (e.g. search
> engine).  The client could also be hard-coded with that URI, but that's
> a less interesting case, of course.

I mean for some sort of standard this form or "interface" should be 
published so it can be used again
and so that one can understand what it does and what the terms mean.   
The individual server
could provide this but then every server may be different, so the client 
has to "learn" the capabilities
of each server which may choose to use a different form or terminology.
I really think I'm getting at the issue not of a single user using an 
interface but two computer
systems that want to talk together to create a service which may be an 
aggregate of the two
(true distributed computing).  If the forms and terminology vary from 
server to server, then this
is difficult to accomplish without doing something for each 
server/client relationship. If they use
the same forms and terminology (through some standards effort), then 
they can rely on the "service"
without having learn each one individually. 

>
> >I would think
> > an interface would be independent of the URI to the resource, so
> > shouldn't there be some abstraction
> > for specifying the action location?    This also doesn't address what
> > happens on the server side, particularly
> > if people use some other scheme to access this URI.   Obviously it must
> > have code to reject erroneous requests.
> > It is this code that I don't have to worry about as the middleware
> > normally shields a recipient from requests
> > that don't make sense or are unauthorized.
>
> Sorry, I didn't understand that.

The server has to understand how to deal with the particular request.   
Since it is just a URI, it could
get any old type of message, which may have nothing to do with its 
capabilities.   The server must
do its own "filtering" and rejection.  This is something that 
distributed computing environments normally
take care of transparently.  Perhpas this helps.

>
> > > >The approach we have used has been around for
> > > > 10 years and is quite stable.
> > > > Who would own the term: "SoundsLikeNameQuery" above?  What you 
> have is
> > > > seems to be exactly
> > > > what is required to make a RPC-like call in http/REST.
> > >
> > > It's not RPC, it's a "service type", the difference being that the
> > > former modifies the contract, while the latter does not.  Note 
> that the
> > > semantics of the RESTful HTTP message are always "GET" not
> > > "SoundsLikeNameQuery", as "SoundsLikeNameQuery" isn't even part of the
> > > message.
> >
> > What do you mean by the "contract" in this context.  I'm, of course,
> > dealing with service type systems.
> > If "SoundsLikeNameQuery" isn't part of the message, how is the 
> server to
> > know what methodology
> > to invoke?  "SoundsLikeNameQuery" would be an important part of what 
> the
> > server needs to know
> > in order to process the request.  Suppose it can't do a
> > "SoundsLikeNameQuery" and doesn't know
> > that the client is asking for this?  What if the client is asking for a
> > different type of query and it responds
> > with a "SoundsLike" response.   This seems like semantic ambiguity or
> > confusion to me.
>
> There's no ambiguity, because the service only does this *one thing*.
> If the client didn't want a SoundsLikeName query done, it shouldn't have
> submitted data to that service.

If the client thought that "SoundsLikeName" query mean "BuySomeApples" 
because they didn't understand
English, then you would have a problem.   I think you are assuming that 
a server always gives the client
an "interface" it can understand and that the client understands what 
the server means by that.   This is the
ambiguity that is normally handled in some of the standards.   For 
example, ebXML has mechanisms for
expressing things and people in a domain (such as healthcare) may 
control the terminology so the requests make sense.
This what I refer to as a "contract".

>
> It's just document-in, document-out.  If you need to add new
> functionality, say a different kind of search that also takes a last
> name as input, you need a new service with a new URI.

These really aren't documents except in the most general sense.  A 
response can be thought of as a
message, for example with some context.   How is the end user supposed  
to interpret the response?
What are the semantics and terms being used?   Who defines the semantics 
and terms?  If only
the server, then the user has little chance of understanding them.  For 
example, if I make a request
and expect html in response and you give me something other than 
well-formed html (according
to a standard), then I won't know what to do with the data.  Html is 
just a simple example of the problem
since it doesn't deal with semantic meaning, only presentation, which 
the client may care less about.  If it
is in XML, who controls the semantic meaning of the returned data (in a 
DTD or Schema)?  If you give
me your own person schema, I still may not know what to do with the 
data.   This mixture of
the concepts of human-readable XML that you might know what to do with 
and a computer receiving
some XML and trying to figure out what it means creates semantic 
ambiguity as to what a service is
"supposed" to do.

>
> > > >In addition, in your
> > > > above example there is a specific path (URI) present
> > > > which keeps this from being a nice abstraction of the service 
> that is
> > > > being requested. There must be some other
> > > > way to write what you have above because it would take hand editing
> > > > everytime I deployed the service to a different location.
> > >
> > > Relative URIs should help with that, e.g;
> > >
> > > <xforms:submission action="iuuiuiuiuiu" method="get"/>
> > >
> > > (though the ability to use relative URIs in XForms is governed by
> > > the language which encapsulates the form)
> >
> > This seems like a real limitation and potential lack of 
> interoperability.
>
> It's a scalability problem for XForms, yes.  But it's not an issue with
> the forms approach in general.  RDF Forms doesn't suffer from it, for
> example.

Perhaps.  I can't tell. If there are embedded URI's in the forms, they 
aren't very portable.

>
> > > > I may not be following your point here.   We have deployed non-web
> > > > applications on the internet for almost 10 years
> > > > without any problems.    Interoperability has worked well.  The
> > > > middleware deals with most of the issues you indicate
> > > > without my having to deal with it other than make my application do
> > > what
> > > > it has contracted to do.  If you have some
> > > > people writing client code (in whatever language, Java, XML, 
> HTML, ...)
> > > > it is architecturally very helpful to have an
> > > > interface to code to so that a server and client can work correctly
> > > even
> > > > though they are developed independently by different
> > > > people and organizations.
> > >
> > > I'm not saying that one can't build a solution over the Internet 
> without
> > > interface constraints.  I'm just saying that it won't scale to
> > > Internet-scale as systems like the Web, email, instant messaging, 
> etc..
> > > have.  If you don't need your system to scale like that, great.  But
> > > then I thought the SOA vision was supposed to be about loosely 
> coupled,
> > > ad-hoc, inter-business application integration over the Internet, 
> which
> > > seems very Internet-scale to me.
> >
> > Back to an old point, but DNS and LDAP are certainly internet scale and
> > involve interface constraints.
> > I see nothing to prevent scaling to Internet-scale with interface
> > constraints.
>
> You misunderstand, because I agree with you.  I'm saying interface
> constraints are *required* for Internet scale systems.

I guess I do not understand you.  You seem to want a "single" interface 
when the examples are the exact opposite
of this (DNS, LDAP, Email. IM, Web all have different "interfaces", but 
still support loose coupling).

>
> Implicitly, I'm also saying that SOA rejects interface constraints ...
> although those promoting "document oriented" SOA are unknowingly
> adopting them (for services, not for clients).

Why do you say "SOA rejects interface constraints"?  Says who? I don't 
see how it can and be a service at all.
I view services are things that can be "plugged" together to accomplish 
a larger task.  Without an interface
defining the semantics of the interaction by whatever means, I don't see 
how one can have a SOA.  I may
have a broader view of a SOA than you do, since the concept has been 
around for decades and people
have been building Internet scale apps long before the web became 
popular (again: DNS, LDAP, Email, IM ...)

>
> > > Yes, XForms is such a "RESTful description language".  In fact, I've
> > > made a late-breaking-news submission to XML 2005 on that exact 
> subject.
> > > I haven't heard if it's accepted yet, but I expect it might pique
> > > MikeC's interest. 8-)
> >
> > Great.   Without some kind of "description language" that is
> > discoverable, I believe that Internet
> > scaling would be difficult even with "REST".
>
> REST includes a constraint called "hypermedia as the engine of
> application state" which (assuming its adopted), in practice requires
> that any architecture supporting non-trivial applications include a
> forms language.

This is a help, as this will take the role of "interfaces" in other 
approaches.

>
> FWIW, I personally try and avoid calling forms languages "description
> languages", because it describes different things than, say, WSDL or
> IDL describes.

They may be different, but they must be equivalent, otherwise one can 
have distributed systems working
together.  My view of WSDL is that it is an abomination as it mixes all 
kinds of issues in a single descriptor.
IDL is ok, but also has many well known drawbacks associated mostly with 
its requirement to map to almost any language.
But it does allow one to express the proper constraints between a server 
and its clients and is fully discoverable.  With the standardization
of IDL in certain domains, it becomes possible to build heterogeneous 
services which are far more than the sum of the parts.  For example,
federated systems can be built in this way. 

Thanks for the discussion,

Dave

>
> Cheers,
>
> Mark.
> -- 
> Mark Baker.  Ottawa, Ontario, CANADA.          http://www.markbaker.ca
> Coactus; Web-inspired integration strategies   http://www.coactus.com
>
>






------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get Bzzzy! (real tools to help you find a job). Welcome to the Sweet Life.
http://us.click.yahoo.com/A77XvD/vlQLAA/TtwFAA/NhFolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/service-orientated-architecture/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to