dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DotGNU]Defining Web Services by example


From: David Nicol
Subject: [DotGNU]Defining Web Services by example
Date: Thu, 08 Nov 2001 17:55:13 -0600

I wrapped several various utilities up in CGI pages and have
quietly been making them availble since 1996.  I list them
at http://www.tipjar.com/nettoys.html.  There are eight listed 
there.

The excel->html converter script and the gnuplot wrapper both
came into existence when I was writing a CGI program for a client
who did not have the ability to install new software on their server:
the form interface is to test the functionality, the purpose of
these components was to outsource xlhtml conversion or data plotting
to a machine where I had installation freedom.

Towards defining "web service" better, I invite all to consider the
eight tipjar nettoys and decide if each is or is not deserving of
the appelation.

1: form tester -- use this as the action to debug your form.

2: form handler -- form submission to e-mail.  Vulnerable.

3: xl to html converter -- a cgi wrapper for Steve Grubb's xlHTML

4: gnuplot interface -- a cgi wrapper for gnuplot

5: redirector -- issues a "Location" header to first URL in form data

6: playing cards -- 52 cards and four jokers in a directory

7: mime decoder -- re-present a raw MIME attachment as a web page

8: authenticated identity service -- general purpose SSO


Which ones are "webservices?"  all of them?

Not #6 because it is static?

Not #1 because there would never be a reason to call
it besides to test if your form works right?

Not #7 because performing the function it performs is
trivially simpler than invoking it?




 
> > > : Third, web services semantically encapsulate discrete
> > > : functionality. A web service is a self-contained "applet" that
> > > : performs a single task.
> > >
> > > What is a "single task"?  I don't think that this can be made
> > > precise.
> >
> > An html component renders html, an ftp component does the ftp protocol,
> > etc. How is this confusing?
> 
> The problem is with the requirement that the webservice performs
> "a single task".  So something which fetches a text file by ftp
> can be a webservice, and something which converts the text file
> from DOS to Unix conventions can be a webservice, but something
> which does both cannot be considered a webservice, because it
> performs two tasks and not one???

 
> > > : The component describes its own inputs
> > > : and outputs in a way that other software can determine what it
> > > : does, how to invoke its functionality, and what result to expect
> > > : in return.
> > >
> > > That expectation is totally ridiculous IMHO.
> >
> > How do you figure? A bonobo component has a specific interface and
> > provides a specific output. You can interrogate it to figure out what it
> > does, etc.
> 
> But it still requires human intelligence to really determine
> what the component does!  Even if the component advertises a
> well-known standard service, you may want to check with someone
> who reads Bugtraq before you believe it.  And it the component
> does something that is at least a little innovative, it is
> ridiculous to expect other software to be able to really
> understand even what the component claims to be doing.

some kind of descriptive schema for cataloguing the available
services is an interesting idea.  Best practice at the moment
is to use the text search feature at Freshmeat.  But freshmeat
does not concern itself with external webservices -- for those
you need to look at, for instance, the CGI Resource Library.

A standard invocation syntax would be neat; if there was
a standard invocation syntax beyond the CGI standard, it would
be possible to rewrite nettoys #3,4,7 to conform to it.  This
standard would be big and stupid, things like

<voice timbre=booming>
when wrapping a well known program into a compliant webservice,
the standard input or main data file for the wrapped program
will be in one or more form elements named "dataN" where "N"
indicates either nothing or a nonnegative integer
</voice>


with standards like that, it would be possible to rig up
a webservice shell that would job out every element in a
command chain, for instance,

        du -ax /usr | sort -nr | head -n 500

to a separate remote webservice.  Although "sort" is the
only one that would make any sense at all.



-- 
                                                  David Nicol 816.235.1187
                       silly ears http://www.bobdylan.com/songs/gates.html


reply via email to

[Prev in Thread] Current Thread [Next in Thread]