![]() |
Table of Contents
Introduction to Web ServicesWhat is a Web Service?The term web service can mean a number of different things:
Throughout this guide the term Web Service will be used to refer to services intended for use by programs. While many bioinformatics resources are available on the web, they are usually only available via web interfaces which are targeted directly at users. This limits their utility in applications which require systematic access to a resource, where the local resources are not available to install and maintain the data and software required. Or in cases where a data resource or analytical tool needs to be integrated into a web portal or workbench application. In these cases Web Services offer a method for accessing the resource remotely. This has the advantage of delegating the maintenance costs for the resource to the service provider, rather then having to absorb these costs locally, and significantly reduces the development and deployment costs for applications which need to consume data or results from the resource. Client/Server ModelWeb Services use the traditional client server model: a, possibly remote, server provides resources which are requested and consumed by a client which the user interacts with. A simple example of this is browsing the web where the web browser is a client which displays pages and allows the user to intact with the pages, and the web server(s) provide the data for the pages (HTML, images, etc.) when it is requested by the client. Synchronous and Asynchronous AccessWhile many resources will return a result almost immediately and thus are suitable for synchronous requests, where the client makes the request and waits for the server to send the response containing the result, some types of analysis take longer. In these cases a synchronous request will have issues with timeouts and may make the client unresponsive. To address these issues services which provide access to such resources provide a mechanism for making asynchronous requests. This usually takes the form of a collection of methods which allow the client to:
The nomenclature for these methods and the job status codes depends on the service and additional methods may also be provided giving more control over the life cycle of the job. DispatcherThe old Dispatcher based services at EMBL-EBI (e.g. WSFasta, WSInterProScan, WSNCBIBlast and WSWUBlast) provided four methods for interacting with a job:
The general workflow is shown below. JDispatcherThe JDispatcher 1) based services at EMBL-EBI (e.g. FASTA (REST), FASTA (SOAP), NCBI BLAST (REST) and NCBI BLAST (SOAP)) provide four methods for interacting with a job:
SoaplabSoaplab 2) based services (for example see http://wsembnet.vital-it.ch/) provide many methods for interacting with a job, to run a job asynchronously there are three relevant methods:
Web Service TechnologiesMany technologies exist for accessing remote services over a computer network, for example:
Some of these are programming language specific (e.g. DRb and Java RMI), have operating system dependencies (e.g. DCE/RPC and ONC RPC) or use special network protocols (e.g. CORBA and ILU), which have issues with network proxies and firewalls. Today the most commonly used technologies for Web Services are Representational State Transfer (REST) and the Simple Object Access Protocol (SOAP), these are both programming language and operating system neutral and use common network protocols which are well supported by proxies and firewalls.
1)
Goujon, M., McWilliam, H., Li, W., Valentin, F., Squizzato, S., Paern, J. and Lopez, R. (2010)
A new bioinformatics analysis tools framework at EMBL-EBI Nucleic Acids Research; DOI: 10.1093/nar/gkq313; PubMed: 20439314 2)
Senger M., Rice P., Bleasby A. and Uludag M. (2009)
Soaplab: Open Source Web Services Framework for Bioinformatics Programs The 10th Annual Bioinformatics Open Source Conference; PDF 3)
Common Object Request Broker Architecture (CORBA) - http://www.corba.org/
4)
Distributed Ruby (DRb) - http://segment7.net/projects/ruby/drb/
5)
Extensible Messaging and Presence Protocol (XMPP) - http://xmpp.org/
6)
Inter-Language Unification (ILU) - ftp://ftp.parc.xerox.com/pub/ilu/ilu.html
7)
Internet Communications Engine (ICE) - http://zeroc.com/ice.html
8)
Jini - http://www.jini.org/
9)
JSON-RPC - http://json-rpc.org/
10)
SOAPjr - http://soapjr.org/
11)
SPARQL Protocol for RDF - http://www.w3.org/TR/rdf-sparql-protocol/
12)
WebSocket - http://www.websocket.org/
13)
XML-RPC - http://www.xmlrpc.com/
![]() |