390 likes | 500 Views
Service-driven content delivery:. Do more for your patrons through Web services. Marshall Breeding Director for Innovative Technology and Research Vanderbilt University http://staffweb.library.vanderbilt.edu/breeding. Service Oriented Architecture.
E N D
Service-driven content delivery: Do more for your patrons through Web services Marshall Breeding Director for Innovative Technology and Research Vanderbilt University http://staffweb.library.vanderbilt.edu/breeding
Service Oriented Architecture • Increasingly becoming the preferred architecture and framework for Web programming and enterprise systems • A key supporting technology for Web 2.0 • Infrastructure for behind-the-scenes communication among applications. • Data exchange, conversions, lookups, etc. • Appropriate for portal integration, e-commerce, distributed applications.
http://www.w3.org/TR/2002/WD-ws-arch-20021114/ SOA Architecture diagram
An XML oriented Architecture • All the components of SOA are expressed in XML • Definition of a service • Directories of services • Messages involved in the operation of the service
Roles • Service provider • Technically more challenging • Service Requestor • Simple to implement
Adoption of Web services • Widespread use in many industries • Mainstream programming approach • Basis for Microsoft .NET technologies • SOAP support available for all common Web programming environments • Perl: SOAP::Lite • SOA Architecture Components
WDSL: Web Service Description Language • The definition, expressed in XML, of how the Web service operates and the data structures involved
SOAP: Simple Object Access Protocol • A transport and encapsulation protocol • The “envelope” that carries the messages involved in an XML Web service • Similar to RPC (Remote procedure calls)
Benefits of Web services • Easy way to add e-commerce capabilities to Web site • Leverage services offered by other providers for the benefit of your users.
Web Service implementation methods • REST • Representational State Transfer • Easier, more common approach • SOAP • Used in more complex environments • Requires more set-up and infrastructure
Relevant APIs / Web Services • Amazon Web Service • Google Search • Google Book Search Viewability API • OCLC APIs • Local ILS APIs • Facebook
Rest-like Example: Google search http://www.google.com/search? q=marshall+breeding& hl=en& safe=off
RSS as an example of REST • http://www.librarytechnology.org/rss
REST Example: SRU http://law-library2.rutgers.edu/SRU/srucql.pl? query="New+Jersey"& startRecord=1& maximumRecords=10& collection=lawlib& version=1.1& operation=searchRetrieve& recordSchema=dc
Example: Google API • http://api.google.com/GoogleSearch.wsdl • http://www.google.com/apis/reference.html • Perl example for implementing the Google Web services
Example print"Top library automation sites according to Google";# if key is not provided, GoogleSearchService looks in $ENV{HOME},# or in the location of GoogleSearchService.pm for googlekey.txtmy $key = ‘your google API goes here';my $google = new GoogleSearch();my $return;use GoogleSearch;my $search = 'Library Technology';$return = $google-> doGoogleSearch(query => $search,start => 0,maxResults => 10,restrict => 'xml',)->result();foreachmy $entry (@{$return->{'resultElements'}}) {print "";print "<a href=\" $entry->{URL}\">$entry->{title}\n";print "$entry->{snippet}\n";print "\n";}
Mashups • A new resource based on content or services from multiple sources • Usually created through Web services • Many examples
Recipe • Ingredients • Information about the library from the local database • Name, photo, street address • Latitude and Longitude from an external Web service • USGS Web service • Map, positioning and display services from Google
Step 1. Launch map • Create button to launch a new window for the map • Pass Library name, address and photo location: sub ViewMap { local ($Library,$StreetAddress,$libphoto) = @_; print "<input type=\"button\" value=\"view street map\" onclick=\"newWindow( \'lwc-viewmap.pl $sessionstring& address=$StreetAddress &library=$Library& libphoto=$libphoto \',\'window2\')\" $buttonstyle />\n"; }
Step 2. Turn address into Geocode data my $d = get( http://rpc.geocoder.us/service/rest?address=$fields{'address'} ); $d =~ /geo:long>([^< ]*).*?geo:lat>([^< ]*)/is; $lat = $2;
Step 3. Invoke Google MAP API Use pre-established API key Fetch the correct map specifying size and location Place the marker on the map Label the marker Create and populate info window
Call the subroutine &MapScript("$lat","$long","$fields{'libphoto'}");
Invoke the subroutine sub MapScript { local($lat,$long,$photo) = @_; local $libphototext = ""; $libphototext = "+ \"<br /><img src=\\\"$imageserver//\" + libphoto + \".jpg\\\" height = \\\"100\\\">\"" if (length($photo) > 0); print "<script type=\"text/javascript\">\n"; print " //<![CDATA[\n"; print "\n"; print " function createMarker(point, name, address, libphoto) {\n"; print " var marker = new GMarker(point);\n"; print " GEvent.addListener(marker, \"click\", function() {\n"; print " marker.openInfoWindowHtml(\"<strong>\" + name + \"</strong><br />\" + address $libphototext);\n"; print " });\n"; print " return marker;\n"; print " }\n"; print " function load() {\n"; print " if (GBrowserIsCompatible()) {\n"; print " var map = new GMap2(document.getElementById(\"map\"));\n"; print " map.setCenter(new GLatLng($lat, $long), 15);\n"; print " var point = new GLatLng($lat,$long);\n"; print " map.addOverlay(createMarker(point,\"$fields{'library'}\",\"$fields{'address'}\",\"$fields{'libphoto'}\"));\n"; print " }\n"; print " }\n"; print "\n"; print " //]]>\n"; print " </script>\n"; }
From Web Services to SOA Building a new library technology infrastructure through a service-oriented architecture
Breaking down the modules • Traditional ILS • Cataloging • Circulation • Online Catalog • Acquisitions • Serials control • Reporting • Modern approach: SOA
Service Oriented Architecture http://www.sun.com/products/soa/benefits.jsp
Legacy ILS + e-content modules End User Interfaces: Federated Search OpenURL Linking Electronic Resource Mgmt System Circulation Acquisitions Functional modules: Cataloging Serials Data Stores: Staff Interfaces:
SOA model for business automation • Underlying data repositories • Local or Global • Reusable business services • Composite business applications
SOA for library workflow processes Composite Applications Reusable Business Services Granular tasks: Data Stores:
Comprehensive Resource Management • Broad conceptual approach that proposes a library automation environment that spans all types of content that comprise library collections. • Traditional ILS vendors: Under development but no public announcements • Open Source projects in early phases • Projection: 2-3 years until we begin see library automation systems that follow this approach. 3-5 years for wider adoption.
Open Library Environment (OLE) project • Andrew W. Mellon Foundation • Research in Information Technology program • Duke University selected to lead project • Core Participants: Kansas University, Lehigh University, National Library of Australia, Library and Archives Canada, University of Pennsylvania, Marshall Breeding • Advisory Participants: University of Chicago, Wittier College, University of Maryland, ORBIS Cascade Alliance, Rutgers University • Status: Project underway. Initial meeting, scope document, public webcast, working toward completion of system blueprint by July 2009. http://oleproject.org
A more in-depth version: • Library Technology Reports May / June 2006ALA TechSource • “Web Services and the Service Oriented Architecture” • By Marshall Breeding • http://www.librarytechnology.org/ltg-displaytext.pl?RC=12055