[OPEN-ILS-DEV] Software architecture ?
Mike Rylander
mrylander at gmail.com
Fri Feb 29 20:41:35 EST 2008
On Fri, Feb 29, 2008 at 10:43 AM, Reuben Pasquini <rdp0004 at auburn.edu> wrote:
> Hello!
>
> I'm installing Evergreen-ILS-1.2.1.4/OpenSRF-0.9,
> and in the process trying to get a grip on how the software is put
> together.
> The following is what I came up with so far - can someone verify if
> this
> is right, or straighten me out if it's wrong ?
>
> *. Evergreen-OpenILs consists of several OpenSrf modules
> (separate applications that plug into an OpenSrf setup
> to communicate with each other)
> and a shared postgres database.
RIght on.
>
> *. OpenSRF is a distributed computing framework characterized by:
>
> o. The use of a central jabber server to manage communication
One or more jabber servers, but, yes. You can configure multiple
jabber domains for access separation, and you can load-balance the
jabber servers in one domain. Then, there's an OpenSRF Router per
jabber domain, with which the services (that you mention below)
register -- services can register with multiple Routers on separate
domains.
> o. WSDL/SOAP-like procedure-call mechanisms where a component
> publishes its interface with OpenSRF via an XML-spec,
> and remote-procedure call is implemented via exchange
> of XML messages via jabber.
>
Well, there are several interfaces.
- The native transport is JSON-over-XMPP (jabber) -- all OpenSRF-level
messages are JSON encoded, and wrapped in Jabber XML
- A ReST-ish HTTP gateway which can consume and produce both JSON and
XML -- this is not OpenSRF proper, but rather a Web Service like
translation
- An XML-RPC gateway built on top of the RPC::XML Perl module
- A true port of the OpenSRF message passing syntax from XMPP to HTTP,
based on the spec I put together here(1). Bill Erickson has created
a Python reference implementation.
Then there are the client flavors. There's a new JavaScript package
for interacting with the OpenSRF-over-HTTP translator, as well as the
existing JSON gateway JavaScript package. There are XMPP client
libraries for JavaScript (only supported in Mozilla as an extension),
Perl, Python, C and Java, as well as support for any language with
XML-RPC bindings.
One other interesting feature is the introspection API. Whenever a
method is registered, an entry in an introspection table is created
within the OpenSRF server. Using the XML gateway and some XSLT, we've
built a simple web app for exploring the in-line documentation from a
running instance of the OpenSRF application. You can check that out
here(2).
I hope that helps shed some more light on how these things work
together, and please don't hesitate if you have any more questions.
(1) http://open-ils.org/dokuwiki/doku.php?id=opensrf_over_http
(2) http://dev.gapines.org/opac/extras/docgen.xsl?service=open-ils.actor&all=on&offset=0&limit=25
--
Mike Rylander
| VP, Research and Design
| Equinox Software, Inc. / The Evergreen Experts
| phone: 1-877-OPEN-ILS (673-6457)
| email: miker at esilibrary.com
| web: http://www.esilibrary.com
More information about the Open-ils-dev
mailing list