1 / 30

Service-driven content delivery:

Learn how Service-Oriented Architecture (SOA) and XML-based Web services can help you provide better content delivery and do more for your library patrons. Discover the benefits, implementation methods, and examples of mashups using Web services.

cintrond
Download Presentation

Service-driven content delivery:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Service Oriented Architecture • Increasingly becoming the preferred architecture and framework for Web programming • 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.

  3. http://www.w3.org/TR/2002/WD-ws-arch-20021114/ SOA Architecture diagram

  4. Web services communication Path

  5. 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

  6. Roles • Service provider • Technically more challenging • Service Requestor • Simple to implement

  7. 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

  8. WDSL: Web Service Description Language • The definition, expressed in XML, of how the Web service operates and the data structures involved

  9. 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)

  10. UDDI: Universal Description, Discovery and Integration • A directory architecture that describes the services available Provides an automated mechanism for an application to know where to go to find a web service. • Web service implementations

  11. 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.

  12. Web Service implementation methods • REST • Representational State Transfer • Easier, more common approach • SOAP • Used in more complex environments • Requires more set-up and infrastructure

  13. Rest-like Example: Google search http://www.google.com/search? q=marshall+breeding& hl=en& safe=off

  14. RSS as an example of REST • http://www.librarytechnology.org/rss

  15. 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

  16. Example: Google API • http://api.google.com/GoogleSearch.wsdl • http://www.google.com/apis/reference.html • Perl example for implementing the Google Web services

  17. 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";}

  18. Mashups • A new resource based on content or services from multiple sources • Usually created through Web services • Many examples

  19. Let’s Build a mashup using Web Services

  20. 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

  21. 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&amp; address=$StreetAddress &library=$Library& libphoto=$libphoto \',\'window2\')\" $buttonstyle />\n"; }

  22. 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;

  23. 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

  24. Call the subroutine &MapScript("$lat","$long","$fields{'libphoto'}");

  25. 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"; }

  26. Step 4. Stir, bake and serve

  27. Comments Questions and Discussion

More Related