Earlier this year, Index Data started a new blog. I wanted to call out a series of posts (parts one and two) their newly started blog called Z39.50 for Dummies. Wolfram Schneider on the Index Data staff wrote these two posts.
In the introductory posting, Wolfram says:
Z39.50 is a client-server protocol for searching and retrieving information from remote computer databases. It is a mature low level protocol like HTTP and FTP. You don't implement Z39.50 yourself, you use the YAZ utilities and the libraries and frameworks for in other languages (C++, PHP, Perl, etc.).
There are many people who thinks that Z39.50 is a dead standard, and hard to understand. That is not true. Z39.50 is still growing in use, stable and very fast. It is the only widely available protocol for metasearch.
Using Z39.50 is not harder than using FTP. I think that the overhead for learning Z39.50 is less than a half day for an experienced programmer. Every problem which you have later is not related to the Z39.50 protocol itself, it is related to underlying system behind the Z39.50 server. Keep in mind that Z39.50 is an API to access (bibliographic) databases. It does not define how the data is structured and indexed in the database.
I haven't had to create an FTP client from scratch (which, looking at its standard document, I would propose would be a complicated task), but I have done HTTP before. Z39.50 is cumbersome enough to not want to do it from scratch, but the YAZ toolkit is a great abstraction from the underlying protocol complications. I would second Wolfram's observation that difficulties with Z39.50 are most likely problems with the configuration of the server as well as underlying data structures and data encoding.
Thanks for taking on the "for Dummies" task, Wolfram, and I'm hoping to see more in the series -- how to troubleshoot connections, what all of the codes in the standard and the community profiles mean, perhaps some insight into how different flavors of Z39.50 servers operate, etc.