Good Afternoon All,

I am trying to figure out the particulars of how one would create XML
Web services to expose the content within MLS.  I would think that
this is a very common use case, but I can't find enough information to
actually solve it.  If anyone can point me to documentation, URLs,
Webcasts, etc., I would really appreciate it.  Alternatively, can
someone help me fill in the blanks by answering the questions below?

As I see it, there are three types of interfaces that such services
could have, but I'm stumped on various details with all of them.  I've
enumerated these three options below:

1. Expose the content using a RESTful Web service API

To do this, the URLs would have to be unique per resource.  This would
mean, for example, that a fictitious user management system might
expose users with URLs like this one:

http://travisspencer.com/user/tspencer

To do this, the HTTP app server defined in MLS would have to map this
URL to some XQuery script, e.g., /user.xqy, and pass it the user name,
tspencer, from the URL.  I don't see any way to do this in MLS.  Once
this mapping was done, assuming it can be, I'd have to determine the
HTTP verb (GET, PUT, etc.) within the script to know what action to
perform.  Is there a custom XQuery function supported by MLS to allow
me to determine the HTTP verb of a request?

2. Expose the content using a query API

To do this, the action and/or parameters would be passed to my XQuery
scripts on the query string like this, for example:

http://travisspencer.com/user.xqy?action=delete&name=tspencer

I'm sure that MLS provides a way to pluck out the parameters and their
values from the query string, but I'm not sure how.  Any idea?

3. Expose the content using a SOAP-based API

With SOAP, I'm not even sure where to start.  For instance, how would
the WSDL describing the service's interface be created?  Would I have
to do it by hand?  If so, what about the non-abstract portion of the
contract -- the biding, port, and service which are specific to the
host environment?  Would I have to hand role this too?  What if the
port or machine name change?  It seems that even these volatile datum
would have to be modified unless MLS is some how able to automatically
generate the WSDL for me.

If the WSDL is automatically generated, how do I specify which
operations are included, and how do I map those to the proper XQuery
scripts that should be called upon to handle SOAP messages for those
respective operations?  Can I indicate that all the functions in a
module, for example, are to be exposed as one SOAP service and MLS is
able to do the WSDL generation and dispatching of messages?  Or would
I have to role the WSDL myself and interrogate the SOAP messages,
determine the operation, and pass it to the appropriate XQuery
script/function?

What about when a fault occurs?  Do I have to create the entire XML
document that represents the SOAP fault myself or does MLS support
some helper XQuery method that I can use in my catch blocks to create
the fault XML?

Can I only hope for my SOAP Web services to comply with WS-I BP or is
there some way to also support the more advanced protocols like WS-AT,
WS-RM, etc.?  Would I have to build this support myself?

As you can see, I have many questions about how all this is done.  If
I can figure this out though, I'll be ready to do some really cool
stuff w/ MLS.  Any help getting to that point would be much
appreciated.

-- 

Regards,

Travis Spencer
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to