On Mon, 20 Dec 2004, Matthew J. Dovey wrote:
>> What you're describing is commonly called a Registry ;) and is both
I'll come back and underline this. The explain operation is not a
registry, it explains how to use this one single service.
>> unnecessary and unhelpful in this case. If you have 3 end points for
>> version 1.0 and 3 end points for version 1.1 and 3 end points
>> for version 1.2, then you have to return 9 different
> From a client's perspective that sounds ideal - there is a single
> published end point which gives you all the information you need to
> decide which protocol/version you should use.
Then build a registry service.
There's already everything you need to do this right now.
>> but practically identical explain records?
> Which is why one of the proposals was to repeat serverInfo within a
> single Explain rather than multiple Explain records.
Which, as previously discussed, is not going to happen, for very good
> Even so, I suspect most servers will generate the Explain information
> automatically so there is no real duplication of configuration
> information needed at the server end
Really? I very much doubt it. Especially as the information changes very
very infrequently once the server is set up. Automatically generating it
for Z39.50 was a significant pain, and I don't see why it would be very
much easier for SRW.
The code for my explain service:
if (not req.version):
diag = Diagnostic7()
diag.message = "Mandatory 'version' parameter not supplied"
diag.details = 'version'
config = req.config
self.echoedExplainRequest = req
path = config.get_path(None, 'zeerexPath')
fh = open(path, "r")
filestr = fh.read()
rec = SRW.types.Record('record')
rec.recordPacking = req.recordPacking
if (req.recordPacking == 'string'):
filestr = escape(filestr)
rec.recordSchema = config.recordNamespaces['zeerex']
rec.recordData = filestr
self.record = rec
That's all of it.
>> Uhhh... No thanks. If you have different end points, each end point has
>> its own explain operation which does exactly what it says on the tin.
>> It explains how to use this particular service.
> But now I still have nine different but practically identical explain
> records (albeit at different endpoints) but in addition have to
> configure my client with nine different endpoints so that it can inspect
> them all to determine which protocol/version to use! That sounds even
> more unhelpful to me!
Why would you want to do that? Just pick one and use it. To find the
endpoint you want, you need a registry that supports such things as
searching by protocol, version, transport and host name.
But besides that, configuring a client to use a specific end point over
any other end point is absolutely nothing to do with the protocol.
If the services are at different end points, then they're different
And I'll repeat my other point:
If you want to link to other endpoints, use <links>. This is exactly the
scenario for which we put it in the schema.
,'/:. Dr Robert Sanderson ([log in to unmask])
,'--/::(@)::. Dept. of Computer Science, Room 805
,'---/::::::::::. University of Liverpool
____/:::::::::::::. L5R Shop: http://www.cardsnotwords.com/
I L L U M I N A T I