390 likes | 403 Views
Learn about Service-Oriented Architecture, XML components, SOAP protocol, and benefits of Web services for superior content delivery to patrons. Explore REST and SOAP methods, APIs like Amazon and Google, with examples for incorporating Google services. Discover mashups for innovative service offerings.
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